pokemon_tcg_sdk 2.3.0 → 4.1.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 -27
  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 +36 -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 -39
  33. data/lib/pokemon_tcg_sdk/representers/set_representer.rb +0 -15
  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: 480bd77457d18adf702ebbe27487d668a0cb3477
4
- data.tar.gz: a08938dd0834cfca2c050801ff09201c81afa973
2
+ SHA256:
3
+ metadata.gz: 791d8e2cf5d0b8770d3398433d5874ce3f50be0f8fe003f7c517cd7473c1cbe2
4
+ data.tar.gz: 679cc88f6c206a5a709c26b77d79d83fbff56e01097b84dc79a42a5f811d9c53
5
5
  SHA512:
6
- metadata.gz: eae9b137e60912497d64d94533a7bc1761b50ba5f94a43bc4faa9ceb142fb37557ead8b42e668fb2db465dc3469cf9d160037aa059463b062435d5c1b5bada28
7
- data.tar.gz: 566a429fde35e5b1c3969cd4a54497b511b5213a0eb0e9dc145c3a6fd72e87c7d04f10e1861d9c41dd656e37feb5279cfffb05e709f78f67a4bd5662127e9a73
6
+ metadata.gz: b1b9513df67369d8983c7a5cb36b376acf792cbf81958d46efe7433d9f6d05647447f61de86870f550fc2a862305b7de74813ed32939001fd8f463fa5098c4b0
7
+ data.tar.gz: d269673bc49a7c354aca3dd1725870a185adf0d0ad413a09112a04fd9eca7f4abe01c23fed7de3a74e036b6b98c1cc8cc60824a3917a90e23374743c49864708
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,36 +56,42 @@ 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
- image_url_hi_res
54
- subtype
55
59
  supertype
56
- ability
57
- ancient_trait
60
+ subtypes
61
+ level
58
62
  hp
59
- number
60
- artist
61
- rarity
62
- series
63
- set
64
- set_code
65
- retreat_cost
66
- text
67
63
  types
68
- attacks
64
+ evolves_from
65
+ evolves_to
66
+ rules
67
+ ancient_trait
68
+ abilities
69
69
  weaknesses
70
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
81
+ flavor_text
71
82
 
72
83
  #### Set
73
84
 
74
- code
85
+ id
75
86
  name
76
87
  series
77
- total_cards
78
- standard_legal
79
- expanded_legal
88
+ printedTotal
89
+ total
90
+ legalities
91
+ ptcgo_code
80
92
  release_date
93
+ updated_at
94
+ images
81
95
 
82
96
  #### Ability
83
97
 
@@ -98,11 +112,26 @@ To change the API version (currently defaults to version 1)
98
112
  damage
99
113
  converted_energy_cost
100
114
 
101
- #### TypeValue
115
+ #### Weakness
116
+
117
+ type
118
+ value
119
+
120
+ #### Resistance
102
121
 
103
122
  type
104
123
  value
105
124
 
125
+ #### CardImages
126
+
127
+ small
128
+ large
129
+
130
+ #### SetImages
131
+
132
+ logo
133
+ symbol
134
+
106
135
  ### Functions Available
107
136
 
108
137
  #### Find a card by id
@@ -111,7 +140,7 @@ To change the API version (currently defaults to version 1)
111
140
 
112
141
  #### Filter Cards via query parameters
113
142
 
114
- cards = Pokemon::Card.where(set: 'generations').where(supertype: 'pokemon').all
143
+ cards = Pokemon::Card.where(q: 'set.name:generations subtypes:mega')
115
144
 
116
145
  #### Find all cards (will take awhile)
117
146
 
@@ -119,7 +148,7 @@ To change the API version (currently defaults to version 1)
119
148
 
120
149
  #### Get all cards, but only a specific page of data
121
150
 
122
- cards = Pokemon::Card.where(page: 5).where(pageSize: 100).all
151
+ cards = Pokemon::Card.where(page: 5, pageSize: 100)
123
152
 
124
153
  #### Find a set by code
125
154
 
@@ -127,7 +156,7 @@ To change the API version (currently defaults to version 1)
127
156
 
128
157
  #### Filter sets via query parameters
129
158
 
130
- sets = Pokemon::Set.where(standardLegal: true).all
159
+ sets = Pokemon::Set.where(q: 'legalities.standard:legal')
131
160
 
132
161
  #### Get all Sets
133
162
 
@@ -145,6 +174,10 @@ To change the API version (currently defaults to version 1)
145
174
 
146
175
  supertypes = Pokemon::Supertype.all
147
176
 
177
+ #### Get all Rarities
178
+
179
+ supertypes = Pokemon::Rarity.all
180
+
148
181
  ## Contributing
149
182
 
150
183
  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,40 @@
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, :image_url_hi_res, :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, :flavor_text
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.flavor_text = json['flavorText']
31
+ card.national_pokedex_numbers = json['nationalPokedexNumbers']
32
+ card.legalities = Legalities.from_json(json['legalities']) if !json['legalities'].nil?
33
+ card.tcgplayer = Tcgplayer.from_json(json['tcgplayer']) if !json['tcgplayer'].nil?
34
+ card.images = CardImages.from_json(json['images']) if !json['images'].nil?
35
+ card
36
+ end
37
+
13
38
  # Get the resource string
14
39
  #
15
40
  # @return [String] The API resource string
@@ -35,7 +60,7 @@ module Pokemon
35
60
  # Adds a parameter to the hash of query parameters
36
61
  #
37
62
  # @param args [Hash] the query parameter
38
- # @return [QueryBuilder] the QueryBuilder
63
+ # @return [Array<Card>] Array of Card objects
39
64
  def self.where(args)
40
65
  QueryBuilder.new(Card).where(args)
41
66
  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, :expanded_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.3.0"
2
+ VERSION = "4.1.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.3.0
4
+ version: 4.1.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: 2017-02-24 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,39 +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 :image_url_hi_res, as: :imageUrlHiRes
19
- property :subtype
20
- property :supertype
21
- property :ability, extend: AbilityRepresenter, class: Ability
22
- property :ancient_trait, as: :ancientTrait, extend: AncientTraitRepresenter, class: AncientTrait
23
- property :hp
24
- property :number
25
- property :artist
26
- property :rarity
27
- property :series
28
- property :set
29
- property :set_code, as: :setCode
30
- property :national_pokedex_number, as: :nationalPokedexNumber
31
-
32
- collection :retreat_cost, as: :retreatCost
33
- collection :text
34
- collection :types
35
- collection :attacks, extend: AttackRepresenter, class: Attack
36
- collection :weaknesses, extend: TypeValueRepresenter, class: TypeValue
37
- collection :resistances, extend: TypeValueRepresenter, class: TypeValue
38
- end
39
- end
@@ -1,15 +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 :expanded_legal, as: :expandedLegal
13
- property :release_date, as: :releaseDate
14
- end
15
- 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