unchained 0.0.0 → 0.0.1
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/unchained.rb +5 -0
- data/lib/unchained/client.rb +9 -3
- data/lib/unchained/client/archetypes.rb +2 -4
- data/lib/unchained/client/factions.rb +21 -0
- data/lib/unchained/client/mixins/resource.rb +43 -0
- data/lib/unchained/client/patcher.rb +36 -0
- data/lib/unchained/client/races.rb +21 -0
- data/lib/unchained/client/servers.rb +2 -4
- data/lib/unchained/error.rb +2 -0
- data/lib/unchained/request.rb +39 -0
- data/lib/unchained/version.rb +1 -1
- metadata +6 -3
- data/lib/unchained/client/request.rb +0 -33
- data/lib/unchained/client/resource.rb +0 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d440ea525f7c18793f4604906a9c1eb098e70b87
|
4
|
+
data.tar.gz: 1d5c9f43267ca976c652ffb615a8d12d5e315a5b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1acaf1d610b637280ddf66f456b54e70acf1833307840c0f1142e3d83c6f1e97c8165fc3210841bcd22cf2b1308feed77eedb8d96ce1766de99a8d251a6cb002
|
7
|
+
data.tar.gz: ef53adfdcc531a92902ac9913bcb24599edfdaaa8c245884226eb26dd0f146056777d068fb6f8b4bc160be49ec85d55df760004df4aeea067a45af26f9e85c10
|
data/lib/unchained.rb
CHANGED
data/lib/unchained/client.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
require_relative 'configuration'
|
2
|
-
require_relative '
|
3
|
-
require_relative 'client/request'
|
2
|
+
require_relative 'request'
|
4
3
|
|
5
4
|
# RESOURCES
|
5
|
+
require_relative 'client/mixins/resource'
|
6
6
|
require_relative 'client/archetypes'
|
7
|
+
require_relative 'client/factions'
|
8
|
+
require_relative 'client/races'
|
9
|
+
require_relative 'client/patcher'
|
7
10
|
require_relative 'client/servers'
|
8
11
|
|
9
12
|
module Unchained
|
@@ -21,10 +24,13 @@ module Unchained
|
|
21
24
|
'http://api.camelotunchained.com/v1'
|
22
25
|
end
|
23
26
|
|
24
|
-
include Unchained::
|
27
|
+
include Unchained::Request
|
25
28
|
|
26
29
|
# RESOURCES
|
27
30
|
include Unchained::Client::Archetypes
|
31
|
+
include Unchained::Client::Factions
|
32
|
+
include Unchained::Client::Races
|
33
|
+
include Unchained::Client::Patcher
|
28
34
|
include Unchained::Client::Servers
|
29
35
|
end
|
30
36
|
end
|
@@ -3,7 +3,7 @@ module Unchained
|
|
3
3
|
module Archetypes
|
4
4
|
|
5
5
|
class Archetype
|
6
|
-
include Unchained::Client::Resource
|
6
|
+
include Unchained::Client::Mixins::Resource
|
7
7
|
resource({
|
8
8
|
:description => 'description',
|
9
9
|
:faction => 'faction',
|
@@ -13,9 +13,7 @@ module Unchained
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def archetypes(opts={})
|
16
|
-
|
17
|
-
Archetype.decode_result(server)
|
18
|
-
end
|
16
|
+
get_resources("#{base_url}/gamedata/archetypes", Archetype, opts)
|
19
17
|
end
|
20
18
|
|
21
19
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Unchained
|
2
|
+
class Client
|
3
|
+
module Factions
|
4
|
+
|
5
|
+
class Faction
|
6
|
+
include Unchained::Client::Mixins::Resource
|
7
|
+
resource({
|
8
|
+
:description => 'description',
|
9
|
+
:id => 'id',
|
10
|
+
:name => 'name',
|
11
|
+
:short_name => 'shortName',
|
12
|
+
})
|
13
|
+
end
|
14
|
+
|
15
|
+
def factions(opts={})
|
16
|
+
get_resources("#{base_url}/gamedata/factions", Faction, opts)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Unchained
|
2
|
+
class Client
|
3
|
+
module Mixins
|
4
|
+
module Resource
|
5
|
+
def self.included(base)
|
6
|
+
base.extend ClassMethods
|
7
|
+
end
|
8
|
+
|
9
|
+
def to_s
|
10
|
+
attributes = self.class::JSON_MAP.map{|k,_| "#{k}=#{self.send(k)}"}.join(" ")
|
11
|
+
"[#{self.class_name}] #{attributes}"
|
12
|
+
end
|
13
|
+
|
14
|
+
# Lurk, is there not a better way to do this?
|
15
|
+
def class_name
|
16
|
+
self.class.name.split('::').last
|
17
|
+
end
|
18
|
+
|
19
|
+
module ClassMethods
|
20
|
+
JSON_MAP = {}
|
21
|
+
|
22
|
+
def resource(json_map)
|
23
|
+
instance_eval do
|
24
|
+
const_set("JSON_MAP", json_map)
|
25
|
+
end
|
26
|
+
|
27
|
+
class_eval do
|
28
|
+
attr_accessor(*json_map.keys)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def decode_result(json)
|
33
|
+
instance = self.new
|
34
|
+
self::JSON_MAP.each do |k,v|
|
35
|
+
instance.send("#{k}=", json[v])
|
36
|
+
end
|
37
|
+
instance
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Unchained
|
2
|
+
class Client
|
3
|
+
module Patcher
|
4
|
+
|
5
|
+
class HeroContent
|
6
|
+
include Unchained::Client::Mixins::Resource
|
7
|
+
resource({
|
8
|
+
:id => 'id',
|
9
|
+
:content => 'content',
|
10
|
+
:priority => 'priority',
|
11
|
+
:start => 'utcDateStart',
|
12
|
+
:end => 'utcDateEnd',
|
13
|
+
})
|
14
|
+
end
|
15
|
+
|
16
|
+
class Alert
|
17
|
+
include Unchained::Client::Mixins::Resource
|
18
|
+
resource({
|
19
|
+
:id => 'id',
|
20
|
+
:message => 'message',
|
21
|
+
:start => 'utcDateStart',
|
22
|
+
:end => 'utcDateEnd',
|
23
|
+
})
|
24
|
+
end
|
25
|
+
|
26
|
+
def patcher_hero_contents(opts={})
|
27
|
+
get_resources("#{base_url}/patcherherocontent", HeroContent, opts)
|
28
|
+
end
|
29
|
+
|
30
|
+
def patcher_alerts(opts={})
|
31
|
+
get_resources("#{base_url}/patcheralerts", Alert, opts)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Unchained
|
2
|
+
class Client
|
3
|
+
module Races
|
4
|
+
|
5
|
+
class Race
|
6
|
+
include Unchained::Client::Mixins::Resource
|
7
|
+
resource({
|
8
|
+
:description => 'description',
|
9
|
+
:faction => 'faction',
|
10
|
+
:id => 'id',
|
11
|
+
:name => 'name',
|
12
|
+
})
|
13
|
+
end
|
14
|
+
|
15
|
+
def races(opts={})
|
16
|
+
get_resources("#{base_url}/gamedata/races", Race, opts)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -3,7 +3,7 @@ module Unchained
|
|
3
3
|
module Servers
|
4
4
|
|
5
5
|
class Server
|
6
|
-
include Unchained::Client::Resource
|
6
|
+
include Unchained::Client::Mixins::Resource
|
7
7
|
resource({
|
8
8
|
:access_level => 'accessLevel',
|
9
9
|
:channel_id => 'channelID',
|
@@ -15,9 +15,7 @@ module Unchained
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def servers(opts={})
|
18
|
-
|
19
|
-
Server.decode_result(server)
|
20
|
-
end
|
18
|
+
get_resources("#{base_url}/servers", Server, opts)
|
21
19
|
end
|
22
20
|
|
23
21
|
end
|
data/lib/unchained/error.rb
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'rest-client'
|
2
|
+
|
3
|
+
module Unchained
|
4
|
+
module Request
|
5
|
+
|
6
|
+
def get(url, params={})
|
7
|
+
RestClient.get(url, build_params(params)) do |resp, req, res, &block|
|
8
|
+
case resp.code
|
9
|
+
when 200
|
10
|
+
JSON.parse(resp)
|
11
|
+
when 404
|
12
|
+
raise Unchained::NotFound.new(res.message)
|
13
|
+
else
|
14
|
+
resp.return!(req, res, &block)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def get_resources(url, resource_class, params={})
|
20
|
+
get(url, params).map do |result|
|
21
|
+
resource_class.decode_result(result)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def default_params
|
28
|
+
{
|
29
|
+
loginToken: login_token,
|
30
|
+
accept: :json,
|
31
|
+
}
|
32
|
+
end
|
33
|
+
|
34
|
+
def build_params(params)
|
35
|
+
default_params.merge(params)
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
data/lib/unchained/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unchained
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Thorp
|
@@ -79,11 +79,14 @@ files:
|
|
79
79
|
- lib/unchained.rb
|
80
80
|
- lib/unchained/client.rb
|
81
81
|
- lib/unchained/client/archetypes.rb
|
82
|
-
- lib/unchained/client/
|
83
|
-
- lib/unchained/client/resource.rb
|
82
|
+
- lib/unchained/client/factions.rb
|
83
|
+
- lib/unchained/client/mixins/resource.rb
|
84
|
+
- lib/unchained/client/patcher.rb
|
85
|
+
- lib/unchained/client/races.rb
|
84
86
|
- lib/unchained/client/servers.rb
|
85
87
|
- lib/unchained/configuration.rb
|
86
88
|
- lib/unchained/error.rb
|
89
|
+
- lib/unchained/request.rb
|
87
90
|
- lib/unchained/version.rb
|
88
91
|
- test/test_helper.rb
|
89
92
|
- test/unchained/client_test.rb
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'rest-client'
|
2
|
-
|
3
|
-
module Unchained
|
4
|
-
class Client
|
5
|
-
module Request
|
6
|
-
|
7
|
-
def get(url, params={})
|
8
|
-
RestClient.get(url, build_params(params)) do |resp, req, res, &block|
|
9
|
-
case resp.code
|
10
|
-
when 200
|
11
|
-
JSON.parse(resp)
|
12
|
-
else
|
13
|
-
resp.return!(req, res, &block)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
private
|
19
|
-
|
20
|
-
def default_params
|
21
|
-
{
|
22
|
-
loginToken: login_token,
|
23
|
-
accept: :json,
|
24
|
-
}
|
25
|
-
end
|
26
|
-
|
27
|
-
def build_params(params)
|
28
|
-
default_params.merge(params)
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
module Unchained
|
2
|
-
class Client
|
3
|
-
module Resource
|
4
|
-
def self.included(base)
|
5
|
-
base.extend ClassMethods
|
6
|
-
end
|
7
|
-
|
8
|
-
def to_s
|
9
|
-
attributes = self.class::JSON_MAP.map{|k,_| "#{k}=#{self.send(k)}"}.join(" ")
|
10
|
-
"[#{self.class_name}] #{attributes}"
|
11
|
-
end
|
12
|
-
|
13
|
-
# Lurk, is there not a better way to do this?
|
14
|
-
def class_name
|
15
|
-
self.class.name.split('::').last
|
16
|
-
end
|
17
|
-
|
18
|
-
module ClassMethods
|
19
|
-
JSON_MAP = {}
|
20
|
-
|
21
|
-
def resource(json_map)
|
22
|
-
instance_eval do
|
23
|
-
const_set("JSON_MAP", json_map)
|
24
|
-
end
|
25
|
-
|
26
|
-
class_eval do
|
27
|
-
attr_accessor(*json_map.keys)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def decode_result(json)
|
32
|
-
instance = self.new
|
33
|
-
self::JSON_MAP.each do |k,v|
|
34
|
-
instance.send("#{k}=", json[v])
|
35
|
-
end
|
36
|
-
instance
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|