pokeapi 0.4.1 → 0.5.0

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