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.
@@ -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: