unchained 0.0.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 +7 -0
- data/LICENSE.md +0 -0
- data/README.md +0 -0
- data/lib/unchained.rb +8 -0
- data/lib/unchained/client.rb +30 -0
- data/lib/unchained/client/archetypes.rb +23 -0
- data/lib/unchained/client/request.rb +33 -0
- data/lib/unchained/client/resource.rb +41 -0
- data/lib/unchained/client/servers.rb +25 -0
- data/lib/unchained/configuration.rb +24 -0
- data/lib/unchained/error.rb +5 -0
- data/lib/unchained/version.rb +3 -0
- data/test/test_helper.rb +3 -0
- data/test/unchained/client_test.rb +9 -0
- data/test/unchained_test.rb +0 -0
- data/unchained.gemspec +31 -0
- metadata +120 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ecc40d0b265fc59cbb8bad8b365911f5799d2840
|
4
|
+
data.tar.gz: 253ee458048eeaf99cc41c723e6e5f11695e703c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6d225ace000ab683fc29f9fb604bdc70cf5a0ebae75e08680f1b0cdfebe2c3faa463014a80a4a82cc9ca726f3aa0612f0c27ca31610adb81c505b29116cba817
|
7
|
+
data.tar.gz: 234e2735c40631bfdc08d3d0f439f9b3db692534829985eb1b767a7111531cdd794913762e8ade37ab1b8d62ea1425db2f3e95179f26e6d610911ab48869e03c
|
data/LICENSE.md
ADDED
File without changes
|
data/README.md
ADDED
File without changes
|
data/lib/unchained.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require_relative 'configuration'
|
2
|
+
require_relative 'client/resource'
|
3
|
+
require_relative 'client/request'
|
4
|
+
|
5
|
+
# RESOURCES
|
6
|
+
require_relative 'client/archetypes'
|
7
|
+
require_relative 'client/servers'
|
8
|
+
|
9
|
+
module Unchained
|
10
|
+
class Client
|
11
|
+
attr_accessor(*Unchained::Configuration::KEYS)
|
12
|
+
|
13
|
+
def initialize(opts={})
|
14
|
+
config = Unchained.configuration.merge(opts)
|
15
|
+
Unchained::Configuration::KEYS.each do |key|
|
16
|
+
send("#{key}=", config[key])
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def base_url
|
21
|
+
'http://api.camelotunchained.com/v1'
|
22
|
+
end
|
23
|
+
|
24
|
+
include Unchained::Client::Request
|
25
|
+
|
26
|
+
# RESOURCES
|
27
|
+
include Unchained::Client::Archetypes
|
28
|
+
include Unchained::Client::Servers
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Unchained
|
2
|
+
class Client
|
3
|
+
module Archetypes
|
4
|
+
|
5
|
+
class Archetype
|
6
|
+
include Unchained::Client::Resource
|
7
|
+
resource({
|
8
|
+
:description => 'description',
|
9
|
+
:faction => 'faction',
|
10
|
+
:id => 'id',
|
11
|
+
:name => 'name',
|
12
|
+
})
|
13
|
+
end
|
14
|
+
|
15
|
+
def archetypes(opts={})
|
16
|
+
get("#{base_url}/gamedata/archetypes", opts).map do |server|
|
17
|
+
Archetype.decode_result(server)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,33 @@
|
|
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
|
@@ -0,0 +1,41 @@
|
|
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
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Unchained
|
2
|
+
class Client
|
3
|
+
module Servers
|
4
|
+
|
5
|
+
class Server
|
6
|
+
include Unchained::Client::Resource
|
7
|
+
resource({
|
8
|
+
:access_level => 'accessLevel',
|
9
|
+
:channel_id => 'channelID',
|
10
|
+
:host => 'host',
|
11
|
+
:name => 'name',
|
12
|
+
:player_maximum => 'playerMaximum',
|
13
|
+
:shard_id => 'shardID',
|
14
|
+
})
|
15
|
+
end
|
16
|
+
|
17
|
+
def servers(opts={})
|
18
|
+
get("#{base_url}/servers", opts).map do |server|
|
19
|
+
Server.decode_result(server)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Unchained
|
2
|
+
module Configuration
|
3
|
+
|
4
|
+
KEYS = [:login_token]
|
5
|
+
attr_accessor(*KEYS)
|
6
|
+
|
7
|
+
def self.extended(base)
|
8
|
+
base.reset!
|
9
|
+
end
|
10
|
+
|
11
|
+
def configure
|
12
|
+
yield self
|
13
|
+
end
|
14
|
+
|
15
|
+
def configuration
|
16
|
+
KEYS.inject({}){|o,k| o.merge!(k => send(k)) }
|
17
|
+
end
|
18
|
+
|
19
|
+
def reset!
|
20
|
+
self.login_token = nil
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
data/test/test_helper.rb
ADDED
File without changes
|
data/unchained.gemspec
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'unchained/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'unchained'
|
7
|
+
s.version = Unchained::VERSION.dup
|
8
|
+
|
9
|
+
s.author = 'Andrew Thorp'
|
10
|
+
s.email = 'andrewpthorp@gmail.com'
|
11
|
+
s.homepage = 'http://github.com/andrewpthorp/unchained'
|
12
|
+
|
13
|
+
s.license = 'MIT'
|
14
|
+
s.summary = "Client library for Camelot Unchained API."
|
15
|
+
s.description = <<-DESC
|
16
|
+
A gem that lets you call into the Camelot Unchained API. You can see the API
|
17
|
+
docs at https://api.camelotunchained.com
|
18
|
+
DESC
|
19
|
+
|
20
|
+
s.files = %w(LICENSE.md README.md unchained.gemspec)
|
21
|
+
s.files += Dir.glob("lib/**/*.rb")
|
22
|
+
s.files += Dir.glob("test/**/*")
|
23
|
+
|
24
|
+
s.test_files = Dir.glob("test/**/*")
|
25
|
+
s.require_paths = ["lib"]
|
26
|
+
|
27
|
+
s.add_development_dependency 'rake', '~> 11.0'
|
28
|
+
s.add_development_dependency 'minitest', '~> 5.8'
|
29
|
+
s.add_dependency 'pry', '~> 0.10'
|
30
|
+
s.add_dependency 'rest-client', '~> 1.8'
|
31
|
+
end
|
metadata
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: unchained
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Andrew Thorp
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-04-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '11.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '11.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '5.8'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '5.8'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.10'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.10'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rest-client
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.8'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.8'
|
69
|
+
description: |2
|
70
|
+
A gem that lets you call into the Camelot Unchained API. You can see the API
|
71
|
+
docs at https://api.camelotunchained.com
|
72
|
+
email: andrewpthorp@gmail.com
|
73
|
+
executables: []
|
74
|
+
extensions: []
|
75
|
+
extra_rdoc_files: []
|
76
|
+
files:
|
77
|
+
- LICENSE.md
|
78
|
+
- README.md
|
79
|
+
- lib/unchained.rb
|
80
|
+
- lib/unchained/client.rb
|
81
|
+
- lib/unchained/client/archetypes.rb
|
82
|
+
- lib/unchained/client/request.rb
|
83
|
+
- lib/unchained/client/resource.rb
|
84
|
+
- lib/unchained/client/servers.rb
|
85
|
+
- lib/unchained/configuration.rb
|
86
|
+
- lib/unchained/error.rb
|
87
|
+
- lib/unchained/version.rb
|
88
|
+
- test/test_helper.rb
|
89
|
+
- test/unchained/client_test.rb
|
90
|
+
- test/unchained_test.rb
|
91
|
+
- unchained.gemspec
|
92
|
+
homepage: http://github.com/andrewpthorp/unchained
|
93
|
+
licenses:
|
94
|
+
- MIT
|
95
|
+
metadata: {}
|
96
|
+
post_install_message:
|
97
|
+
rdoc_options: []
|
98
|
+
require_paths:
|
99
|
+
- lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
requirements: []
|
111
|
+
rubyforge_project:
|
112
|
+
rubygems_version: 2.2.2
|
113
|
+
signing_key:
|
114
|
+
specification_version: 4
|
115
|
+
summary: Client library for Camelot Unchained API.
|
116
|
+
test_files:
|
117
|
+
- test/test_helper.rb
|
118
|
+
- test/unchained/client_test.rb
|
119
|
+
- test/unchained_test.rb
|
120
|
+
has_rdoc:
|