Module: CardDB

Defined in:
lib/carddb.rb,
lib/carddb/batch.rb,
lib/carddb/cache.rb,
lib/carddb/client.rb,
lib/carddb/errors.rb,
lib/carddb/version.rb,
lib/carddb/collection.rb,
lib/carddb/connection.rb,
lib/carddb/configuration.rb,
lib/carddb/query_builder.rb,
lib/carddb/filter_builder.rb,
lib/carddb/resources/base.rb,
lib/carddb/resources/decks.rb,
lib/carddb/resources/files.rb,
lib/carddb/resources/games.rb,
lib/carddb/resources/rules.rb,
lib/carddb/resources/exports.rb,
lib/carddb/resources/imports.rb,
lib/carddb/resources/records.rb,
lib/carddb/resources/datasets.rb,
lib/carddb/resources/publishers.rb,
lib/carddb/resources/import_formats.rb

Overview

CardDB Ruby client library.

A Ruby client for the CardDB GraphQL API, providing search and fetch operations for card game data.

Examples:

Configure globally

CardDB.configure do |config|
  config.api_key = "carddb_xxx"
  config.default_publisher = "pokemon-company"
  config.default_game = "pokemon-tcg"
end

Use module-level convenience methods

games = CardDB.games.search
records = CardDB.records.search(dataset_key: "cards")

Use a dedicated client instance

client = CardDB::Client.new(api_key: "carddb_xxx")
games = client.games.search

Defined Under Namespace

Modules: CacheSupport, FilterOperators, QueryBuilder, Resources Classes: AuthenticationError, Batch, BatchProxy, BulkImportResult, BulkRecordError, Client, Collection, Configuration, Connection, ConnectionError, Dataset, DatasetImportPreview, DatasetImportPreviewResult, DatasetRecordDeleteJob, DatasetRecordDeleteJobResult, DatasetRecordsUpsertPayload, DatasetSchema, Deck, DeckAPIApplicationAccess, DeckAccessApplication, DeckAccessToken, DeckAccessTokenExchangePayload, DeckAccessTokenIssuer, DeckCollaborator, DeckCopyPayload, DeckDiff, DeckEmbedToken, DeckEmbedTokenCreatePayload, DeckEntriesReplacePayload, DeckEntry, DeckEntryMutationPayload, DeckEntryReorderPayload, DeckExportPayload, DeckHydrateEntriesPayload, DeckImportAmbiguousEntry, DeckImportCandidate, DeckImportEntry, DeckImportFormatDefinition, DeckImportFormatDetection, DeckImportFormatTestPayload, DeckImportIssue, DeckImportPayload, DeckImportUnmatchedEntry, DeckOwnershipTransferPayload, DeckPreviewToken, DeckPreviewTokenCreatePayload, DeckPublishPayload, DeckSectionDefinition, DeckUpsertByExternalRefPayload, DeckValidatedAgainst, DeckValidation, DeckValidationAffectedEntry, DeckValidationIssue, DeckVersion, Error, ExportJob, FieldInfo, FieldMapping, File, FilterBuilder, Game, GameImportDatasetStatus, GameImportJob, GameImportPreview, GraphQLError, ImportJob, ImportJobAsset, ImportJobLog, ImportStats, ImportWarning, LinkFieldInfo, MemoryCache, NotFoundError, ObjectField, PageInfo, PresignedUpload, Publisher, RateLimitError, Record, RecordValidationError, ResolvedLink, Resource, RestrictedError, ServerError, TimeoutError, ValidationError

Constant Summary collapse

VERSION =
'0.3.5'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationConfiguration

Get the global configuration.

Returns:



52
53
54
# File 'lib/carddb.rb', line 52

def configuration
  @configuration ||= Configuration.new
end

Class Method Details

.batch {|Batch| ... } ⇒ Array

Execute multiple queries in a single batch request.

Examples:

results = CardDB.batch do |b|
  b.games.fetch("uuid-1")
  b.games.fetch("uuid-2")
  b.publishers.fetch(slug: "pokemon-company")
end

results[0]  # => Game
results[1]  # => Game
results[2]  # => Publisher

Yields:

  • (Batch)

    The batch builder

Returns:

  • (Array)

    Results in the same order as operations were added



188
189
190
# File 'lib/carddb.rb', line 188

def batch(&block)
  default_client.batch(&block)
end

.configure {|Configuration| ... } ⇒ Configuration

Configure the CardDB client globally.

Examples:

CardDB.configure do |config|
  config.api_key = "carddb_xxx"
  config.default_publisher = "pokemon-company"
end

Yields:

Returns:



66
67
68
69
70
71
# File 'lib/carddb.rb', line 66

def configure
  # Reset the cached client so it picks up new configuration
  @default_client = nil
  yield(configuration)
  configuration
end

.datasetsResources::Datasets

Access the Datasets resource via the default client.

Returns:



106
107
108
# File 'lib/carddb.rb', line 106

def datasets
  default_client.datasets
end

.decksResources::Decks

Access the Decks resource via the default client.

Returns:



148
149
150
# File 'lib/carddb.rb', line 148

def decks
  default_client.decks
end

.default_clientClient

Get the default client instance (uses global configuration).

Returns:



85
86
87
# File 'lib/carddb.rb', line 85

def default_client
  @default_client ||= Client.new(config: configuration)
end

.exportsResources::Exports

Access the Exports resource via the default client.

Returns:



134
135
136
# File 'lib/carddb.rb', line 134

def exports
  default_client.exports
end

.filesResources::Files

Access the Files resource via the default client.

Returns:



141
142
143
# File 'lib/carddb.rb', line 141

def files
  default_client.files
end

.gamesResources::Games

Access the Games resource via the default client.

Returns:



99
100
101
# File 'lib/carddb.rb', line 99

def games
  default_client.games
end

.import_formatsResources::ImportFormats

Access the Import Formats resource via the default client.



120
121
122
# File 'lib/carddb.rb', line 120

def import_formats
  default_client.import_formats
end

.importsResources::Imports

Access the Imports resource via the default client.

Returns:



127
128
129
# File 'lib/carddb.rb', line 127

def imports
  default_client.imports
end

.meHash?

Get information about the current API key.

Returns:

  • (Hash, nil)


162
163
164
# File 'lib/carddb.rb', line 162

def me
  default_client.me
end

.publishersResources::Publishers

Access the Publishers resource via the default client.



92
93
94
# File 'lib/carddb.rb', line 92

def publishers
  default_client.publishers
end

.rate_limit_infoHash?

Get the last rate limit info from the most recent request.

Returns:

  • (Hash, nil)

    Rate limit info with :limit, :remaining, :reset keys



169
170
171
# File 'lib/carddb.rb', line 169

def rate_limit_info
  Thread.current[:carddb_rate_limit]
end

.recordsResources::Records

Access the Records resource via the default client.

Returns:



113
114
115
# File 'lib/carddb.rb', line 113

def records
  default_client.records
end

.reset_configuration!Configuration

Reset the global configuration to defaults.

Returns:



76
77
78
79
80
# File 'lib/carddb.rb', line 76

def reset_configuration!
  @configuration = Configuration.new
  @default_client = nil
  configuration
end

.rulesResources::Rules

Access the Rules resource via the default client.

Returns:



155
156
157
# File 'lib/carddb.rb', line 155

def rules
  default_client.rules
end