dd-api 0.0.2
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/lib/dd-api.rb +7 -0
- data/lib/dd-api/api.rb +51 -0
- data/lib/dd-api/classes.rb +247 -0
- data/lib/dd-api/errors.rb +20 -0
- data/lib/dd-api/init.rb +34 -0
- data/lib/dd-api/version.rb +3 -0
- metadata +121 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 735af5fcc3da32f5a0e0c5b87f45253e70aa279f
|
4
|
+
data.tar.gz: 57e945702c70f0fdd10f8d2e01a62c4508d5c4d2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e5dd4938aec1ff0fda3cf046ad69c57650bd64f36de54d556ed17f147ca4da6b03bbec253aa7e18ae17858a046cda7e6dc0ffc820ea3009a6b4d7a262c3db75b
|
7
|
+
data.tar.gz: 094fb4ce8bed631a638cde92639216fdb1fc7e5d2ca2312f80bcb9fd027f5c81312353f55f5ea499587c25934f876207c1844e7b2578aa213197dcf61db7b4af
|
data/lib/dd-api.rb
ADDED
data/lib/dd-api/api.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'rest-client'
|
2
|
+
|
3
|
+
require 'dd-api/errors'
|
4
|
+
|
5
|
+
# List of methods representing endpoints in Discord Dungeons's API
|
6
|
+
module DDAPI::API
|
7
|
+
# Make an item image URL from the item image
|
8
|
+
def item_url(image)
|
9
|
+
"https://res.discorddungeons.me/images/#{image}"
|
10
|
+
end
|
11
|
+
|
12
|
+
def rget(endpoint, api_key, user_agent)
|
13
|
+
JSON.parse(RestClient.get("http://api.discorddungeons.me/#{endpoint}", :'X-Api-Key' => api_key, :'User-Agent' => user_agent))
|
14
|
+
end
|
15
|
+
|
16
|
+
def get(endpoint, app)
|
17
|
+
JSON.parse(RestClient.get("http://api.discorddungeons.me/#{endpoint}", :'X-Api-Key' => app.api_key, :'User-Agent' => app.user_agent))
|
18
|
+
end
|
19
|
+
|
20
|
+
def get_user(app, id)
|
21
|
+
get('user/'+id.to_s, app)['user']
|
22
|
+
end
|
23
|
+
|
24
|
+
def get_guild(app, id)
|
25
|
+
get('guild/'+id, app)['data']
|
26
|
+
end
|
27
|
+
|
28
|
+
def get_items(app, id)
|
29
|
+
get('item/'+id, app)['data']
|
30
|
+
end
|
31
|
+
|
32
|
+
def get_gitems(app, id)
|
33
|
+
get('gitem/'+id, app)['data']
|
34
|
+
end
|
35
|
+
|
36
|
+
def all_guilds(app)
|
37
|
+
get('all/guilds', app)['data']
|
38
|
+
end
|
39
|
+
|
40
|
+
def all_users(app)
|
41
|
+
get('all/users', app)['data']
|
42
|
+
end
|
43
|
+
|
44
|
+
def all_items(app)
|
45
|
+
get('all/items', app)['data']
|
46
|
+
end
|
47
|
+
|
48
|
+
def all_gitems(app)
|
49
|
+
get('all/gitems', app)['data']
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,247 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'htmlentities'
|
3
|
+
|
4
|
+
require 'dd-api/api'
|
5
|
+
require 'dd-api/init'
|
6
|
+
|
7
|
+
# Objects essential to DRPG
|
8
|
+
module DDAPI
|
9
|
+
# A Class that is bundled with an API key and a User Agent. Base of gem.
|
10
|
+
class App
|
11
|
+
# @return [String] The api key of the instance.
|
12
|
+
attr_accessor :api_key
|
13
|
+
|
14
|
+
# @return [String] The user agent of the instance.
|
15
|
+
attr_accessor :user_agent
|
16
|
+
|
17
|
+
include Init
|
18
|
+
|
19
|
+
def initialize(api_key, user_agent)
|
20
|
+
@api_key = api_key
|
21
|
+
@user_agent = user_agent
|
22
|
+
end
|
23
|
+
end
|
24
|
+
# Represents a DRPG user.
|
25
|
+
class User
|
26
|
+
# @return [Srting] The name of the user.
|
27
|
+
attr_accessor :name
|
28
|
+
alias_method :nickname, :name
|
29
|
+
|
30
|
+
# @return [Integer] How much health that user has
|
31
|
+
attr_accessor :hp
|
32
|
+
alias_method :health, :hp
|
33
|
+
|
34
|
+
# @return [Integer] How much deaths that user has
|
35
|
+
attr_accessor :deaths
|
36
|
+
alias_method :frags, :deaths
|
37
|
+
|
38
|
+
# @return [Integer] How much kills that user has
|
39
|
+
attr_accessor :kills
|
40
|
+
|
41
|
+
# @return [Integer] How much gold that user has
|
42
|
+
attr_accessor :gold
|
43
|
+
|
44
|
+
# @return [Integer] How much experience that user has
|
45
|
+
attr_accessor :xp
|
46
|
+
alias_method :experience, :xp
|
47
|
+
|
48
|
+
# @return [Integer] The level at that time, of the user.
|
49
|
+
attr_accessor :level
|
50
|
+
alias_method :lvl, :level
|
51
|
+
|
52
|
+
# @return [Integer] How much maximun health that user has
|
53
|
+
attr_accessor :max_hp
|
54
|
+
alias_method :max_health, :max_hp
|
55
|
+
|
56
|
+
# @return [Integer] The ID of the user.
|
57
|
+
attr_accessor :id
|
58
|
+
|
59
|
+
# @return [true, false] whether the user donated to Discord Dungeons or not.
|
60
|
+
attr_accessor :donated
|
61
|
+
alias_method :donated?, :donated
|
62
|
+
|
63
|
+
def initialize(data, app)
|
64
|
+
@data = data['data']
|
65
|
+
@id = data['id']
|
66
|
+
@name = @data['name']
|
67
|
+
@level = @data['level']
|
68
|
+
@hp = @data['hp']
|
69
|
+
@max_hp = @data['maxhp']
|
70
|
+
@gold = @data['gold']
|
71
|
+
@xp = @data['xp']
|
72
|
+
@kills = @data['kills']
|
73
|
+
@deaths = @data['deaths']
|
74
|
+
@weapon_id = @data['weapon']
|
75
|
+
@donated = @data['donate']
|
76
|
+
@guild = @data['guild']
|
77
|
+
@app = app
|
78
|
+
end
|
79
|
+
|
80
|
+
# @return [Guild, nil] the user's guild
|
81
|
+
def guild
|
82
|
+
if @guild != ""
|
83
|
+
@app.guild(@guild)
|
84
|
+
else
|
85
|
+
nil
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
# The inspect method is overwritten to give more useful output
|
90
|
+
def inspect
|
91
|
+
"#<DDAPI::User name=#{@name} id=#{@id} level=#{@level}>"
|
92
|
+
end
|
93
|
+
end
|
94
|
+
# Represents a DRPG guild.
|
95
|
+
class Guild
|
96
|
+
# @return [String] The name of the guild.
|
97
|
+
attr_accessor :name
|
98
|
+
|
99
|
+
# @return [User] The user object of the guild owner.
|
100
|
+
attr_accessor :owner
|
101
|
+
alias_method :leader, :owner
|
102
|
+
|
103
|
+
# @return [String] The description of the guild.
|
104
|
+
attr_accessor :description
|
105
|
+
alias_method :desc, :description
|
106
|
+
|
107
|
+
# @return [Integer] The amount gold in the guild.
|
108
|
+
attr_accessor :gold
|
109
|
+
|
110
|
+
# @return [Integer] The level of the guild.
|
111
|
+
attr_accessor :level
|
112
|
+
alias_method :lvl, :level
|
113
|
+
|
114
|
+
# @return [Integer] The ID of the guild.
|
115
|
+
attr_accessor :id
|
116
|
+
|
117
|
+
# @return [true, false] The icon of the guild.
|
118
|
+
attr_accessor :icon
|
119
|
+
|
120
|
+
def initialize(data, app)
|
121
|
+
@data = data
|
122
|
+
@gdata = data['guild']
|
123
|
+
@name = data['name']
|
124
|
+
@level = gdata['level']
|
125
|
+
@description = gdata['desc']
|
126
|
+
@gold = gdata['gold']
|
127
|
+
@icon = HTMLEntities.new.decode(gdata['icon'])
|
128
|
+
@id = data['id']
|
129
|
+
@members = gdata['members']
|
130
|
+
@owner = @app.user(gdata['owner'])
|
131
|
+
@app = app
|
132
|
+
end
|
133
|
+
|
134
|
+
# The inspect method is overwritten to give more useful output
|
135
|
+
def inspect
|
136
|
+
"#<DDAPI::Guild name=#{@name} id=#{@id} level=#{@level}>"
|
137
|
+
end
|
138
|
+
end
|
139
|
+
# Represents a DRPG item.
|
140
|
+
class Item
|
141
|
+
# @return [String] The name of the item.
|
142
|
+
attr_accessor :name
|
143
|
+
|
144
|
+
# @return [Integer, nil] The cost of the item. `nil` if not buyable.
|
145
|
+
attr_accessor :sell_price
|
146
|
+
|
147
|
+
# @return [String] The prefix name of the item.
|
148
|
+
attr_accessor :prefix
|
149
|
+
|
150
|
+
# @return [String] The plural name of the item.
|
151
|
+
attr_accessor :plural
|
152
|
+
|
153
|
+
# @return [String] The type of the item.
|
154
|
+
attr_accessor :type
|
155
|
+
|
156
|
+
# @return [String] The description of the item.
|
157
|
+
attr_accessor :description
|
158
|
+
alias_method :desc, :description
|
159
|
+
|
160
|
+
# @return [String] The image URL to the item.
|
161
|
+
attr_accessor :image
|
162
|
+
|
163
|
+
# @return [Integer] The level of the item.
|
164
|
+
attr_accessor :level
|
165
|
+
alias_method :lvl, :level
|
166
|
+
|
167
|
+
# @return [Integer] The ID of the item.
|
168
|
+
# attr_accessor :id
|
169
|
+
|
170
|
+
# @return [true, false] Whether the item is sellable.
|
171
|
+
attr_accessor :sellable
|
172
|
+
|
173
|
+
# @return [Integer, nil] The sell price of the item. `nil` if not sellable.
|
174
|
+
attr_accessor :sell_price
|
175
|
+
|
176
|
+
# @return [true, false] Whether the item is tradeable.
|
177
|
+
attr_accessor :tradeable
|
178
|
+
|
179
|
+
def initialize(data, app)
|
180
|
+
@data = data
|
181
|
+
@name = data['name']
|
182
|
+
@level = data['level']
|
183
|
+
@description = data['desc']
|
184
|
+
@type = data['type']
|
185
|
+
@image = API.image_url(data['image'])
|
186
|
+
#@id = data['id']
|
187
|
+
@prefix = data['prefix']
|
188
|
+
@prefix = data['plural']
|
189
|
+
@sellable = data['sellable']
|
190
|
+
@tradeable = data['tradeable']
|
191
|
+
@sell_price = data['sell'] == -1 ? nil : data['sell']
|
192
|
+
@cost = data['cost'] == -1 ? nil : data['cost']
|
193
|
+
@app = app
|
194
|
+
end
|
195
|
+
|
196
|
+
# The inspect method is overwritten to give more useful output
|
197
|
+
def inspect
|
198
|
+
"#<DDAPI::Item name=#{@name} id=#{@id} level=#{@level}>"
|
199
|
+
end
|
200
|
+
end
|
201
|
+
# Represents a DRPG guild item.
|
202
|
+
class Item
|
203
|
+
# @return [String] The name of the item.
|
204
|
+
attr_accessor :name
|
205
|
+
|
206
|
+
# @return [Integer, nil] The cost of the item. `nil` if not buyable.
|
207
|
+
attr_accessor :sell_price
|
208
|
+
|
209
|
+
# @return [String] The prefix name of the item.
|
210
|
+
attr_accessor :prefix
|
211
|
+
|
212
|
+
# @return [String] The plural name of the item.
|
213
|
+
attr_accessor :plural
|
214
|
+
|
215
|
+
# @return [String] The description of the item.
|
216
|
+
attr_accessor :description
|
217
|
+
alias_method :desc, :description
|
218
|
+
|
219
|
+
# @return [String] The image URL to the item.
|
220
|
+
attr_accessor :image
|
221
|
+
|
222
|
+
# @return [Integer] The level of the item.
|
223
|
+
attr_accessor :level
|
224
|
+
alias_method :lvl, :level
|
225
|
+
|
226
|
+
# @return [Integer] The ID of the item.
|
227
|
+
# attr_accessor :id
|
228
|
+
|
229
|
+
def initialize(data, app)
|
230
|
+
@data = data
|
231
|
+
@name = data['name']
|
232
|
+
@level = data['level']
|
233
|
+
@description = data['desc']
|
234
|
+
@image = API.image_url(data['image'])
|
235
|
+
#@id = data['id']
|
236
|
+
@prefix = data['prefix']
|
237
|
+
@prefix = data['plural']
|
238
|
+
@cost = data['cost'] == -1 ? nil : data['cost']
|
239
|
+
@app = app
|
240
|
+
end
|
241
|
+
|
242
|
+
# The inspect method is overwritten to give more useful output
|
243
|
+
def inspect
|
244
|
+
"#<DDAPI::Item name=#{@name} id=#{@id} level=#{@level}>"
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module DDAPI
|
2
|
+
# Custom errors raised in various places
|
3
|
+
module Errors
|
4
|
+
|
5
|
+
# Raised when authorization is invalid or incorrect.
|
6
|
+
class InvalidAuthorization < RuntimeError
|
7
|
+
# Default message for this exception
|
8
|
+
def message
|
9
|
+
'API key/User Agent invalid!'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
# Raised when a device is invalid or incorrect.
|
13
|
+
class ObjectNotFound < RuntimeError
|
14
|
+
# Default message for this exception
|
15
|
+
def message
|
16
|
+
'A various Object is not found with this ID!'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/dd-api/init.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'rest-client'
|
2
|
+
|
3
|
+
require 'dd-api/api'
|
4
|
+
require 'dd-api/classes'
|
5
|
+
|
6
|
+
module DDAPI
|
7
|
+
# Initializer Module
|
8
|
+
module Init
|
9
|
+
|
10
|
+
# def users
|
11
|
+
# all_users(self).values.map { |guild| User.new(guild, self) }
|
12
|
+
# end
|
13
|
+
|
14
|
+
def guilds
|
15
|
+
API.all_guilds(self).values.map { |guild| Guild.new(guild, self) }
|
16
|
+
end
|
17
|
+
|
18
|
+
def items
|
19
|
+
API.all_items(self).values.map { |item| Item.new(item, self) }
|
20
|
+
end
|
21
|
+
|
22
|
+
def gitems
|
23
|
+
API.all_gitems(self).values.map { |gitem| GuildItem.new(gitem, self) }
|
24
|
+
end
|
25
|
+
|
26
|
+
def user(id)
|
27
|
+
User.new(API.get_user(self, id), self)
|
28
|
+
end
|
29
|
+
|
30
|
+
def guild(id)
|
31
|
+
Guild.new(API.get_guild(self, id), self)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
metadata
ADDED
@@ -0,0 +1,121 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dd-api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Snazzah
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-08-18 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
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'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
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: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: htmlentities
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: Wrapper gem of Discord Dungeons API.
|
84
|
+
email:
|
85
|
+
- snazzah@discorddungeons.me
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- lib/dd-api.rb
|
91
|
+
- lib/dd-api/api.rb
|
92
|
+
- lib/dd-api/classes.rb
|
93
|
+
- lib/dd-api/errors.rb
|
94
|
+
- lib/dd-api/init.rb
|
95
|
+
- lib/dd-api/version.rb
|
96
|
+
homepage: http://api.discorddungeons.me/docs/
|
97
|
+
licenses:
|
98
|
+
- MIT
|
99
|
+
metadata: {}
|
100
|
+
post_install_message:
|
101
|
+
rdoc_options: []
|
102
|
+
require_paths:
|
103
|
+
- lib
|
104
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '0'
|
109
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '0'
|
114
|
+
requirements: []
|
115
|
+
rubyforge_project:
|
116
|
+
rubygems_version: 2.4.5.1
|
117
|
+
signing_key:
|
118
|
+
specification_version: 4
|
119
|
+
summary: Wrapper gem of Discord Dungeons API.
|
120
|
+
test_files: []
|
121
|
+
has_rdoc:
|