dd-api 0.0.2

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: 735af5fcc3da32f5a0e0c5b87f45253e70aa279f
4
+ data.tar.gz: 57e945702c70f0fdd10f8d2e01a62c4508d5c4d2
5
+ SHA512:
6
+ metadata.gz: e5dd4938aec1ff0fda3cf046ad69c57650bd64f36de54d556ed17f147ca4da6b03bbec253aa7e18ae17858a046cda7e6dc0ffc820ea3009a6b4d7a262c3db75b
7
+ data.tar.gz: 094fb4ce8bed631a638cde92639216fdb1fc7e5d2ca2312f80bcb9fd027f5c81312353f55f5ea499587c25934f876207c1844e7b2578aa213197dcf61db7b4af
@@ -0,0 +1,7 @@
1
+ require 'dd-api/classes'
2
+ require 'dd-api/init'
3
+ require 'dd-api/api'
4
+ require 'dd-api/version'
5
+ require 'dd-api/errors'
6
+ module DDAPI
7
+ end
@@ -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
@@ -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
@@ -0,0 +1,3 @@
1
+ module DDAPI
2
+ VERSION = '0.0.2'
3
+ 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: