godville_kit 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/godville_kit.rb +1 -0
- data/lib/godville_kit/api_requester.rb +77 -0
- data/lib/godville_kit/diary_entry.rb +11 -0
- data/lib/godville_kit/equipment.rb +21 -0
- data/lib/godville_kit/gear.rb +11 -0
- data/lib/godville_kit/hero.rb +106 -0
- data/lib/godville_kit/initialize.rb +4 -0
- data/lib/godville_kit/item.rb +18 -0
- data/lib/godville_kit/pantheons.rb +47 -0
- data/lib/godville_kit/skill.rb +13 -0
- data/lib/godville_kit/version.rb +3 -0
- data/spec/godville_kit/api_requester_spec.rb +53 -0
- data/spec/godville_kit/hero_spec.rb +49 -0
- data/spec/godville_kit/pantheons_spec.rb +25 -0
- metadata +60 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9c27965def16332d0f30147863804dd8dc70341d
|
4
|
+
data.tar.gz: d2691ac5187e3be0babd1afcba48c92d310f66ba
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 67d666fdf8fd2f22044d56775496e40b4766cf4cd2144ec0daba6500e62f125aab9b63d4037d4ce5b9cdd5ab89631408703b9fe539c187707faa24f51d90f9bc
|
7
|
+
data.tar.gz: 68a204eea2a2d77b198c1721e941d5a56aeed9650107556885db8d447d4965508233eec93fb699d6f52a2894d98f2950992de508997072da5c62de50f5b35be7
|
data/lib/godville_kit.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'godville_kit/initialize'
|
@@ -0,0 +1,77 @@
|
|
1
|
+
module GodvilleKit
|
2
|
+
class APIRequester
|
3
|
+
attr_reader :username,
|
4
|
+
:password,
|
5
|
+
:hero_guid,
|
6
|
+
:pantheons_guid
|
7
|
+
|
8
|
+
class UnexpectedResponseException < StandardError; end
|
9
|
+
class InvalidAuthenticationException < StandardError; end
|
10
|
+
class AuthenticationCaptchaException < StandardError; end
|
11
|
+
|
12
|
+
def initialize(username, password, hero_guid, pantheons_guid)
|
13
|
+
@username = username
|
14
|
+
@password = password
|
15
|
+
@hero_guid = hero_guid
|
16
|
+
@pantheons_guid = pantheons_guid
|
17
|
+
end
|
18
|
+
|
19
|
+
def request_hero
|
20
|
+
authenticate
|
21
|
+
GodvilleKit::Hero.new(request_raw_hero_data, request_raw_pantheons_data)
|
22
|
+
end
|
23
|
+
|
24
|
+
def authenticate
|
25
|
+
return if authenticated?
|
26
|
+
|
27
|
+
RestClient.post(
|
28
|
+
'https://godvillegame.com/login/login',
|
29
|
+
{ username: @username,
|
30
|
+
password: @password },
|
31
|
+
content_type: :json, accept: :json
|
32
|
+
)do |response, request, result, &block|
|
33
|
+
case response.code
|
34
|
+
when 302
|
35
|
+
@cookies = response.cookies
|
36
|
+
when 200
|
37
|
+
if response.to_s.include? 'captcha'
|
38
|
+
raise AuthenticationCaptchaException, 'Too many failed logins, manual login required due to captcha'
|
39
|
+
else
|
40
|
+
raise InvalidAuthenticationException, 'Invalid Username/Password'
|
41
|
+
end
|
42
|
+
else
|
43
|
+
raise UnexpectedResponseCodeException, "Unexpected response code #{response.code}"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
rescue => e
|
47
|
+
@cookies = nil
|
48
|
+
puts e.message
|
49
|
+
end
|
50
|
+
|
51
|
+
def authenticated?
|
52
|
+
!@cookies.nil?
|
53
|
+
end
|
54
|
+
|
55
|
+
# Request the raw hero data from godville
|
56
|
+
def request_raw_hero_data
|
57
|
+
return unless authenticated?
|
58
|
+
|
59
|
+
response = RestClient.get(
|
60
|
+
"https://godvillegame.com/fbh/feed?a=#{@hero_guid}",
|
61
|
+
cookies: @cookies, content_type: :json, accept: :json
|
62
|
+
)
|
63
|
+
JSON.parse(response)
|
64
|
+
end
|
65
|
+
|
66
|
+
# Request the raw pantheons data from godville
|
67
|
+
def request_raw_pantheons_data
|
68
|
+
return unless authenticated?
|
69
|
+
|
70
|
+
response = RestClient.get(
|
71
|
+
"https://godvillegame.com/fbh/feed?a=#{@pantheons_guid}",
|
72
|
+
cookies: @cookies, content_type: :json, accept: :json
|
73
|
+
)
|
74
|
+
JSON.parse(response)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module GodvilleKit
|
2
|
+
class Equipment
|
3
|
+
attr_reader :weapon,
|
4
|
+
:shield,
|
5
|
+
:head,
|
6
|
+
:body,
|
7
|
+
:arms,
|
8
|
+
:legs,
|
9
|
+
:tailsman
|
10
|
+
|
11
|
+
def initialize(raw_equipment_data)
|
12
|
+
@weapon = GodvilleKit::Gear.new(raw_equipment_data['weapon'])
|
13
|
+
@shield = GodvilleKit::Gear.new(raw_equipment_data['shield'])
|
14
|
+
@head = GodvilleKit::Gear.new(raw_equipment_data['head'])
|
15
|
+
@body = GodvilleKit::Gear.new(raw_equipment_data['body'])
|
16
|
+
@arms = GodvilleKit::Gear.new(raw_equipment_data['arms'])
|
17
|
+
@legs = GodvilleKit::Gear.new(raw_equipment_data['legs'])
|
18
|
+
@talisman = GodvilleKit::Gear.new(raw_equipment_data['talisman'])
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
module GodvilleKit
|
2
|
+
class Hero
|
3
|
+
attr_reader :name,
|
4
|
+
:god_name,
|
5
|
+
:level,
|
6
|
+
:quest,
|
7
|
+
:quest_progress,
|
8
|
+
:exp_progress,
|
9
|
+
:health,
|
10
|
+
:max_health,
|
11
|
+
:alignment,
|
12
|
+
:motto,
|
13
|
+
:guild,
|
14
|
+
:guild_rank,
|
15
|
+
:ark,
|
16
|
+
:temple_completed_at,
|
17
|
+
:ark_completed_at,
|
18
|
+
:town,
|
19
|
+
:next_town,
|
20
|
+
:distance,
|
21
|
+
:bricks,
|
22
|
+
:wood,
|
23
|
+
:god_power,
|
24
|
+
:gold,
|
25
|
+
:monsters_killed,
|
26
|
+
:deaths,
|
27
|
+
:arena_wins,
|
28
|
+
:arena_losses,
|
29
|
+
:approximate_age,
|
30
|
+
:birthday,
|
31
|
+
:accumulator,
|
32
|
+
:quests_completed,
|
33
|
+
:monster_name,
|
34
|
+
:monster_progress,
|
35
|
+
:aura_name,
|
36
|
+
:aura_time,
|
37
|
+
:max_inventory,
|
38
|
+
:inventory,
|
39
|
+
:pantheons,
|
40
|
+
:equipment,
|
41
|
+
:skills,
|
42
|
+
:diary
|
43
|
+
|
44
|
+
def initialize(raw_hero_data, raw_pantheons_data)
|
45
|
+
if raw_hero_data
|
46
|
+
@name = raw_hero_data['hero']['name'].to_s
|
47
|
+
@god_name = raw_hero_data['hero']['godname'].to_s
|
48
|
+
@level = raw_hero_data['hero']['level'].to_s
|
49
|
+
@quest = raw_hero_data['hero']['quest'].to_s
|
50
|
+
@quest_progress = raw_hero_data['hero']['quest_progress'].to_s
|
51
|
+
@exp_progress = raw_hero_data['hero']['exp_progress'].to_s
|
52
|
+
@health = raw_hero_data['hero']['health'].to_s
|
53
|
+
@max_health = raw_hero_data['hero']['max_health'].to_s
|
54
|
+
@alignment = raw_hero_data['hero']['alignment'].to_s
|
55
|
+
@motto = raw_hero_data['hero']['motto'].to_s
|
56
|
+
@guild = raw_hero_data['hero']['clan'].to_s
|
57
|
+
@guild_rank = raw_hero_data['hero']['clan_position'].to_s
|
58
|
+
@temple_completed_at = raw_hero_data['hero']['temple_completed_at'].to_s
|
59
|
+
@ark_completed_at = raw_hero_data['hero']['ark_completed_at'].to_s
|
60
|
+
@town = raw_hero_data['hero']['town_name'].to_s
|
61
|
+
@next_town = raw_hero_data['hero']['c_town'].to_s
|
62
|
+
@distance = raw_hero_data['hero']['distance'].to_s
|
63
|
+
@bricks = raw_hero_data['hero']['bricks_cnt'].to_s
|
64
|
+
@wood = raw_hero_data['hero']['wood'].to_s
|
65
|
+
@god_power = raw_hero_data['hero']['godpower'].to_s
|
66
|
+
@gold = raw_hero_data['hero']['gold'].to_s
|
67
|
+
@monsters_killed = raw_hero_data['hero']['monsters_killed'].to_s
|
68
|
+
@deaths = raw_hero_data['hero']['death_count'].to_s
|
69
|
+
@arena_wins = raw_hero_data['hero']['arena_won'].to_s
|
70
|
+
@arena_losses = raw_hero_data['hero']['arena_lost'].to_s
|
71
|
+
@approximate_age = raw_hero_data['hero']['age_str'].to_s
|
72
|
+
@birthday = raw_hero_data['hero']['birthday'].to_s
|
73
|
+
@accumulator = raw_hero_data['hero']['accumulator'].to_s
|
74
|
+
@quests_completed = raw_hero_data['hero']['quests_completed'].to_s
|
75
|
+
@monster_name = raw_hero_data['hero']['monster_name'].to_s
|
76
|
+
@monster_progress = raw_hero_data['hero']['monster_progress'].to_s
|
77
|
+
@aura_name = raw_hero_data['hero']['aura_name'].to_s
|
78
|
+
@aura_time = raw_hero_data['hero']['aura_time'].to_s
|
79
|
+
@max_inventory = raw_hero_data['hero']['inventory_max_num'].to_s
|
80
|
+
|
81
|
+
# Inventory
|
82
|
+
@inventory = raw_hero_data['inventory'].keys.map do |key|
|
83
|
+
GodvilleKit::Item.new(key, raw_hero_data['inventory'][key].to_s)
|
84
|
+
end
|
85
|
+
|
86
|
+
# Equipment
|
87
|
+
@equipment = GodvilleKit::Equipment.new(raw_hero_data['equipment'])
|
88
|
+
|
89
|
+
# Skils
|
90
|
+
@skills = raw_hero_data['skills'].map do |raw_skill_data|
|
91
|
+
GodvilleKit::Skill.new(raw_skill_data)
|
92
|
+
end
|
93
|
+
|
94
|
+
# Diary
|
95
|
+
@diary = raw_hero_data['diary'].map do |raw_diary_entry_data|
|
96
|
+
GodvilleKit::DiaryEntry.new(raw_diary_entry_data)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
# Pantheons
|
101
|
+
if raw_pantheons_data
|
102
|
+
@pantheons = GodvilleKit::Pantheons.new(raw_pantheons_data)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module GodvilleKit
|
2
|
+
class Item
|
3
|
+
attr_reader :name,
|
4
|
+
:activate_by_use,
|
5
|
+
:god_power_required,
|
6
|
+
:description,
|
7
|
+
:type
|
8
|
+
|
9
|
+
def initialize(name, raw_item_data)
|
10
|
+
@name = name
|
11
|
+
|
12
|
+
@activate_by_use = raw_item_data['activate_by_user'].to_s
|
13
|
+
@god_power_required = raw_item_data['needs_godpower'].to_s
|
14
|
+
@description = raw_item_data['description'].to_s
|
15
|
+
@type = raw_item_data['type'].to_s
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module GodvilleKit
|
2
|
+
class Pantheons
|
3
|
+
attr_reader :gratitude,
|
4
|
+
:might,
|
5
|
+
:templehood,
|
6
|
+
:gladiatorship,
|
7
|
+
:storytelling,
|
8
|
+
:mastery,
|
9
|
+
:construction,
|
10
|
+
:taming,
|
11
|
+
:survival,
|
12
|
+
:savings,
|
13
|
+
:creation,
|
14
|
+
:destruction,
|
15
|
+
:arkeology,
|
16
|
+
:unity,
|
17
|
+
:popularity,
|
18
|
+
:aggressiveness
|
19
|
+
|
20
|
+
def initialize(raw_pantheons_data)
|
21
|
+
pantheon_groups = raw_pantheons_data['groups'].map do |groups|
|
22
|
+
groups['pantheons']
|
23
|
+
end
|
24
|
+
|
25
|
+
pantheon_groups.each do |pantheons|
|
26
|
+
pantheons.each do |pantheon|
|
27
|
+
case pantheon['name'].downcase
|
28
|
+
when 'gratitude' then @gratitude = pantheon['position'].to_s
|
29
|
+
when 'might' then @might = pantheon['position'].to_s
|
30
|
+
when 'templehood' then @templehood = pantheon['position'].to_s
|
31
|
+
when 'gladiatorship' then @gladiatorship = pantheon['position'].to_s
|
32
|
+
when 'storytelling' then @storytelling = pantheon['position'].to_s
|
33
|
+
when 'mastery' then @mastery = pantheon['position'].to_s
|
34
|
+
when 'taming' then @taming = pantheon['position'].to_s
|
35
|
+
when 'survival' then @survival = pantheon['position'].to_s
|
36
|
+
when 'creation' then @creation = pantheon['position'].to_s
|
37
|
+
when 'destruction' then @destruction = pantheon['position'].to_s
|
38
|
+
when 'arkeology' then @arkeology = pantheon['position'].to_s
|
39
|
+
when 'unity' then @unity = pantheon['position'].to_s
|
40
|
+
when 'popularity' then @popularity = pantheon['position'].to_s
|
41
|
+
when 'aggressiveness' then @aggressiveness = pantheon['position'].to_s
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'APIRequester' do
|
4
|
+
subject { GodvilleKit::APIRequester.new(nil, nil, nil, nil) }
|
5
|
+
|
6
|
+
describe '#request_raw_hero_data' do
|
7
|
+
context 'when authenticated' do
|
8
|
+
it 'returns json' do
|
9
|
+
allow(subject).to receive(:authenticated?) { true }
|
10
|
+
allow(RestClient).to receive(:get) { fixture_contents('raw_hero_data.json') }
|
11
|
+
expect(subject.request_raw_hero_data).to be_a(Hash)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'when not authenticated' do
|
16
|
+
it 'returns nil' do
|
17
|
+
allow(subject).to receive(:authenticated?) { false }
|
18
|
+
allow(RestClient).to receive(:get) { fixture_contents('raw_hero_data.json') }
|
19
|
+
expect(subject.request_raw_hero_data).to be_nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#request_raw_pantheons_data' do
|
25
|
+
context 'when authenticated' do
|
26
|
+
it 'returns json' do
|
27
|
+
allow(subject).to receive(:authenticated?) { true }
|
28
|
+
allow(RestClient).to receive(:get) { fixture_contents('raw_pantheons_data.json') }
|
29
|
+
expect(subject.request_raw_pantheons_data).to be_a(Hash)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'when not authenticated' do
|
34
|
+
it 'returns nil' do
|
35
|
+
allow(subject).to receive(:authenticated?) { false }
|
36
|
+
allow(RestClient).to receive(:get) { fixture_contents('raw_pantheons_data.json') }
|
37
|
+
expect(subject.request_raw_pantheons_data).to be_nil
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe '#request_hero' do
|
43
|
+
before do
|
44
|
+
allow(subject).to receive(:authenticate)
|
45
|
+
allow(subject).to receive(:request_raw_hero_data)
|
46
|
+
allow(subject).to receive(:request_raw_pantheons_data)
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'returns valid hero object' do
|
50
|
+
expect(subject.request_hero).to be_a(GodvilleKit::Hero)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Hero' do
|
4
|
+
subject { GodvilleKit::Hero.new(raw_hero_data, raw_pantheons_data) }
|
5
|
+
|
6
|
+
let(:raw_hero_data) { JSON.parse(fixture_contents('raw_hero_data.json')) }
|
7
|
+
let(:raw_pantheons_data) { JSON.parse(fixture_contents('raw_pantheons_data.json')) }
|
8
|
+
|
9
|
+
describe '#new' do
|
10
|
+
it { should be_a(GodvilleKit::Hero) }
|
11
|
+
its(:equipment) { should be_a(GodvilleKit::Equipment) }
|
12
|
+
its('equipment.weapon') { should be_a(GodvilleKit::Gear) }
|
13
|
+
its('inventory.first') { should be_a(GodvilleKit::Item) }
|
14
|
+
its('skills.first') { should be_a(GodvilleKit::Skill) }
|
15
|
+
its('diary.first') { should be_a(GodvilleKit::DiaryEntry) }
|
16
|
+
|
17
|
+
context 'with no raw_hero_data' do
|
18
|
+
let(:raw_hero_data) { nil }
|
19
|
+
|
20
|
+
its(:pantheons) { should be_a(GodvilleKit::Pantheons) }
|
21
|
+
its(:equipment) { should be_nil }
|
22
|
+
its('inventory') { should be_nil }
|
23
|
+
its('skills') { should be_nil }
|
24
|
+
its('diary') { should be_nil }
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'with no raw_pantheons_data' do
|
28
|
+
let(:raw_pantheons_data) { nil }
|
29
|
+
|
30
|
+
its(:pantheons) { should be_nil }
|
31
|
+
its(:equipment) { should be_a(GodvilleKit::Equipment) }
|
32
|
+
its('equipment.weapon') { should be_a(GodvilleKit::Gear) }
|
33
|
+
its('inventory.first') { should be_a(GodvilleKit::Item) }
|
34
|
+
its('skills.first') { should be_a(GodvilleKit::Skill) }
|
35
|
+
its('diary.first') { should be_a(GodvilleKit::DiaryEntry) }
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'with no raw_hero_data and raw_pantheons_data' do
|
39
|
+
let(:raw_hero_data) { nil }
|
40
|
+
let(:raw_pantheons_data) { nil }
|
41
|
+
|
42
|
+
its(:pantheons) { should be_nil }
|
43
|
+
its(:equipment) { should be_nil }
|
44
|
+
its('inventory') { should be_nil }
|
45
|
+
its('skills') { should be_nil }
|
46
|
+
its('diary') { should be_nil }
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Pantheons' do
|
4
|
+
subject { GodvilleKit::Pantheons.new(raw_pantheons_data) }
|
5
|
+
|
6
|
+
let(:raw_pantheons_data) { JSON.parse(fixture_contents('raw_pantheons_data.json')) }
|
7
|
+
|
8
|
+
describe '#new' do
|
9
|
+
it { should be_a(GodvilleKit::Pantheons) }
|
10
|
+
its(:gratitude) { should eq('−') }
|
11
|
+
its(:might) { should eq('−') }
|
12
|
+
its(:templehood) { should eq('−') }
|
13
|
+
its(:gladiatorship) { should eq('−') }
|
14
|
+
its(:storytelling) { should eq('−') }
|
15
|
+
its(:mastery) { should eq('12269') }
|
16
|
+
its(:taming) { should eq('−') }
|
17
|
+
its(:survival) { should eq('2607') }
|
18
|
+
its(:creation) { should eq('163') }
|
19
|
+
its(:destruction) { should eq('−') }
|
20
|
+
its(:arkeology) { should eq('−') }
|
21
|
+
its(:unity) { should eq('2') }
|
22
|
+
its(:popularity) { should eq('4') }
|
23
|
+
its(:aggressiveness) { should eq('2') }
|
24
|
+
end
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: godville_kit
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kevin Jalbert
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-05-09 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: A gem kit to instantiate your hero's state from Godville
|
14
|
+
email:
|
15
|
+
- kevin.j.jalbert@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/godville_kit.rb
|
21
|
+
- lib/godville_kit/api_requester.rb
|
22
|
+
- lib/godville_kit/diary_entry.rb
|
23
|
+
- lib/godville_kit/equipment.rb
|
24
|
+
- lib/godville_kit/gear.rb
|
25
|
+
- lib/godville_kit/hero.rb
|
26
|
+
- lib/godville_kit/initialize.rb
|
27
|
+
- lib/godville_kit/item.rb
|
28
|
+
- lib/godville_kit/pantheons.rb
|
29
|
+
- lib/godville_kit/skill.rb
|
30
|
+
- lib/godville_kit/version.rb
|
31
|
+
- spec/godville_kit/api_requester_spec.rb
|
32
|
+
- spec/godville_kit/hero_spec.rb
|
33
|
+
- spec/godville_kit/pantheons_spec.rb
|
34
|
+
homepage: https://github.com/kevinjalbert/godville_kit
|
35
|
+
licenses: []
|
36
|
+
metadata: {}
|
37
|
+
post_install_message:
|
38
|
+
rdoc_options: []
|
39
|
+
require_paths:
|
40
|
+
- lib
|
41
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.9.3
|
46
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '0'
|
51
|
+
requirements: []
|
52
|
+
rubyforge_project:
|
53
|
+
rubygems_version: 2.2.2
|
54
|
+
signing_key:
|
55
|
+
specification_version: 4
|
56
|
+
summary: A gem kit to instantiate your hero's state from Godville
|
57
|
+
test_files:
|
58
|
+
- spec/godville_kit/api_requester_spec.rb
|
59
|
+
- spec/godville_kit/hero_spec.rb
|
60
|
+
- spec/godville_kit/pantheons_spec.rb
|