pokemon_tcg_sdk 2.2.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. checksums.yaml +5 -5
  2. data/.editorconfig +3 -0
  3. data/.gitignore +0 -1
  4. data/.travis.yml +13 -2
  5. data/README.md +60 -25
  6. data/Rakefile +10 -0
  7. data/lib/pokemon_tcg_sdk.rb +9 -2
  8. data/lib/pokemon_tcg_sdk/ability.rb +9 -5
  9. data/lib/pokemon_tcg_sdk/ancient_trait.rb +8 -5
  10. data/lib/pokemon_tcg_sdk/attack.rb +11 -5
  11. data/lib/pokemon_tcg_sdk/card.rb +35 -11
  12. data/lib/pokemon_tcg_sdk/card_images.rb +13 -0
  13. data/lib/pokemon_tcg_sdk/configuration.rb +2 -2
  14. data/lib/pokemon_tcg_sdk/legalities.rb +14 -0
  15. data/lib/pokemon_tcg_sdk/query_builder.rb +6 -10
  16. data/lib/pokemon_tcg_sdk/rarity.rb +12 -0
  17. data/lib/pokemon_tcg_sdk/resistance.rb +14 -0
  18. data/lib/pokemon_tcg_sdk/rest_client.rb +19 -7
  19. data/lib/pokemon_tcg_sdk/set.rb +18 -7
  20. data/lib/pokemon_tcg_sdk/set_images.rb +13 -0
  21. data/lib/pokemon_tcg_sdk/subtype.rb +1 -1
  22. data/lib/pokemon_tcg_sdk/supertype.rb +1 -1
  23. data/lib/pokemon_tcg_sdk/tcgplayer.rb +44 -0
  24. data/lib/pokemon_tcg_sdk/type.rb +1 -1
  25. data/lib/pokemon_tcg_sdk/version.rb +1 -1
  26. data/lib/pokemon_tcg_sdk/weakness.rb +13 -0
  27. data/pokemon_tcg_sdk.gemspec +11 -13
  28. metadata +33 -61
  29. data/lib/pokemon_tcg_sdk/representers/ability_representer.rb +0 -11
  30. data/lib/pokemon_tcg_sdk/representers/ancient_trait_representer.rb +0 -10
  31. data/lib/pokemon_tcg_sdk/representers/attack_representer.rb +0 -13
  32. data/lib/pokemon_tcg_sdk/representers/card_representer.rb +0 -38
  33. data/lib/pokemon_tcg_sdk/representers/set_representer.rb +0 -14
  34. data/lib/pokemon_tcg_sdk/representers/type_value_representer.rb +0 -10
  35. data/lib/pokemon_tcg_sdk/type_value.rb +0 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5824c0fd76b22e6ed5e3a18e7285a48479737cf1
4
- data.tar.gz: 803edc3606c825b9b6633c8cf38f7a940ff482db
2
+ SHA256:
3
+ metadata.gz: b9a3a1b3fc604371b4975e4dbda528bf2b6366a44e1a9930fb5e11f1712ced60
4
+ data.tar.gz: 986fc54f2c071fe2baebafb6406a239373cc43f270477550d93a0cc7c68a3412
5
5
  SHA512:
6
- metadata.gz: 3efc031d942ed4d33745d83894c211f0866e03a9768839160344e434a39e83c94849fc0de102ad4451cca1e84848e90c44bcc96f29331e7a2e4ed17b8d447731
7
- data.tar.gz: 2913e8bf56cc332ee45a1049f9d798bc83799ce87db11a5dd22642a8f24d554b3fc5e44820eaa05b6488d71e7b5ebbbda37803e5b448374e40fec7e642ad5f8a
6
+ metadata.gz: 28f202b365875f9ab598e22ef1c079d4b767d7c22ffb362a11f456db2b80c25beb078398fbf81074b348075fa64f5f8f1c7d8552fe570aa5c1c9cb81a4da8fe7
7
+ data.tar.gz: 26d5f55ca9caad1b80733266abf265cbb49a69b94c290b4c3e6c9603e606fdfcfd35e6a66a85e29d5a17edb3e8ac14e2337116ec6e8286ff6c1f847773ac4794
data/.editorconfig ADDED
@@ -0,0 +1,3 @@
1
+ [*.rb]
2
+ indent_size = 2
3
+ indent_style = space
data/.gitignore CHANGED
@@ -14,7 +14,6 @@ rdoc
14
14
  spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
- test/fixtures
18
17
  coverage
19
18
  tmp
20
19
  *.bundle
data/.travis.yml CHANGED
@@ -1,4 +1,15 @@
1
+ env:
2
+ global:
3
+ - CC_TEST_REPORTER_ID=c14dfc2c8a10a029ac3706d2c2c86f63f663a1445df6213e013a42cbc9a55e74
1
4
  language: ruby
2
5
  rvm:
3
- - 2.3.0
4
- before_install: gem install bundler -v 1.12.5
6
+ - 2.7.0
7
+ before_install: gem install bundler -v 2.1.4
8
+ before_script:
9
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
10
+ - chmod +x ./cc-test-reporter
11
+ - ./cc-test-reporter before-build
12
+ script:
13
+ - rake test
14
+ after_script:
15
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
data/README.md CHANGED
@@ -4,7 +4,9 @@
4
4
  [![Build Status](https://travis-ci.org/PokemonTCG/pokemon-tcg-sdk-ruby.svg?branch=master)](https://travis-ci.org/PokemonTCG/pokemon-tcg-sdk-ruby)
5
5
  [![Dependency Status](https://gemnasium.com/badges/github.com/PokemonTCG/pokemon-tcg-sdk-ruby.svg)](https://gemnasium.com/github.com/PokemonTCG/pokemon-tcg-sdk-ruby)
6
6
  [![Code Climate](https://codeclimate.com/github/PokemonTCG/pokemon-tcg-sdk-ruby/badges/gpa.svg)](https://codeclimate.com/github/PokemonTCG/pokemon-tcg-sdk-ruby)
7
- [![Coverage Status](https://coveralls.io/repos/github/PokemonTCG/pokemon-tcg-sdk-ruby/badge.svg?branch=master)](https://coveralls.io/github/PokemonTCG/pokemon-tcg-sdk-ruby?branch=master)
7
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/ee9d7d6ee5f8276729bc/test_coverage)](https://codeclimate.com/github/PokemonTCG/pokemon-tcg-sdk-ruby/test_coverage)
8
+
9
+ ### Now supporting Version 2 of the Pokémon TCG API!
8
10
 
9
11
  This is the Pokémon TCG SDK Ruby implementation. It is a wrapper around the Pokémon TCG API of [pokemontcg.io](http://pokemontcg.io/).
10
12
 
@@ -24,10 +26,10 @@ Or install it yourself as:
24
26
 
25
27
  ## Usage
26
28
 
27
- To change the API version (currently defaults to version 1)
29
+ To configure your API Key:
28
30
 
29
31
  Pokemon.configure do |config|
30
- config.api_version = 2
32
+ config.api_key = "xxxxxxxxx"
31
33
  end
32
34
 
33
35
  ### Classes
@@ -40,7 +42,13 @@ To change the API version (currently defaults to version 1)
40
42
  Ability
41
43
  AncientTrait
42
44
  Attack
43
- TypeValue
45
+ Resistance
46
+ Weakness
47
+ Legalities
48
+ Rarity
49
+ SetImages
50
+ CardImages
51
+ Tcgplayer
44
52
 
45
53
  ### Properties Per Class
46
54
 
@@ -48,39 +56,47 @@ To change the API version (currently defaults to version 1)
48
56
 
49
57
  id
50
58
  name
51
- national_pokedex_number
52
- image_url
53
- subtype
54
59
  supertype
55
- ability
56
- ancient_trait
60
+ subtypes
61
+ level
57
62
  hp
58
- number
59
- artist
60
- rarity
61
- series
62
- set
63
- set_code
64
- retreat_cost
65
- text
66
63
  types
67
- attacks
64
+ evolves_from
65
+ evolves_to
66
+ rules
67
+ ancient_trait
68
+ abilities
68
69
  weaknesses
69
70
  resistances
71
+ retreat_cost
72
+ converted_retreat_cost
73
+ set
74
+ number
75
+ artist
76
+ rarity
77
+ national_pokedex_numbers
78
+ legalities
79
+ tcgplayer
80
+ images
70
81
 
71
82
  #### Set
72
83
 
73
- code
84
+ id
74
85
  name
75
86
  series
76
- total_cards
77
- standard_legal
87
+ printedTotal
88
+ total
89
+ legalities
90
+ ptcgo_code
78
91
  release_date
92
+ updated_at
93
+ images
79
94
 
80
95
  #### Ability
81
96
 
82
97
  name
83
98
  text
99
+ type
84
100
 
85
101
  #### AncientTrait
86
102
 
@@ -95,11 +111,26 @@ To change the API version (currently defaults to version 1)
95
111
  damage
96
112
  converted_energy_cost
97
113
 
98
- #### TypeValue
114
+ #### Weakness
115
+
116
+ type
117
+ value
118
+
119
+ #### Resistance
99
120
 
100
121
  type
101
122
  value
102
123
 
124
+ #### CardImages
125
+
126
+ small
127
+ large
128
+
129
+ #### SetImages
130
+
131
+ logo
132
+ symbol
133
+
103
134
  ### Functions Available
104
135
 
105
136
  #### Find a card by id
@@ -108,7 +139,7 @@ To change the API version (currently defaults to version 1)
108
139
 
109
140
  #### Filter Cards via query parameters
110
141
 
111
- cards = Pokemon::Card.where(set: 'generations').where(supertype: 'pokemon').all
142
+ cards = Pokemon::Card.where(q: 'set.name:generations subtypes:mega')
112
143
 
113
144
  #### Find all cards (will take awhile)
114
145
 
@@ -116,7 +147,7 @@ To change the API version (currently defaults to version 1)
116
147
 
117
148
  #### Get all cards, but only a specific page of data
118
149
 
119
- cards = Pokemon::Card.where(page: 5).where(pageSize: 100).all
150
+ cards = Pokemon::Card.where(page: 5, pageSize: 100)
120
151
 
121
152
  #### Find a set by code
122
153
 
@@ -124,7 +155,7 @@ To change the API version (currently defaults to version 1)
124
155
 
125
156
  #### Filter sets via query parameters
126
157
 
127
- sets = Pokemon::Set.where(standardLegal: true).all
158
+ sets = Pokemon::Set.where(q: 'legalities.standard:legal')
128
159
 
129
160
  #### Get all Sets
130
161
 
@@ -142,6 +173,10 @@ To change the API version (currently defaults to version 1)
142
173
 
143
174
  supertypes = Pokemon::Supertype.all
144
175
 
176
+ #### Get all Rarities
177
+
178
+ supertypes = Pokemon::Rarity.all
179
+
145
180
  ## Contributing
146
181
 
147
182
  1. Fork it ( https://github.com/[my-github-username]/pokemon-tcg-sdk-ruby/fork )
data/Rakefile CHANGED
@@ -5,7 +5,17 @@ require_relative 'lib/pokemon_tcg_sdk'
5
5
  task :default => :test
6
6
 
7
7
  Rake::TestTask.new do |t|
8
+ t.libs << "lib"
8
9
  t.libs << "test"
9
10
  t.test_files = FileList['test/*_test.rb']
10
11
  t.verbose = true
12
+ end
13
+
14
+ Pokemon.configure do |config|
15
+ config.api_key = ENV['POKEMON_API_KEY']
16
+ end
17
+
18
+ task :card do
19
+ card = Pokemon::Card.find('xy1-1')
20
+ puts card.tcgplayer.updated_at
11
21
  end
@@ -5,14 +5,21 @@ require "pokemon_tcg_sdk/query_builder"
5
5
  require "pokemon_tcg_sdk/rest_client"
6
6
  require "pokemon_tcg_sdk/ability"
7
7
  require "pokemon_tcg_sdk/attack"
8
- require "pokemon_tcg_sdk/type_value"
9
8
  require "pokemon_tcg_sdk/type"
10
9
  require "pokemon_tcg_sdk/subtype"
11
10
  require "pokemon_tcg_sdk/supertype"
12
11
  require "pokemon_tcg_sdk/set"
12
+ require "pokemon_tcg_sdk/weakness"
13
+ require "pokemon_tcg_sdk/resistance"
14
+ require "pokemon_tcg_sdk/legalities"
15
+ require "pokemon_tcg_sdk/card_images"
16
+ require "pokemon_tcg_sdk/set_images"
17
+ require "pokemon_tcg_sdk/tcgplayer"
18
+ require "pokemon_tcg_sdk/ancient_trait"
19
+ require "pokemon_tcg_sdk/rarity"
13
20
 
14
21
  module Pokemon
15
- API_URL = 'https://api.pokemontcg.io'
22
+ API_URL = 'https://beta.pokemontcg.io'
16
23
 
17
24
  class << self
18
25
  attr_writer :configuration
@@ -1,10 +1,14 @@
1
- require_relative 'representers/ability_representer'
2
-
3
1
  module Pokemon
4
2
  class Ability
5
- include Roar::JSON
6
- include AbilityRepresenter
7
-
8
3
  attr_accessor :name, :text, :type
4
+
5
+ def self.from_json(json)
6
+ ability = Ability.new
7
+ ability.name = json['name']
8
+ ability.text = json['text']
9
+ ability.type = json['type']
10
+
11
+ ability
12
+ end
9
13
  end
10
14
  end
@@ -1,10 +1,13 @@
1
- require_relative 'representers/ancient_trait_representer'
2
-
3
1
  module Pokemon
4
2
  class AncientTrait
5
- include Roar::JSON
6
- include AncientTraitRepresenter
7
-
8
3
  attr_accessor :name, :text
4
+
5
+ def self.from_json(json)
6
+ trait = AncientTrait.new
7
+ trait.name = json['name']
8
+ trait.text = json['text']
9
+
10
+ trait
11
+ end
9
12
  end
10
13
  end
@@ -1,10 +1,16 @@
1
- require_relative 'representers/attack_representer'
2
-
3
1
  module Pokemon
4
2
  class Attack
5
- include Roar::JSON
6
- include AttackRepresenter
7
-
8
3
  attr_accessor :cost, :name, :text, :damage, :converted_energy_cost
4
+
5
+ def self.from_json(json)
6
+ attack = Attack.new
7
+ attack.cost = json['cost']
8
+ attack.name = json['name']
9
+ attack.text = json['text']
10
+ attack.damage = json['damage']
11
+ attack.converted_energy_cost = json['convertedEnergyCost']
12
+
13
+ attack
14
+ end
9
15
  end
10
16
  end
@@ -1,15 +1,39 @@
1
- require_relative 'representers/card_representer'
2
-
3
1
  module Pokemon
4
2
  class Card
5
- include Roar::JSON
6
- include CardRepresenter
7
-
8
- attr_accessor :id, :name, :image_url, :subtype, :supertype, :ability,
9
- :hp, :number, :artist, :rarity, :series, :set, :set_code,
10
- :retreat_cost, :text, :types, :attacks, :weaknesses, :resistances,
11
- :national_pokedex_number, :ancient_trait
12
-
3
+ attr_accessor :id, :name, :supertype, :subtypes, :level, :hp, :types, :evolves_from, :evolves_to, :rules, :ancient_trait,
4
+ :abilities, :attacks, :weaknesses, :resistances, :retreat_cost, :converted_retreat_cost, :set, :number, :artist, :rarity, :national_pokedex_numbers,
5
+ :legalities, :tcgplayer, :images
6
+
7
+ def self.from_json(json)
8
+ card = Card.new
9
+ card.id = json['id']
10
+ card.name = json['name']
11
+ card.supertype = json['supertype']
12
+ card.subtypes = json['subtypes']
13
+ card.level = json['level']
14
+ card.hp = json['hp']
15
+ card.types = json['types']
16
+ card.evolves_from = json['evolvesFrom']
17
+ card.evolves_to = json['evolvesTo']
18
+ card.rules = json['rules']
19
+ card.ancient_trait = AncientTrait.from_json(json['ancientTrait']) if !json['ancientTrait'].nil?
20
+ card.abilities = json['abilities'].map {|ability_json| Ability.from_json(ability_json)} if !json['abilities'].nil?
21
+ card.attacks = json['attacks'].map {|attack_json| Attack.from_json(attack_json)} if !json['attacks'].nil?
22
+ card.weaknesses = json['weaknesses'].map {|weakness_json| Weakness.from_json(weakness_json)} if !json['weaknesses'].nil?
23
+ card.resistances = json['resistances'].map {|resistance_json| Resistance.from_json(resistance_json)} if !json['resistances'].nil?
24
+ card.retreat_cost = json['retreatCost']
25
+ card.converted_retreat_cost = json['convertedRetreatCost']
26
+ card.set = Set.from_json(json['set']) if !json['set'].nil?
27
+ card.number = json['number']
28
+ card.artist = json['artist']
29
+ card.rarity = json['rarity']
30
+ card.national_pokedex_numbers = json['nationalPokedexNumbers']
31
+ card.legalities = Legalities.from_json(json['legalities']) if !json['legalities'].nil?
32
+ card.tcgplayer = Tcgplayer.from_json(json['tcgplayer']) if !json['tcgplayer'].nil?
33
+ card.images = CardImages.from_json(json['images']) if !json['images'].nil?
34
+ card
35
+ end
36
+
13
37
  # Get the resource string
14
38
  #
15
39
  # @return [String] The API resource string
@@ -35,7 +59,7 @@ module Pokemon
35
59
  # Adds a parameter to the hash of query parameters
36
60
  #
37
61
  # @param args [Hash] the query parameter
38
- # @return [QueryBuilder] the QueryBuilder
62
+ # @return [Array<Card>] Array of Card objects
39
63
  def self.where(args)
40
64
  QueryBuilder.new(Card).where(args)
41
65
  end
@@ -0,0 +1,13 @@
1
+ module Pokemon
2
+ class CardImages
3
+ attr_accessor :small, :large
4
+
5
+ def self.from_json(json)
6
+ images = CardImages.new
7
+ images.small = json['small']
8
+ images.large = json['large']
9
+
10
+ images
11
+ end
12
+ end
13
+ end
@@ -1,9 +1,9 @@
1
1
  module Pokemon
2
+ # Placeholder for future configuration options
2
3
  class Configuration
3
- attr_accessor :api_version
4
+ attr_accessor :api_key
4
5
 
5
6
  def initialize
6
- @api_version = 1
7
7
  end
8
8
  end
9
9
  end
@@ -0,0 +1,14 @@
1
+ module Pokemon
2
+ class Legalities
3
+ attr_accessor :expanded, :standard, :unlimited
4
+
5
+ def self.from_json(json)
6
+ legality = Legalities.new
7
+ legality.expanded = json['expanded']
8
+ legality.standard = json['standard']
9
+ legality.unlimited = json['unlimited']
10
+
11
+ legality
12
+ end
13
+ end
14
+ end
@@ -1,4 +1,5 @@
1
1
  require_relative 'rest_client'
2
+ require 'json'
2
3
 
3
4
  module Pokemon
4
5
  class QueryBuilder
@@ -16,7 +17,7 @@ module Pokemon
16
17
  # @return [QueryBuilder] the QueryBuilder
17
18
  def where(args)
18
19
  @query.merge!(args)
19
- self
20
+ self.all
20
21
  end
21
22
 
22
23
  # Find a single resource by the resource id
@@ -25,12 +26,7 @@ module Pokemon
25
26
  # @return [Object] the Type object response
26
27
  def find(id)
27
28
  response = RestClient.get("#{@type.Resource}/#{id}")
28
- singular_resource = @type.Resource[0...-1]
29
- if response.body[singular_resource].nil?
30
- raise ArgumentError, 'Resource not found'
31
- end
32
-
33
- type.new.from_json(response.body[singular_resource].to_json)
29
+ @type.from_json response['data']
34
30
  end
35
31
 
36
32
  # Get all resources from a query by paging through data
@@ -48,9 +44,9 @@ module Pokemon
48
44
 
49
45
  while true
50
46
  response = RestClient.get(@type.Resource, @query)
51
- data = response.body[@type.Resource]
52
- if !data.empty?
53
- data.each {|item| list << @type.new.from_json(item.to_json)}
47
+ data = response['data']
48
+ if !data.nil? && data.any?
49
+ data.each {|item| list << @type.from_json(item)}
54
50
 
55
51
  if !fetch_all
56
52
  break
@@ -0,0 +1,12 @@
1
+ module Pokemon
2
+ class Rarity
3
+ include RestClient
4
+
5
+ # Get all types
6
+ #
7
+ # @return [Array<String>] All types
8
+ def self.all
9
+ RestClient.get('rarities')['data']
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ module Pokemon
2
+ class Resistance
3
+ attr_accessor :type, :value
4
+
5
+ def self.from_json(json)
6
+ resistance = Resistance.new
7
+ resistance.type = json['type']
8
+ resistance.value = json['value']
9
+
10
+ resistance
11
+ end
12
+ end
13
+ end
14
+
@@ -11,18 +11,30 @@ module Pokemon
11
11
  else
12
12
  query = "#{endpoint}?#{params_to_query(params)}"
13
13
  end
14
-
15
- client.get(query)
14
+
15
+ response = client.get(query)
16
+
17
+ case response.status
18
+ when 200
19
+ JSON.parse(response.body)
20
+ when 429
21
+ raise 'You have hit your rate limit.'
22
+ when 404
23
+ raise ArgumentError, 'Resource not found'
24
+ when 403
25
+ raise 'You are not authorized to access this endpoint. Please make sure you have a valid API Key. Go to https://dev.pokemontcg.io for more info.'
26
+ else
27
+ raise 'Something went wrong...please try again later.'
28
+ end
16
29
  end
17
30
 
18
31
  protected
19
32
 
20
33
  def self.client
21
- @client = Faraday.new "#{API_URL}/v#{Pokemon.configuration.api_version}" do |conn|
22
- conn.response :xml, :content_type => /\bxml$/
23
- conn.response :json, :content_type => /\bjson$/
24
- conn.adapter Faraday.default_adapter
25
- end
34
+ @client = Faraday.new(
35
+ url: "#{API_URL}/v2",
36
+ headers: {'Content-Type' => 'application/json', 'X-Api-Key' => Pokemon.configuration.api_key}
37
+ )
26
38
  end
27
39
 
28
40
  def self.params_to_query(params)
@@ -1,12 +1,23 @@
1
- require_relative 'representers/set_representer'
2
-
3
1
  module Pokemon
4
2
  class Set
5
- include Roar::JSON
6
- include SetRepresenter
3
+ attr_accessor :id, :name, :series, :printed_total, :total, :legalities, :ptcgo_code, :release_date, :updated_at, :images
4
+
5
+ def self.from_json(json)
6
+ set = Set.new
7
+ set.id = json['id']
8
+ set.name = json['name']
9
+ set.series = json['series']
10
+ set.printed_total = json['printedTotal']
11
+ set.total = json['total']
12
+ set.legalities = Legalities.from_json(json['legalities']) if !json['legalities'].nil?
13
+ set.ptcgo_code = json['ptcgoCode']
14
+ set.release_date = json['releaseDate']
15
+ set.updated_at = json['updatedAt']
16
+ set.images = SetImages.from_json(json['images']) if !json['images'].nil?
17
+
18
+ set
19
+ end
7
20
 
8
- attr_accessor :code, :name, :series, :total_cards, :standard_legal, :release_date
9
-
10
21
  # Get the resource string
11
22
  #
12
23
  # @return [String] The API resource string
@@ -32,7 +43,7 @@ module Pokemon
32
43
  # Adds a parameter to the hash of query parameters
33
44
  #
34
45
  # @param args [Hash] the query parameter
35
- # @return [QueryBuilder] the QueryBuilder
46
+ # @return [Array<Set>] Array of Set objects
36
47
  def self.where(args)
37
48
  QueryBuilder.new(Set).where(args)
38
49
  end
@@ -0,0 +1,13 @@
1
+ module Pokemon
2
+ class SetImages
3
+ attr_accessor :symbol, :logo
4
+
5
+ def self.from_json(json)
6
+ images = SetImages.new
7
+ images.symbol = json['symbol']
8
+ images.logo = json['logo']
9
+
10
+ images
11
+ end
12
+ end
13
+ end
@@ -6,7 +6,7 @@ module Pokemon
6
6
  #
7
7
  # @return [Array<String>] All subtypes
8
8
  def self.all
9
- RestClient.get('subtypes').body['subtypes']
9
+ RestClient.get('subtypes')['data']
10
10
  end
11
11
  end
12
12
  end
@@ -6,7 +6,7 @@ module Pokemon
6
6
  #
7
7
  # @return [Array<String>] All supertypes
8
8
  def self.all
9
- RestClient.get('supertypes').body['supertypes']
9
+ RestClient.get('supertypes')['data']
10
10
  end
11
11
  end
12
12
  end
@@ -0,0 +1,44 @@
1
+ module Pokemon
2
+ class Tcgplayer
3
+ attr_accessor :url, :prices, :updated_at
4
+
5
+ def self.from_json(json)
6
+ tcgplayer = Tcgplayer.new
7
+ tcgplayer.url = json['url']
8
+ tcgplayer.updated_at = json['updatedAt']
9
+ tcgplayer.prices = TcgPlayerPrices.from_json(json['prices']) if !json['prices'].nil?
10
+
11
+ tcgplayer
12
+ end
13
+ end
14
+
15
+ class TcgPlayerPrices
16
+ attr_accessor :normal, :holofoil, :reverse_holofoil, :first_edition_holofoil, :first_edition_normal
17
+
18
+ def self.from_json(json)
19
+ price = TcgPlayerPrices.new
20
+ price.normal = TcgPlayerPriceValues.from_json(json['normal']) if json.key? 'normal'
21
+ price.holofoil = TcgPlayerPriceValues.from_json(json['holofoil']) if !json['holofoil'].nil?
22
+ price.reverse_holofoil = TcgPlayerPriceValues.from_json(json['reverseHolofoil']) if !json['reverseHolofoil'].nil?
23
+ price.first_edition_holofoil = TcgPlayerPriceValues.from_json(json['1stEditionHolofoil']) if !json['1stEditionHolofoil'].nil?
24
+ price.first_edition_normal = TcgPlayerPriceValues.from_json(json['1stEditionNormal']) if !json['1stEditionNormal'].nil?
25
+
26
+ price
27
+ end
28
+ end
29
+
30
+ class TcgPlayerPriceValues
31
+ attr_accessor :low, :mid, :high, :market, :direct
32
+
33
+ def self.from_json(json)
34
+ values = TcgPlayerPriceValues.new
35
+ values.low = json['low']
36
+ values.mid = json['mid']
37
+ values.high = json['high']
38
+ values.market = json['market']
39
+ values.direct = json['direct']
40
+
41
+ values
42
+ end
43
+ end
44
+ end
@@ -6,7 +6,7 @@ module Pokemon
6
6
  #
7
7
  # @return [Array<String>] All types
8
8
  def self.all
9
- RestClient.get('types').body['types']
9
+ RestClient.get('types')['data']
10
10
  end
11
11
  end
12
12
  end
@@ -1,3 +1,3 @@
1
1
  module Pokemon
2
- VERSION = "2.2.1"
2
+ VERSION = "4.0.0"
3
3
  end
@@ -0,0 +1,13 @@
1
+ module Pokemon
2
+ class Weakness
3
+ attr_accessor :type, :value
4
+
5
+ def self.from_json(json)
6
+ weakness = Weakness.new
7
+ weakness.type = json['type']
8
+ weakness.value = json['value']
9
+
10
+ weakness
11
+ end
12
+ end
13
+ end
@@ -17,18 +17,16 @@ Gem::Specification.new do |spec|
17
17
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.add_development_dependency "bundler", "~> 1.12"
21
- spec.add_development_dependency "rake", "~> 11.2"
22
- spec.add_development_dependency "minitest", "~> 5.9"
23
- spec.add_development_dependency "vcr", "~> 3.0"
24
- spec.add_development_dependency "webmock", "~> 2.1"
25
- spec.add_development_dependency "simplecov", "~> 0.12"
26
- spec.add_development_dependency "coveralls", "~> 0.8"
27
- spec.add_development_dependency "codeclimate-test-reporter", "~> 0.6"
20
+ spec.add_development_dependency "bundler", "~> 2.1.4"
21
+ spec.add_development_dependency "rake", "~> 13.0"
22
+ spec.add_development_dependency "minitest", "~> 5.14.2"
23
+ spec.add_development_dependency "vcr", "~> 6.0"
24
+ spec.add_development_dependency "webmock", "~> 3.9"
25
+ spec.add_development_dependency "simplecov", "~> 0.19"
28
26
 
29
- spec.add_dependency "roar", "~> 1.0"
30
- spec.add_dependency "json", "~> 2.0"
31
- spec.add_dependency "multi_json", "~> 1.12"
32
- spec.add_dependency "multi_xml", "~> 0.5"
33
- spec.add_dependency "faraday_middleware", "~> 0.10"
27
+ spec.add_dependency "roar", "~> 1.1"
28
+ spec.add_dependency "json", "~> 2.3"
29
+ spec.add_dependency "multi_json", "~> 1.15"
30
+ spec.add_dependency "multi_xml", "~> 0.6"
31
+ spec.add_dependency "faraday_middleware", "~> 1.0"
34
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pokemon_tcg_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Backes
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-16 00:00:00.000000000 Z
11
+ date: 2021-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,182 +16,154 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.12'
19
+ version: 2.1.4
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.12'
26
+ version: 2.1.4
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '11.2'
33
+ version: '13.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '11.2'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '5.9'
47
+ version: 5.14.2
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '5.9'
54
+ version: 5.14.2
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: vcr
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '3.0'
61
+ version: '6.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '3.0'
68
+ version: '6.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: webmock
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '2.1'
75
+ version: '3.9'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '2.1'
82
+ version: '3.9'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: simplecov
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0.12'
89
+ version: '0.19'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0.12'
97
- - !ruby/object:Gem::Dependency
98
- name: coveralls
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '0.8'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '0.8'
111
- - !ruby/object:Gem::Dependency
112
- name: codeclimate-test-reporter
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '0.6'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '0.6'
96
+ version: '0.19'
125
97
  - !ruby/object:Gem::Dependency
126
98
  name: roar
127
99
  requirement: !ruby/object:Gem::Requirement
128
100
  requirements:
129
101
  - - "~>"
130
102
  - !ruby/object:Gem::Version
131
- version: '1.0'
103
+ version: '1.1'
132
104
  type: :runtime
133
105
  prerelease: false
134
106
  version_requirements: !ruby/object:Gem::Requirement
135
107
  requirements:
136
108
  - - "~>"
137
109
  - !ruby/object:Gem::Version
138
- version: '1.0'
110
+ version: '1.1'
139
111
  - !ruby/object:Gem::Dependency
140
112
  name: json
141
113
  requirement: !ruby/object:Gem::Requirement
142
114
  requirements:
143
115
  - - "~>"
144
116
  - !ruby/object:Gem::Version
145
- version: '2.0'
117
+ version: '2.3'
146
118
  type: :runtime
147
119
  prerelease: false
148
120
  version_requirements: !ruby/object:Gem::Requirement
149
121
  requirements:
150
122
  - - "~>"
151
123
  - !ruby/object:Gem::Version
152
- version: '2.0'
124
+ version: '2.3'
153
125
  - !ruby/object:Gem::Dependency
154
126
  name: multi_json
155
127
  requirement: !ruby/object:Gem::Requirement
156
128
  requirements:
157
129
  - - "~>"
158
130
  - !ruby/object:Gem::Version
159
- version: '1.12'
131
+ version: '1.15'
160
132
  type: :runtime
161
133
  prerelease: false
162
134
  version_requirements: !ruby/object:Gem::Requirement
163
135
  requirements:
164
136
  - - "~>"
165
137
  - !ruby/object:Gem::Version
166
- version: '1.12'
138
+ version: '1.15'
167
139
  - !ruby/object:Gem::Dependency
168
140
  name: multi_xml
169
141
  requirement: !ruby/object:Gem::Requirement
170
142
  requirements:
171
143
  - - "~>"
172
144
  - !ruby/object:Gem::Version
173
- version: '0.5'
145
+ version: '0.6'
174
146
  type: :runtime
175
147
  prerelease: false
176
148
  version_requirements: !ruby/object:Gem::Requirement
177
149
  requirements:
178
150
  - - "~>"
179
151
  - !ruby/object:Gem::Version
180
- version: '0.5'
152
+ version: '0.6'
181
153
  - !ruby/object:Gem::Dependency
182
154
  name: faraday_middleware
183
155
  requirement: !ruby/object:Gem::Requirement
184
156
  requirements:
185
157
  - - "~>"
186
158
  - !ruby/object:Gem::Version
187
- version: '0.10'
159
+ version: '1.0'
188
160
  type: :runtime
189
161
  prerelease: false
190
162
  version_requirements: !ruby/object:Gem::Requirement
191
163
  requirements:
192
164
  - - "~>"
193
165
  - !ruby/object:Gem::Version
194
- version: '0.10'
166
+ version: '1.0'
195
167
  description: Pokémon TCG SDK is a wrapper around the Pokémon TCG API located at pokemontcg.io
196
168
  email:
197
169
  - backes.andrew@gmail.com
@@ -199,6 +171,7 @@ executables: []
199
171
  extensions: []
200
172
  extra_rdoc_files: []
201
173
  files:
174
+ - ".editorconfig"
202
175
  - ".gitignore"
203
176
  - ".travis.yml"
204
177
  - CODE_OF_CONDUCT.md
@@ -211,21 +184,21 @@ files:
211
184
  - lib/pokemon_tcg_sdk/ancient_trait.rb
212
185
  - lib/pokemon_tcg_sdk/attack.rb
213
186
  - lib/pokemon_tcg_sdk/card.rb
187
+ - lib/pokemon_tcg_sdk/card_images.rb
214
188
  - lib/pokemon_tcg_sdk/configuration.rb
189
+ - lib/pokemon_tcg_sdk/legalities.rb
215
190
  - lib/pokemon_tcg_sdk/query_builder.rb
216
- - lib/pokemon_tcg_sdk/representers/ability_representer.rb
217
- - lib/pokemon_tcg_sdk/representers/ancient_trait_representer.rb
218
- - lib/pokemon_tcg_sdk/representers/attack_representer.rb
219
- - lib/pokemon_tcg_sdk/representers/card_representer.rb
220
- - lib/pokemon_tcg_sdk/representers/set_representer.rb
221
- - lib/pokemon_tcg_sdk/representers/type_value_representer.rb
191
+ - lib/pokemon_tcg_sdk/rarity.rb
192
+ - lib/pokemon_tcg_sdk/resistance.rb
222
193
  - lib/pokemon_tcg_sdk/rest_client.rb
223
194
  - lib/pokemon_tcg_sdk/set.rb
195
+ - lib/pokemon_tcg_sdk/set_images.rb
224
196
  - lib/pokemon_tcg_sdk/subtype.rb
225
197
  - lib/pokemon_tcg_sdk/supertype.rb
198
+ - lib/pokemon_tcg_sdk/tcgplayer.rb
226
199
  - lib/pokemon_tcg_sdk/type.rb
227
- - lib/pokemon_tcg_sdk/type_value.rb
228
200
  - lib/pokemon_tcg_sdk/version.rb
201
+ - lib/pokemon_tcg_sdk/weakness.rb
229
202
  - pokemon_tcg_sdk.gemspec
230
203
  homepage: https://pokemontcg.io
231
204
  licenses:
@@ -246,8 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
246
219
  - !ruby/object:Gem::Version
247
220
  version: '0'
248
221
  requirements: []
249
- rubyforge_project:
250
- rubygems_version: 2.5.1
222
+ rubygems_version: 3.1.4
251
223
  signing_key:
252
224
  specification_version: 4
253
225
  summary: Pokémon TCG SDK for pokemontcg.io
@@ -1,11 +0,0 @@
1
- require 'roar/json'
2
-
3
- module Pokemon
4
- module AbilityRepresenter
5
- include Roar::JSON
6
-
7
- property :name
8
- property :text
9
- property :type
10
- end
11
- end
@@ -1,10 +0,0 @@
1
- require 'roar/json'
2
-
3
- module Pokemon
4
- module AncientTraitRepresenter
5
- include Roar::JSON
6
-
7
- property :name
8
- property :text
9
- end
10
- end
@@ -1,13 +0,0 @@
1
- require 'roar/json'
2
-
3
- module Pokemon
4
- module AttackRepresenter
5
- include Roar::JSON
6
-
7
- collection :cost
8
- property :name
9
- property :text
10
- property :damage
11
- property :converted_energy_cost, as: :convertedEnergyCost
12
- end
13
- end
@@ -1,38 +0,0 @@
1
- require 'roar/json'
2
- require_relative 'attack_representer'
3
- require_relative 'type_value_representer'
4
- require_relative 'ability_representer'
5
- require_relative 'ancient_trait_representer'
6
- require_relative '../attack'
7
- require_relative '../type_value'
8
- require_relative '../ability'
9
- require_relative '../ancient_trait'
10
-
11
- module Pokemon
12
- module CardRepresenter
13
- include Roar::JSON
14
-
15
- property :id
16
- property :name
17
- property :image_url, as: :imageUrl
18
- property :subtype
19
- property :supertype
20
- property :ability, extend: AbilityRepresenter, class: Ability
21
- property :ancient_trait, as: :ancientTrait, extend: AncientTraitRepresenter, class: AncientTrait
22
- property :hp
23
- property :number
24
- property :artist
25
- property :rarity
26
- property :series
27
- property :set
28
- property :set_code, as: :setCode
29
- property :national_pokedex_number, as: :nationalPokedexNumber
30
-
31
- collection :retreat_cost, as: :retreatCost
32
- collection :text
33
- collection :types
34
- collection :attacks, extend: AttackRepresenter, class: Attack
35
- collection :weaknesses, extend: TypeValueRepresenter, class: TypeValue
36
- collection :resistances, extend: TypeValueRepresenter, class: TypeValue
37
- end
38
- end
@@ -1,14 +0,0 @@
1
- require 'roar/json'
2
-
3
- module Pokemon
4
- module SetRepresenter
5
- include Roar::JSON
6
-
7
- property :code
8
- property :name
9
- property :series
10
- property :total_cards, as: :totalCards
11
- property :standard_legal, as: :standardLegal
12
- property :release_date, as: :releaseDate
13
- end
14
- end
@@ -1,10 +0,0 @@
1
- require 'roar/json'
2
-
3
- module Pokemon
4
- module TypeValueRepresenter
5
- include Roar::JSON
6
-
7
- property :type
8
- property :value
9
- end
10
- end
@@ -1,10 +0,0 @@
1
- require_relative 'representers/type_value_representer'
2
-
3
- module Pokemon
4
- class TypeValue
5
- include Roar::JSON
6
- include TypeValueRepresenter
7
-
8
- attr_accessor :type, :value
9
- end
10
- end