unchained 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
File without changes
File without changes
@@ -0,0 +1,8 @@
1
+ require_relative 'unchained/client'
2
+ require_relative 'unchained/configuration'
3
+ require_relative 'unchained/error'
4
+
5
+ module Unchained
6
+ extend Configuration
7
+ end
8
+
@@ -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
@@ -0,0 +1,5 @@
1
+ module Unchained
2
+
3
+ class Error < StandardError; end
4
+
5
+ end
@@ -0,0 +1,3 @@
1
+ module Unchained
2
+ VERSION = '0.0.0'.freeze
3
+ end
@@ -0,0 +1,3 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'unchained'
3
+ require 'minitest/autorun'
@@ -0,0 +1,9 @@
1
+ require_relative '../test_helper'
2
+
3
+ describe Unchained::Client do
4
+
5
+ it 'should do a thing' do
6
+ skip 'Not implemented'
7
+ end
8
+
9
+ end
File without changes
@@ -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: