pokeapi 0.2.1 → 0.3.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 +4 -4
- data/lib/pokeapi.rb +7 -0
- data/lib/pokeapi/chain.rb +7 -0
- data/lib/pokeapi/evolution_chain.rb +6 -0
- data/lib/pokeapi/evolution_details.rb +22 -0
- data/lib/pokeapi/parser/evolution_chain.rb +31 -0
- data/lib/pokeapi/parser/evolution_details.rb +58 -0
- data/lib/pokeapi/parser/pokemon.rb +6 -0
- data/lib/pokeapi/parser/species.rb +46 -0
- data/lib/pokeapi/pokemon.rb +9 -0
- data/lib/pokeapi/requester.rb +14 -2
- data/lib/pokeapi/species.rb +17 -0
- data/lib/pokeapi/version.rb +1 -1
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fbf266aef125f77a8a4356e82548283942c15130
|
4
|
+
data.tar.gz: d2800adcc1840164e3cdf136a36b4d2640141663
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab2950b33993bb2015664ea16378c22dab640b86e0c0a94d2aed63edfb9585683d22b367cac0a99e82d1140ddbb637a3925bf763402e3dea6ffb1d275ab4e283
|
7
|
+
data.tar.gz: 131d86886a7a65b67ec507575099e87edb8bac7ca92e826ce36bb10bd0150d18a5717192668ca7f24b297f1e09942ff09e31a475f2f3a1d63593199cc0e41c28
|
data/lib/pokeapi.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
require "hashie"
|
2
2
|
require "pokeapi/version"
|
3
3
|
require "pokeapi/parser/pokemon"
|
4
|
+
require "pokeapi/parser/species"
|
5
|
+
require "pokeapi/parser/evolution_chain"
|
6
|
+
require "pokeapi/parser/evolution_details"
|
4
7
|
require "pokeapi/base"
|
5
8
|
require "pokeapi/ability"
|
6
9
|
require "pokeapi/move"
|
@@ -8,6 +11,10 @@ require "pokeapi/type"
|
|
8
11
|
require "pokeapi/stat"
|
9
12
|
require "pokeapi/requester"
|
10
13
|
require "pokeapi/pokemon"
|
14
|
+
require "pokeapi/species"
|
15
|
+
require "pokeapi/evolution_details"
|
16
|
+
require "pokeapi/chain"
|
17
|
+
require "pokeapi/evolution_chain"
|
11
18
|
|
12
19
|
module PokeAPI
|
13
20
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module PokeAPI
|
2
|
+
class EvolutionDetails < Base
|
3
|
+
property :item
|
4
|
+
property :trigger
|
5
|
+
property :gender
|
6
|
+
property :held_item
|
7
|
+
property :known_move
|
8
|
+
property :known_move_type
|
9
|
+
property :location
|
10
|
+
property :min_level
|
11
|
+
property :min_happiness
|
12
|
+
property :min_beauty
|
13
|
+
property :min_affection
|
14
|
+
property :needs_overworld_rain
|
15
|
+
property :party_species
|
16
|
+
property :party_type
|
17
|
+
property :relative_physical_stats
|
18
|
+
property :time_of_day
|
19
|
+
property :trade_species
|
20
|
+
property :turn_upside_down
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module PokeAPI
|
2
|
+
module Parser
|
3
|
+
class EvolutionChain
|
4
|
+
def self.parse(data)
|
5
|
+
new(data).parse
|
6
|
+
end
|
7
|
+
|
8
|
+
def initialize(data)
|
9
|
+
@data = data.clone
|
10
|
+
@chain = data.delete :chain
|
11
|
+
end
|
12
|
+
|
13
|
+
def parse
|
14
|
+
{
|
15
|
+
id: @data[:id],
|
16
|
+
chain: parse_chain(@chain),
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def parse_chain(chain)
|
23
|
+
{
|
24
|
+
name: chain[:species][:name],
|
25
|
+
evolution_details: EvolutionDetails.parse(chain[:evolution_details].first),
|
26
|
+
evolves_to: chain[:evolves_to].map { |evolution_chain| parse_chain(evolution_chain) },
|
27
|
+
}
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module PokeAPI
|
2
|
+
module Parser
|
3
|
+
class EvolutionDetails
|
4
|
+
def self.parse(data)
|
5
|
+
return if data.nil?
|
6
|
+
new(data).parse
|
7
|
+
end
|
8
|
+
|
9
|
+
def initialize(data)
|
10
|
+
@data = data.clone
|
11
|
+
@item = @data.delete :item
|
12
|
+
@trigger = @data.delete :trigger
|
13
|
+
@held_item = @data.delete :held_item
|
14
|
+
end
|
15
|
+
|
16
|
+
def parse
|
17
|
+
{
|
18
|
+
item: item,
|
19
|
+
trigger: trigger,
|
20
|
+
held_item: held_item,
|
21
|
+
gender: @data[:gender],
|
22
|
+
known_move: @data[:known_move],
|
23
|
+
known_move_type: @data[:known_move_type],
|
24
|
+
location: @data[:location],
|
25
|
+
min_level: @data[:min_level],
|
26
|
+
min_happiness: @data[:min_happiness],
|
27
|
+
min_beauty: @data[:min_beauty],
|
28
|
+
min_affection: @data[:min_affection],
|
29
|
+
needs_overworld_rain: @data[:needs_overworld_rain],
|
30
|
+
party_species: @data[:party_species],
|
31
|
+
party_type: @data[:party_type],
|
32
|
+
relative_physical_stats: @data[:relative_physical_stats],
|
33
|
+
time_of_day: time_of_day,
|
34
|
+
trade_species: @data[:trade_species],
|
35
|
+
turn_upside_down: @data[:turn_upside_down],
|
36
|
+
}
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def time_of_day
|
42
|
+
@data[:time_of_day].empty? ? nil : @data[:time_of_day]
|
43
|
+
end
|
44
|
+
|
45
|
+
def item
|
46
|
+
@item && @item[:name]
|
47
|
+
end
|
48
|
+
|
49
|
+
def trigger
|
50
|
+
@trigger && @trigger[:name]
|
51
|
+
end
|
52
|
+
|
53
|
+
def held_item
|
54
|
+
@held_item && @held_item[:name]
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module PokeAPI
|
2
2
|
module Parser
|
3
3
|
class Pokemon
|
4
|
+
ANIMATED_THUMBNAIL_SOURCE = "http://pokegifs.surge.sh/"
|
5
|
+
|
4
6
|
def self.parse(data)
|
5
7
|
new(data).parse
|
6
8
|
end
|
@@ -12,6 +14,8 @@ module PokeAPI
|
|
12
14
|
@types = @data.delete :types
|
13
15
|
@stats = @data.delete :stats
|
14
16
|
@thumbnail = @data.delete(:sprites).delete(:front_default)
|
17
|
+
@animated_thumbnail = "#{ANIMATED_THUMBNAIL_SOURCE}#{@data[:id]}.gif"
|
18
|
+
@species_id = @data[:species][:url].split("/").last
|
15
19
|
end
|
16
20
|
|
17
21
|
def parse
|
@@ -23,6 +27,8 @@ module PokeAPI
|
|
23
27
|
types: types,
|
24
28
|
stats: stats,
|
25
29
|
thumbnail: @thumbnail,
|
30
|
+
animated_thumbnail: @animated_thumbnail,
|
31
|
+
species_id: @species_id,
|
26
32
|
}
|
27
33
|
end
|
28
34
|
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module PokeAPI
|
2
|
+
module Parser
|
3
|
+
class Species
|
4
|
+
HEX_COLORS = {
|
5
|
+
red: '#f05868',
|
6
|
+
blue: '#3088f0',
|
7
|
+
yellow: '#f0d048',
|
8
|
+
green: '#40b868',
|
9
|
+
black: '#585858',
|
10
|
+
brown: '#b07030',
|
11
|
+
purple: '#a868c0',
|
12
|
+
gray: '#a0a0a0',
|
13
|
+
white: '#f0f0f0',
|
14
|
+
pink: '#f890c8',
|
15
|
+
}.freeze
|
16
|
+
|
17
|
+
def self.parse(data)
|
18
|
+
new(data).parse
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize(data)
|
22
|
+
@data = data.clone
|
23
|
+
@flavor_text_entries = @data.delete :flavor_text_entries
|
24
|
+
@color_name = @data[:color][:name]
|
25
|
+
end
|
26
|
+
|
27
|
+
def parse
|
28
|
+
{
|
29
|
+
id: @data[:id],
|
30
|
+
color_name: @color_name,
|
31
|
+
color_hex: HEX_COLORS[@color_name.to_sym],
|
32
|
+
shape: @data[:shape][:name],
|
33
|
+
pokedex_entry: english_pokedex_entry,
|
34
|
+
evolution_chain_id: @data[:evolution_chain][:url].split("/").last,
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def english_pokedex_entry
|
41
|
+
flavor_text = @flavor_text_entries.find { |entry| entry[:language][:name] == "en" } || @flavor_text_entries.first
|
42
|
+
flavor_text[:flavor_text]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/pokeapi/pokemon.rb
CHANGED
@@ -7,6 +7,8 @@ module PokeAPI
|
|
7
7
|
property :types, coerce: Array[Type]
|
8
8
|
property :stats, coerce: Array[Stat]
|
9
9
|
property :thumbnail
|
10
|
+
property :animated_thumbnail
|
11
|
+
property :species_id
|
10
12
|
|
11
13
|
class << self
|
12
14
|
def find(id)
|
@@ -14,5 +16,12 @@ module PokeAPI
|
|
14
16
|
new response
|
15
17
|
end
|
16
18
|
end
|
19
|
+
|
20
|
+
def species
|
21
|
+
@species ||= begin
|
22
|
+
response = Requester.species(species_id)
|
23
|
+
Species.new response
|
24
|
+
end
|
25
|
+
end
|
17
26
|
end
|
18
27
|
end
|
data/lib/pokeapi/requester.rb
CHANGED
@@ -5,8 +5,10 @@ module PokeAPI
|
|
5
5
|
NotFoundError = Class.new(StandardError)
|
6
6
|
TimeoutError = Class.new(StandardError)
|
7
7
|
|
8
|
-
API_ENDPOINT
|
9
|
-
POKEMON_ENDPOINT
|
8
|
+
API_ENDPOINT = "https://pokeapi.co/api/v2/"
|
9
|
+
POKEMON_ENDPOINT = "pokemon/"
|
10
|
+
POKEMON_SPECIES_ENDPOINT = "pokemon-species/"
|
11
|
+
EVOLUTION_CHAIN_ENDPOINT = "evolution-chain/"
|
10
12
|
|
11
13
|
class << self
|
12
14
|
def pokemon(id)
|
@@ -14,6 +16,16 @@ module PokeAPI
|
|
14
16
|
Parser::Pokemon.parse(data)
|
15
17
|
end
|
16
18
|
|
19
|
+
def species(id)
|
20
|
+
data = get("#{POKEMON_SPECIES_ENDPOINT}#{id}")
|
21
|
+
Parser::Species.parse(data)
|
22
|
+
end
|
23
|
+
|
24
|
+
def evolution_chain(id)
|
25
|
+
data = get("#{EVOLUTION_CHAIN_ENDPOINT}#{id}")
|
26
|
+
Parser::EvolutionChain.parse(data)
|
27
|
+
end
|
28
|
+
|
17
29
|
def get(path)
|
18
30
|
http = HTTP.get("#{API_ENDPOINT}#{path}/")
|
19
31
|
fail NotFoundError if http.code == 404
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module PokeAPI
|
2
|
+
class Species < Base
|
3
|
+
property :id
|
4
|
+
property :color_name
|
5
|
+
property :color_hex
|
6
|
+
property :shape
|
7
|
+
property :pokedex_entry
|
8
|
+
property :evolution_chain_id
|
9
|
+
|
10
|
+
def evolution_chain
|
11
|
+
@evolution_chain ||= begin
|
12
|
+
response = Requester.evolution_chain(evolution_chain_id)
|
13
|
+
EvolutionChain.new(response)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
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.3.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-
|
11
|
+
date: 2016-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http
|
@@ -101,10 +101,17 @@ files:
|
|
101
101
|
- lib/pokeapi.rb
|
102
102
|
- lib/pokeapi/ability.rb
|
103
103
|
- lib/pokeapi/base.rb
|
104
|
+
- lib/pokeapi/chain.rb
|
105
|
+
- lib/pokeapi/evolution_chain.rb
|
106
|
+
- lib/pokeapi/evolution_details.rb
|
104
107
|
- lib/pokeapi/move.rb
|
108
|
+
- lib/pokeapi/parser/evolution_chain.rb
|
109
|
+
- lib/pokeapi/parser/evolution_details.rb
|
105
110
|
- lib/pokeapi/parser/pokemon.rb
|
111
|
+
- lib/pokeapi/parser/species.rb
|
106
112
|
- lib/pokeapi/pokemon.rb
|
107
113
|
- lib/pokeapi/requester.rb
|
114
|
+
- lib/pokeapi/species.rb
|
108
115
|
- lib/pokeapi/stat.rb
|
109
116
|
- lib/pokeapi/type.rb
|
110
117
|
- lib/pokeapi/version.rb
|