pokemon_tcg_sdk 2.2.1 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
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