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 +4 -4
- data/lib/pokeapi.rb +22 -17
- data/lib/pokeapi/damage_relations.rb +10 -0
- data/lib/pokeapi/parser/pokemon.rb +1 -1
- data/lib/pokeapi/parser/type.rb +35 -0
- data/lib/pokeapi/requester.rb +9 -3
- data/lib/pokeapi/type.rb +20 -1
- data/lib/pokeapi/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b11e6dfe2b271b7355807c7a78167ba855cb43df
|
4
|
+
data.tar.gz: 7ff6068f0227e7f9307d751e82d79d60efdafe4e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 268de52f58e000485013bfe9137c1d2044e8340c5959dc5ffb06949f5adc9d68f909efea200df159ff8670cb353dd0adee7861f28b9ff63047fedcb337f3e2d9
|
7
|
+
data.tar.gz: 7110835909ea12e31afef5a22e049de8ff2891d4ddeda25b2527f6b7342865a57c11c2252db9674fec89162a0527ba761bd6c6cb87357531fe561b413d28e86a
|
data/lib/pokeapi.rb
CHANGED
@@ -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
|
@@ -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
|
data/lib/pokeapi/requester.rb
CHANGED
@@ -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
|
33
|
-
fail TimeoutError
|
34
|
-
fail APIError
|
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
|
data/lib/pokeapi/type.rb
CHANGED
@@ -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 :
|
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
|
data/lib/pokeapi/version.rb
CHANGED
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
|
+
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
|
+
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
|