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/games.rb,
lib/carddb/resources/rules.rb,
lib/carddb/resources/records.rb,
lib/carddb/resources/datasets.rb,
lib/carddb/resources/publishers.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, Client, Collection, Configuration, Connection, ConnectionError, Dataset, DatasetSchema, Deck, DeckEntry, Error, FieldInfo, FilterBuilder, Game, GraphQLError, LinkFieldInfo, MemoryCache, NotFoundError, PageInfo, Publisher, RateLimitError, Record, ResolvedLink, Resource, RestrictedError, ServerError, TimeoutError, ValidationError

Constant Summary collapse

VERSION =
'0.2.0'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationConfiguration

Get the global configuration.

Returns:



48
49
50
# File 'lib/carddb.rb', line 48

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



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

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:



62
63
64
65
66
67
# File 'lib/carddb.rb', line 62

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:



102
103
104
# File 'lib/carddb.rb', line 102

def datasets
  default_client.datasets
end

.decksResources::Decks

Access the Decks resource via the default client.

Returns:



116
117
118
# File 'lib/carddb.rb', line 116

def decks
  default_client.decks
end

.default_clientClient

Get the default client instance (uses global configuration).

Returns:



81
82
83
# File 'lib/carddb.rb', line 81

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

.gamesResources::Games

Access the Games resource via the default client.

Returns:



95
96
97
# File 'lib/carddb.rb', line 95

def games
  default_client.games
end

.meHash?

Get information about the current API key.

Returns:

  • (Hash, nil)


130
131
132
# File 'lib/carddb.rb', line 130

def me
  default_client.me
end

.publishersResources::Publishers

Access the Publishers resource via the default client.



88
89
90
# File 'lib/carddb.rb', line 88

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



137
138
139
# File 'lib/carddb.rb', line 137

def rate_limit_info
  Thread.current[:carddb_rate_limit]
end

.recordsResources::Records

Access the Records resource via the default client.

Returns:



109
110
111
# File 'lib/carddb.rb', line 109

def records
  default_client.records
end

.reset_configuration!Configuration

Reset the global configuration to defaults.

Returns:



72
73
74
75
76
# File 'lib/carddb.rb', line 72

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

.rulesResources::Rules

Access the Rules resource via the default client.

Returns:



123
124
125
# File 'lib/carddb.rb', line 123

def rules
  default_client.rules
end