dblista 0.1.1 → 0.2.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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +3 -3
- data/lib/dblista.rb +11 -7
- data/lib/dblista/errors.rb +4 -0
- data/lib/dblista/helpers.rb +14 -0
- data/lib/dblista/info.rb +1 -1
- data/lib/dblista/list/bot.rb +1 -1
- data/lib/dblista/user/actions.rb +15 -1
- data/lib/dblista/user/boosting.rb +1 -2
- data/lib/dblista/user/client.rb +20 -0
- data/lib/dblista/user/notifications.rb +49 -0
- data/lib/dblista/user/rating.rb +1 -1
- data/lib/dblista/user/verification.rb +43 -0
- data/lib/dblista/user/voting.rb +1 -1
- data/lib/dblista/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1fa0b18a050a6369352d032a11be2497c207a8f16a4456c11aa2be79695d3738
|
4
|
+
data.tar.gz: c46e76121ccf62a37004db3c867f421d02ce12c4b0516a73e1d37e00f88cdc54
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9940f8419b0c118ffb071640481ef77d87479e66cc0a723d9ff8f03a365207d4f419779b2cd77646309ac584b2f8e9ada0147a74bf3b1cd5db613a5839445b33
|
7
|
+
data.tar.gz: 8dea89026931f27610552e00dc2a008ee1a02df08777661964bfb244d90400d7e95b27cce6e7142bd64a3e9cc9258583823fa254e687baa3cb34141a0fd439ee
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
# DBLista
|
1
|
+
# DBLista Ruby wrapper [](https://badge.fury.io/rb/dblista)
|
2
2
|
|
3
3
|
[Dokumentacja](https://www.rubydoc.info/github/marek12306/dblista-wrapper-ruby)
|
4
4
|
|
5
|
-
Gem pozwalający na komunikację z API DBListy. Pozwala m.in. na automatyczne wysyłanie statystyk (dla botów napisanych w Discordrb)
|
5
|
+
Gem pozwalający na komunikację z API DBListy. Pozwala m.in. na automatyczne wysyłanie statystyk (dla botów napisanych w Discordrb), CRUD botów i serwerów oraz pare innych rzeczy.
|
6
6
|
|
7
7
|
## Instalacja
|
8
8
|
|
@@ -36,6 +36,6 @@ top = DBLista::List::Bot.top
|
|
36
36
|
puts top['data'].inspect
|
37
37
|
```
|
38
38
|
|
39
|
-
##
|
39
|
+
## Licencja
|
40
40
|
|
41
41
|
Ten gem jest dostępny na licencji [MIT License](https://opensource.org/licenses/MIT). Rób z nim co chcesz.
|
data/lib/dblista.rb
CHANGED
@@ -12,6 +12,7 @@ require_relative 'dblista/errors'
|
|
12
12
|
require_relative 'dblista/list/bot'
|
13
13
|
require_relative 'dblista/list/server'
|
14
14
|
require_relative 'dblista/user/client'
|
15
|
+
require_relative 'dblista/helpers'
|
15
16
|
|
16
17
|
# Main module
|
17
18
|
module DBLista
|
@@ -22,12 +23,6 @@ module DBLista
|
|
22
23
|
# Regexp for checking if string is a number
|
23
24
|
IS_NUMBER = /^\d+$/.freeze
|
24
25
|
|
25
|
-
# @!visibility private
|
26
|
-
def self._get(path)
|
27
|
-
req = URI.open("#{DBLista::API_PATH}#{path}")
|
28
|
-
JSON.parse req.read
|
29
|
-
end
|
30
|
-
|
31
26
|
def self._https(uri)
|
32
27
|
Net::HTTP.new(uri.host, uri.port).tap do |http|
|
33
28
|
http.use_ssl = true
|
@@ -40,7 +35,16 @@ module DBLista
|
|
40
35
|
req['Content-Type'] = 'application/json'
|
41
36
|
req['Authorization'] = token if token
|
42
37
|
response = _https(uri).request(req)
|
43
|
-
JSON.parse response.body
|
38
|
+
result = JSON.parse response.body
|
39
|
+
raise DBLista::Error, result['error'].capitalize unless result['status'] == 'success'
|
40
|
+
result['data']
|
41
|
+
end
|
42
|
+
|
43
|
+
# @!visibility private
|
44
|
+
def self._get(path, token = nil)
|
45
|
+
uri = URI("#{DBLista::API_PATH}#{path}")
|
46
|
+
req = Net::HTTP::Get.new(uri)
|
47
|
+
_handle_request(req, uri, token, nil)
|
44
48
|
end
|
45
49
|
|
46
50
|
# @!visibility private
|
data/lib/dblista/errors.rb
CHANGED
@@ -6,6 +6,8 @@ module DBLista::Errors
|
|
6
6
|
ID_NEEDED = 'You need to enter ID'
|
7
7
|
# Raised when provided page is not an integer
|
8
8
|
PAGE_INTEGER = 'Page must be an integer'
|
9
|
+
# Raised when rank is not an integer
|
10
|
+
RANK_INTEGER = 'Rank must be an integer'
|
9
11
|
# Raised when token is not provided
|
10
12
|
TOKEN_NOT_PROVIDED = 'Token is not provided'
|
11
13
|
# Raised when type symbol is invalid
|
@@ -14,4 +16,6 @@ module DBLista::Errors
|
|
14
16
|
QUERY_NOT_PROVIDED = 'Search query is not provided'
|
15
17
|
# Raised when body is not a hash
|
16
18
|
BODY_HASH = 'Body must be a hash'
|
19
|
+
# Raised when token is invalid or expired
|
20
|
+
INVALID_TOKEN = 'Invalid or expired token'
|
17
21
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Helper methods
|
4
|
+
module DBLista::Helpers
|
5
|
+
# Crafts avatar url from user ID and avatar hash
|
6
|
+
#
|
7
|
+
# @param id [Integer] user ID
|
8
|
+
# @param hash [String] avatar hash
|
9
|
+
# @param size [Integer] avatar width (defaults to 2048)
|
10
|
+
# @return [Hash] raw data from DBLista
|
11
|
+
def self.get_avatar(id, hash, size = 2048)
|
12
|
+
"https://cdn.discordapp.com/avatars/#{id}/#{hash}?size=#{size}"
|
13
|
+
end
|
14
|
+
end
|
data/lib/dblista/info.rb
CHANGED
data/lib/dblista/list/bot.rb
CHANGED
data/lib/dblista/user/actions.rb
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
require 'json'
|
4
4
|
|
5
|
-
# User client - actions
|
6
5
|
module DBLista::User
|
6
|
+
# User client - actions
|
7
7
|
module Actions
|
8
8
|
# Adds bot/server to DBLista
|
9
9
|
#
|
@@ -40,5 +40,19 @@ module DBLista::User
|
|
40
40
|
|
41
41
|
DBLista._delete("/#{type}s/#{id}", nil, @token)
|
42
42
|
end
|
43
|
+
|
44
|
+
# Manages user (bans or adds premium)
|
45
|
+
# Available only for DBLista staff
|
46
|
+
#
|
47
|
+
# @param id [Integer] user ID
|
48
|
+
# @param banned [Boolean] user ban status
|
49
|
+
# @param premium [Integer] days for premium
|
50
|
+
# @return [Hash] raw data from DBLista
|
51
|
+
def manage_user(id, banned = false, premium = 0)
|
52
|
+
DBLista._post("/users/#{id}/manage", {
|
53
|
+
premium: premium,
|
54
|
+
ban: banned
|
55
|
+
}, @token)
|
56
|
+
end
|
43
57
|
end
|
44
58
|
end
|
data/lib/dblista/user/client.rb
CHANGED
@@ -4,6 +4,8 @@ require_relative './actions'
|
|
4
4
|
require_relative './boosting'
|
5
5
|
require_relative './rating'
|
6
6
|
require_relative './voting'
|
7
|
+
require_relative './notifications'
|
8
|
+
require_relative './verification'
|
7
9
|
|
8
10
|
# User module - client + client modules
|
9
11
|
module DBLista::User
|
@@ -21,6 +23,8 @@ module DBLista::User
|
|
21
23
|
include DBLista::User::Actions
|
22
24
|
include DBLista::User::Boosting
|
23
25
|
include DBLista::User::Rating
|
26
|
+
include DBLista::User::Notifications
|
27
|
+
include DBLista::User::Verification
|
24
28
|
|
25
29
|
# Allowed entity types to use
|
26
30
|
ALLOWED_TYPES = %i[bot server].freeze
|
@@ -31,6 +35,22 @@ module DBLista::User
|
|
31
35
|
raise DBLista::Error, DBLista::Errors::TOKEN_NOT_PROVIDED unless token
|
32
36
|
|
33
37
|
@token = token
|
38
|
+
|
39
|
+
me
|
40
|
+
end
|
41
|
+
|
42
|
+
# Fetches information about current user
|
43
|
+
#
|
44
|
+
# @return [Hash] raw data from DBLista
|
45
|
+
def me
|
46
|
+
DBLista._get('/users/me', @token)
|
47
|
+
end
|
48
|
+
|
49
|
+
# Fetches current user guilds
|
50
|
+
#
|
51
|
+
# @return [Hash] raw data from DBLista
|
52
|
+
def guilds
|
53
|
+
DBLista._get('/users/me/guilds', @token)
|
34
54
|
end
|
35
55
|
end
|
36
56
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DBLista::User
|
4
|
+
# User client - notifications
|
5
|
+
module Notifications
|
6
|
+
# Fetches user notifications
|
7
|
+
#
|
8
|
+
# @return [Hash] raw data from DBLista
|
9
|
+
def notifications
|
10
|
+
DBLista._get('/users/me/notifications/read', @token)
|
11
|
+
end
|
12
|
+
|
13
|
+
# Clears user notifications
|
14
|
+
#
|
15
|
+
# @return [Hash] raw data from DBLista
|
16
|
+
def clear_notifications
|
17
|
+
DBLista._get('/users/me/notifications/clear', @token)
|
18
|
+
end
|
19
|
+
|
20
|
+
# Sends notification to specified user
|
21
|
+
# Available only for DBLista staff
|
22
|
+
#
|
23
|
+
# @param rank [Integer] user ID
|
24
|
+
# @param details [String] details (content)
|
25
|
+
# @param url [String] url to redirect if clicked
|
26
|
+
# @return [Hash] raw data from DBLista
|
27
|
+
def send_notification(id, details, url = '#')
|
28
|
+
DBLista._validate_id id
|
29
|
+
DBLista._post("/users/#{id}/notifications", {
|
30
|
+
text: details,
|
31
|
+
url: url || '#'
|
32
|
+
}, @token)
|
33
|
+
end
|
34
|
+
|
35
|
+
# Sends notification to specified group (rank)
|
36
|
+
# Available only for DBLista staff
|
37
|
+
#
|
38
|
+
# @param rank [Integer] rank ID
|
39
|
+
# @param details [String] details (content)
|
40
|
+
# @param url [String] url to redirect if clicked
|
41
|
+
# @return [Hash] raw data from DBLista
|
42
|
+
def send_group_notification(rank, details, url = '#')
|
43
|
+
DBLista._post("/users/group/#{rank}/notifications", {
|
44
|
+
text: details,
|
45
|
+
url: url || '#'
|
46
|
+
}, @token)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/dblista/user/rating.rb
CHANGED
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cgi'
|
4
|
+
|
5
|
+
module DBLista::User
|
6
|
+
# User client - verification (only for staff)
|
7
|
+
module Verification
|
8
|
+
# Approves specified bot
|
9
|
+
#
|
10
|
+
# @param id [Integer] bot ID
|
11
|
+
# @param reason [String] reason for approving
|
12
|
+
# @return [Boolean] true if operation succeded
|
13
|
+
def approve(id, reason = 'Brak powodu')
|
14
|
+
DBLista._validate_id id
|
15
|
+
|
16
|
+
DBLista._post("/bots/#{id}/approve?reason=#{CGI.escape reason}", nil, @token)
|
17
|
+
true
|
18
|
+
end
|
19
|
+
|
20
|
+
# Rejects specified bot
|
21
|
+
#
|
22
|
+
# @param id [Integer] bot ID
|
23
|
+
# @param reason [String] reason for rejecting
|
24
|
+
# @return [Boolean] true if operation succeded
|
25
|
+
def reject(id, reason = 'Brak powodu')
|
26
|
+
DBLista._validate_id id
|
27
|
+
|
28
|
+
DBLista._post("/bots/#{id}/reject?reason=#{CGI.escape reason}", nil, @token)
|
29
|
+
true
|
30
|
+
end
|
31
|
+
|
32
|
+
# Sets specified bot verification status to pending
|
33
|
+
#
|
34
|
+
# @param id [Integer] bot ID
|
35
|
+
# @return [Boolean] true if operation succeded
|
36
|
+
def set_pending(id)
|
37
|
+
DBLista._validate_id id
|
38
|
+
|
39
|
+
DBLista._post("/bots/#{id}/set-pending", nil, @token)
|
40
|
+
true
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/dblista/user/voting.rb
CHANGED
data/lib/dblista/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dblista
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- deepivin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-07-
|
11
|
+
date: 2020-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -71,6 +71,7 @@ files:
|
|
71
71
|
- example/info.rb
|
72
72
|
- lib/dblista.rb
|
73
73
|
- lib/dblista/errors.rb
|
74
|
+
- lib/dblista/helpers.rb
|
74
75
|
- lib/dblista/info.rb
|
75
76
|
- lib/dblista/list/bot.rb
|
76
77
|
- lib/dblista/list/server.rb
|
@@ -78,7 +79,9 @@ files:
|
|
78
79
|
- lib/dblista/user/actions.rb
|
79
80
|
- lib/dblista/user/boosting.rb
|
80
81
|
- lib/dblista/user/client.rb
|
82
|
+
- lib/dblista/user/notifications.rb
|
81
83
|
- lib/dblista/user/rating.rb
|
84
|
+
- lib/dblista/user/verification.rb
|
82
85
|
- lib/dblista/user/voting.rb
|
83
86
|
- lib/dblista/version.rb
|
84
87
|
homepage: https://github.com/marek12306/dblista-wrapper-ruby
|