pokeapi 0.4.1 → 0.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7ef6dd52c1b546955647cdd2b10bd2f352367918
4
- data.tar.gz: ed8c07f4f26367a65846eec774eb895c49d9e854
3
+ metadata.gz: b11e6dfe2b271b7355807c7a78167ba855cb43df
4
+ data.tar.gz: 7ff6068f0227e7f9307d751e82d79d60efdafe4e
5
5
  SHA512:
6
- metadata.gz: 518de9e217c076377af1f066420cc5c8ed4ade2a87b12892aa5370d4ba963af660e0ad9b1ba5765981031b8a617550bb2b58c89d59e1788d452c8bb489bf0cba
7
- data.tar.gz: 904f5aa46c8a54a9af0578036cf3ff7012ee199b5cd1fa9425a1cfeaddbd2a9d1cdb181bf31b91121b7e92fb0d96510b1fb70582fd86f18f34b5851982805d13
6
+ metadata.gz: 268de52f58e000485013bfe9137c1d2044e8340c5959dc5ffb06949f5adc9d68f909efea200df159ff8670cb353dd0adee7861f28b9ff63047fedcb337f3e2d9
7
+ data.tar.gz: 7110835909ea12e31afef5a22e049de8ff2891d4ddeda25b2527f6b7342865a57c11c2252db9674fec89162a0527ba761bd6c6cb87357531fe561b413d28e86a
@@ -1,21 +1,26 @@
1
1
  require "hashie"
2
- require "pokeapi/version"
3
- require "pokeapi/parser/pokemon"
4
- require "pokeapi/parser/species"
5
- require "pokeapi/parser/evolution_chain"
6
- require "pokeapi/parser/evolution_details"
7
- require "pokeapi/base"
8
- require "pokeapi/ability"
9
- require "pokeapi/move"
10
- require "pokeapi/type"
11
- require "pokeapi/stat"
12
- require "pokeapi/requester"
13
- require "pokeapi/pokemon"
14
- require "pokeapi/flavor_text_entry"
15
- require "pokeapi/species"
16
- require "pokeapi/evolution_details"
17
- require "pokeapi/chain"
18
- require "pokeapi/evolution_chain"
19
2
 
20
3
  module PokeAPI
4
+ autoload :Version, "pokeapi/version"
5
+ autoload :Base, "pokeapi/base"
6
+ autoload :Type, "pokeapi/type"
7
+ autoload :DamageRelations, "pokeapi/damage_relations"
8
+ autoload :Pokemon, "pokeapi/pokemon"
9
+ autoload :Move, "pokeapi/move"
10
+ autoload :Ability, "pokeapi/ability"
11
+ autoload :Stat, "pokeapi/stat"
12
+ autoload :FlavorTextEntry, "pokeapi/flavor_text_entry"
13
+ autoload :Species, "pokeapi/species"
14
+ autoload :EvolutionDetails, "pokeapi/evolution_details"
15
+ autoload :Chain, "pokeapi/chain"
16
+ autoload :EvolutionChain, "pokeapi/evolution_chain"
17
+ autoload :Requester, "pokeapi/requester"
18
+
19
+ module Parser
20
+ autoload :Pokemon, "pokeapi/parser/pokemon"
21
+ autoload :Species, "pokeapi/parser/species"
22
+ autoload :EvolutionChain, "pokeapi/parser/evolution_chain"
23
+ autoload :EvolutionDetails, "pokeapi/parser/evolution_details"
24
+ autoload :Type, "pokeapi/parser/type"
25
+ end
21
26
  end
@@ -0,0 +1,10 @@
1
+ module PokeAPI
2
+ class DamageRelations < Base
3
+ property :half_damage_from, coerce: Array[Type]
4
+ property :no_damage_from, coerce: Array[Type]
5
+ property :half_damage_to, coerce: Array[Type]
6
+ property :double_damage_from, coerce: Array[Type]
7
+ property :no_damage_to, coerce: Array[Type]
8
+ property :double_damage_to, coerce: Array[Type]
9
+ end
10
+ end
@@ -59,7 +59,7 @@ module PokeAPI
59
59
  {
60
60
  name: type[:type][:name],
61
61
  slot: type[:slot],
62
- url: type[:type][:url],
62
+ id: type[:type][:url].split("/").last,
63
63
  }
64
64
  end.sort_by { |type| type[:slot] }
65
65
  end
@@ -0,0 +1,35 @@
1
+ module PokeAPI
2
+ module Parser
3
+ class Type
4
+ def self.parse(data)
5
+ new(data).parse
6
+ end
7
+
8
+ def initialize(data)
9
+ @data = data.clone
10
+ @damage_relations = @data.delete :damage_relations
11
+ end
12
+
13
+ def parse
14
+ {
15
+ id: @data[:id],
16
+ name: @data[:name],
17
+ damage_relations: damage_relations
18
+ }
19
+ end
20
+
21
+ private
22
+
23
+ def damage_relations
24
+ @damage_relations.each_with_object({}) do |(damage_relation, types), hsh|
25
+ hsh[damage_relation] = types.map do |type|
26
+ {
27
+ id: type[:url].split("/").last,
28
+ name: type[:name]
29
+ }
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -10,6 +10,7 @@ module PokeAPI
10
10
  POKEMON_ENDPOINT = "pokemon/"
11
11
  POKEMON_SPECIES_ENDPOINT = "pokemon-species/"
12
12
  EVOLUTION_CHAIN_ENDPOINT = "evolution-chain/"
13
+ TYPES_ENDPOINT = "type/"
13
14
 
14
15
  class << self
15
16
  def pokemon(id)
@@ -27,11 +28,16 @@ module PokeAPI
27
28
  Parser::EvolutionChain.parse(data)
28
29
  end
29
30
 
31
+ def type(id)
32
+ data = get("#{TYPES_ENDPOINT}#{id}")
33
+ Parser::Type.parse(data)
34
+ end
35
+
30
36
  def get(path)
31
37
  http = HTTP.get("#{API_ENDPOINT}#{path}/")
32
- fail NotFoundError if http.code == 404
33
- fail TimeoutError if http.code == 504
34
- fail APIError if http.code == 500
38
+ fail NotFoundError if http.code == 404
39
+ fail TimeoutError if http.code == 504
40
+ fail APIError if http.code == 500
35
41
  JSON.parse(http.to_s, symbolize_names: true)
36
42
  end
37
43
  end
@@ -1,7 +1,26 @@
1
1
  module PokeAPI
2
2
  class Type < Base
3
+ TYPES = %w(normal fighting flying poison ground rock bug ghost steel fire water grass electric psychic ice dragon dark fairy).freeze
3
4
  property :name
4
- property :url
5
+ property :id
5
6
  property :slot
7
+ property :damage_relations, coerce: DamageRelations
8
+
9
+ class << self
10
+ def valid?(type)
11
+ TYPES.include?(type.to_s.downcase)
12
+ end
13
+
14
+ def find(id)
15
+ response = Requester.type(id)
16
+ new response
17
+ end
18
+ end
19
+
20
+ def reload
21
+ response = Requester.type(id)
22
+ update_attributes!(response)
23
+ self
24
+ end
6
25
  end
7
26
  end
@@ -1,3 +1,3 @@
1
1
  module PokeAPI
2
- VERSION = "0.4.1"
2
+ VERSION = "0.5.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pokeapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Edgar Ortega
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-11 00:00:00.000000000 Z
11
+ date: 2016-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http
@@ -103,6 +103,7 @@ files:
103
103
  - lib/pokeapi/ability.rb
104
104
  - lib/pokeapi/base.rb
105
105
  - lib/pokeapi/chain.rb
106
+ - lib/pokeapi/damage_relations.rb
106
107
  - lib/pokeapi/evolution_chain.rb
107
108
  - lib/pokeapi/evolution_details.rb
108
109
  - lib/pokeapi/flavor_text_entry.rb
@@ -111,6 +112,7 @@ files:
111
112
  - lib/pokeapi/parser/evolution_details.rb
112
113
  - lib/pokeapi/parser/pokemon.rb
113
114
  - lib/pokeapi/parser/species.rb
115
+ - lib/pokeapi/parser/type.rb
114
116
  - lib/pokeapi/pokemon.rb
115
117
  - lib/pokeapi/requester.rb
116
118
  - lib/pokeapi/species.rb