dblista 0.2.0 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1fa0b18a050a6369352d032a11be2497c207a8f16a4456c11aa2be79695d3738
4
- data.tar.gz: c46e76121ccf62a37004db3c867f421d02ce12c4b0516a73e1d37e00f88cdc54
3
+ metadata.gz: 20bc126654c09a9c27d1a5601a5fd6ca6f78d97b434c4c72d0f053b790a55bcf
4
+ data.tar.gz: b37f3e82284ca081f443422a5b2b1a34c2beafa3ae5233f5533e2b2ce557e87d
5
5
  SHA512:
6
- metadata.gz: 9940f8419b0c118ffb071640481ef77d87479e66cc0a723d9ff8f03a365207d4f419779b2cd77646309ac584b2f8e9ada0147a74bf3b1cd5db613a5839445b33
7
- data.tar.gz: 8dea89026931f27610552e00dc2a008ee1a02df08777661964bfb244d90400d7e95b27cce6e7142bd64a3e9cc9258583823fa254e687baa3cb34141a0fd439ee
6
+ metadata.gz: 2e8c060120beae4594c8b5e9faa0b81bbc29dbe08c4fb0f27a61afe7816092594dc5ef205565538599aa17a97352b53b853c256b5faa5dca68c6dcbce11c613d
7
+ data.tar.gz: 6992b4c8b78a17f307d2ed2c2225c5e333cee7630c9cbf485af5c661fc89b89348c595848a8ea205e0435136555a3dcbbf85cbca0505fce87d603126b2987073
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dblista (0.2.0)
4
+ dblista (0.4.0)
5
+ zache
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
@@ -21,6 +22,7 @@ GEM
21
22
  diff-lcs (>= 1.2.0, < 2.0)
22
23
  rspec-support (~> 3.9.0)
23
24
  rspec-support (3.9.3)
25
+ zache (0.12.0)
24
26
 
25
27
  PLATFORMS
26
28
  x86-mingw32
data/README.md CHANGED
@@ -33,9 +33,9 @@ Pobieranie topki botów:
33
33
 
34
34
  ```ruby
35
35
  top = DBLista::List::Bot.top
36
- puts top['data'].inspect
36
+ puts top
37
37
  ```
38
38
 
39
39
  ## Licencja
40
40
 
41
- Ten gem jest dostępny na licencji [MIT License](https://opensource.org/licenses/MIT). Rób z nim co chcesz.
41
+ Ten gem jest dostępny na licencji [MIT License](https://opensource.org/licenses/MIT). Rób z tym co chcesz.
@@ -24,6 +24,8 @@ Gem::Specification.new do |spec|
24
24
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
25
25
  spec.require_paths = ["lib"]
26
26
 
27
+ spec.add_dependency "zache"
28
+
27
29
  spec.add_development_dependency "bundler", "~> 1.17"
28
30
  spec.add_development_dependency "rake", ">= 12.3.3"
29
31
  spec.add_development_dependency "rspec", "~> 3.2"
@@ -0,0 +1,11 @@
1
+ require 'dblista'
2
+ require 'discordrb'
3
+
4
+ bot = Discordrb::Bot.new token: 'TOKEN'
5
+ dbl = DBLista::Stats.new 'DBLISTA_TOKEN', bot
6
+
7
+ bot.message(content: 'Ping!') do |event|
8
+ event.respond 'Pong!'
9
+ end
10
+
11
+ bot.run
@@ -0,0 +1,26 @@
1
+ require 'dblista'
2
+
3
+ client = DBLista::User::Client.new('TOKEN')
4
+
5
+ client.add({
6
+ id: 'id',
7
+ info: {
8
+ library: 'NiceBot',
9
+ tags: [
10
+ DBLista::Tags::Bot::FUN,
11
+ DBLista::Tags::Bot::TOOLS
12
+ ],
13
+ prefix: '!',
14
+ fullDescription: 'long description',
15
+ shortDescription: 'summary'
16
+ },
17
+ links: {
18
+ gitRepository: 'http://github.com/example/example',
19
+ website: 'http://example.com',
20
+ discordServer: 'discord server'
21
+ },
22
+ owners: [
23
+ 'id 1',
24
+ 'id 2'
25
+ ]
26
+ })
@@ -0,0 +1,5 @@
1
+ require 'dblista'
2
+
3
+ DBLista::List::Bot.all.each do |server|
4
+ puts server['name']
5
+ end
@@ -0,0 +1,6 @@
1
+ require 'dblista'
2
+
3
+ client = DBLista::User::Client.new('TOKEN')
4
+
5
+ puts client.notifications
6
+ client.clear_notifications
@@ -0,0 +1,5 @@
1
+ require 'dblista'
2
+
3
+ results = DBLista::List::Bot.search(DBLista::Tags::Bot::MUSIC)
4
+
5
+ puts results
@@ -0,0 +1,5 @@
1
+ require 'dblista'
2
+
3
+ user = DBLista::Information.user('ID')
4
+
5
+ puts DBLista::Helpers.get_avatar(user['id'], user['avatar'], 1024)
@@ -4,6 +4,7 @@ require 'net/http'
4
4
  require 'net/https'
5
5
  require 'open-uri'
6
6
  require 'json'
7
+ require 'zache'
7
8
 
8
9
  require_relative 'dblista/version'
9
10
  require_relative 'dblista/info'
@@ -13,6 +14,7 @@ require_relative 'dblista/list/bot'
13
14
  require_relative 'dblista/list/server'
14
15
  require_relative 'dblista/user/client'
15
16
  require_relative 'dblista/helpers'
17
+ require_relative 'dblista/constants'
16
18
 
17
19
  # Main module
18
20
  module DBLista
@@ -23,6 +25,11 @@ module DBLista
23
25
  # Regexp for checking if string is a number
24
26
  IS_NUMBER = /^\d+$/.freeze
25
27
 
28
+ # Cache
29
+ Cache = Zache.new
30
+ # Cache entry lifetime
31
+ CACHE_LIFETIME = 15
32
+
26
33
  def self._https(uri)
27
34
  Net::HTTP.new(uri.host, uri.port).tap do |http|
28
35
  http.use_ssl = true
@@ -37,6 +44,7 @@ module DBLista
37
44
  response = _https(uri).request(req)
38
45
  result = JSON.parse response.body
39
46
  raise DBLista::Error, result['error'].capitalize unless result['status'] == 'success'
47
+
40
48
  result['data']
41
49
  end
42
50
 
@@ -77,4 +85,13 @@ module DBLista
77
85
  def self._page_integer(input)
78
86
  raise DBLista::Error, DBLista::Errors::PAGE_INTEGER unless input.is_a?(Integer)
79
87
  end
88
+
89
+ # @!visibility private
90
+ def self._limit_integer(input)
91
+ raise DBLista::Error, DBLista::Errors::LIMIT_INTEGER unless input.is_a?(Integer)
92
+ end
93
+
94
+ def self._cache(name)
95
+ DBLista::Cache.get(name.to_sym, lifetime: DBLista::CACHE_LIFETIME) { yield }
96
+ end
80
97
  end
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DBLista
4
+ # Tags
5
+ module Tags
6
+ # Bot tags
7
+ module Bot
8
+ MODERATION = :moderacja
9
+ TOOLS = :narzędzia
10
+ MUSIC = :muzyka
11
+ DASHBOARD = :panel
12
+ FUN = :rozrywka
13
+ LEVELS = :poziomy
14
+ GAMES = :gry
15
+ ROLEPLAY = :roleplay
16
+ ECONOMY = :ekonomia
17
+ ANIME = :anime
18
+ NSFW = :nsfw
19
+ OTHER = :inne
20
+ end
21
+ # Server tags
22
+ module Server
23
+ COMMUNITY = :community
24
+ PROGRAMMING = :programowanie
25
+ GAMES = :gry
26
+ YOUTUBE = :youtube
27
+ HOBBY = :hobby
28
+ ANIME = :anime
29
+ ROLEPLAY = :roleplay
30
+ OTHER = :inne
31
+ end
32
+ end
33
+ # Permissions
34
+ module Permissions
35
+ USER = 0
36
+ MODERATOR = 1
37
+ BIG_MODERATOR = 2
38
+ ADMINISTRATOR = 10
39
+ end
40
+ # Bot libraries
41
+ module Libraries
42
+ DISCORD_JS = :'discord.js'
43
+ ERIS = :eris
44
+ DSHARP_PLUS = :DSharpPlus
45
+ DISCORD_NET = :'Discord.Net'
46
+ DISCORDGO = :DiscordGo
47
+ DISGORD = :DisGord
48
+ JDA = :JDA
49
+ DISCORD4J = :Discord4J
50
+ JAVACORD = :Javacord
51
+ AEGIS_CPP = :'aegis.cpp'
52
+ NYXX = :nyxx
53
+ RESTCORD = :RestCord
54
+ DISCORD_PY = :'discord.py'
55
+ DISCO = :disco
56
+ DISCORDRB = :discordrb
57
+ DISCORDRS = :'discord-rs'
58
+ SERENITY = :serenity
59
+ INNA = :inna
60
+ end
61
+ # Card style
62
+ module CardStyle
63
+ GREEN = :green
64
+ ORANGE = :orange
65
+ PINK = :pink
66
+ BLUE = :blue
67
+ end
68
+ end
@@ -8,6 +8,8 @@ module DBLista::Errors
8
8
  PAGE_INTEGER = 'Page must be an integer'
9
9
  # Raised when rank is not an integer
10
10
  RANK_INTEGER = 'Rank must be an integer'
11
+ # Raised when provided limit is not an integer
12
+ LIMIT_INTEGER = 'Limit must be an integer'
11
13
  # Raised when token is not provided
12
14
  TOKEN_NOT_PROVIDED = 'Token is not provided'
13
15
  # Raised when type symbol is invalid
@@ -16,7 +16,9 @@ module DBLista
16
16
  # @return [Hash] raw data from DBLista
17
17
  def self.bot(id)
18
18
  DBLista._validate_id id
19
- DBLista._get("/bots/#{id}")
19
+ DBLista._cache(id.to_s.to_sym) do
20
+ DBLista._get("/bots/#{id}")
21
+ end
20
22
  end
21
23
 
22
24
  # Fetches DBLista server information
@@ -25,7 +27,9 @@ module DBLista
25
27
  # @return [Hash] raw data from DBLista
26
28
  def self.server(id)
27
29
  DBLista._validate_id id
28
- DBLista._get("/servers/#{id}")
30
+ DBLista._cache(id.to_s.to_sym) do
31
+ DBLista._get("/servers/#{id}")
32
+ end
29
33
  end
30
34
 
31
35
  # Fetches DBLista user information
@@ -34,7 +38,9 @@ module DBLista
34
38
  # @return [Hash] raw data from DBLista
35
39
  def self.user(id)
36
40
  DBLista._validate_id id
37
- DBLista._get("/users/#{id}")
41
+ DBLista._cache(id.to_s.to_sym) do
42
+ DBLista._get("/users/#{id}")
43
+ end
38
44
  end
39
45
  end
40
46
  end
@@ -8,40 +8,61 @@ require 'cgi'
8
8
  #
9
9
  # @example Fetch top 25 bots
10
10
  # top = DBLista::List::Bot.top
11
- # puts top.inspect
11
+ # puts top
12
12
  module DBLista::List
13
13
  # Bot lists
14
14
  module Bot
15
15
  # Fetches top bots
16
16
  #
17
17
  # @param page [Integer] page
18
+ # @param limit [Integer] limit of bots per page
18
19
  # @return [Hash] raw data from DBLista
19
- def self.top(page = 0)
20
+ def self.top(page = 0, limit = 10)
20
21
  DBLista._page_integer page
21
- DBLista._get("/bots/list/top/#{page}")
22
+ DBLista._limit_integer limit
23
+ DBLista._cache("botstop#{page}-#{limit}") do
24
+ DBLista._get("/bots/list/top/#{page}?limit=#{limit}")
25
+ end
22
26
  end
23
27
 
24
28
  # Fetches premium bots
25
29
  #
26
30
  # @param page [Integer] page
31
+ # @param limit [Integer] limit of bots per page
27
32
  # @return [Hash] raw data from DBLista
28
- def self.premium(page = 0)
33
+ def self.premium(page = 0, limit = 10)
29
34
  DBLista._page_integer page
30
- DBLista._get("/bots/list/premium/#{page}")
35
+ DBLista._limit_integer limit
36
+ DBLista._cache("botspremium#{page}-#{limit}") do
37
+ DBLista._get("/bots/list/premium/#{page}?limit=#{limit}")
38
+ end
31
39
  end
32
40
 
33
41
  # Fetches unverified bots
34
42
  #
35
43
  # @return [Hash] raw data from DBLista
36
44
  def self.unverified
37
- DBLista._get('/bots/list/unverified')
45
+ DBLista._cache(:botsunverified) do
46
+ DBLista._get('/bots/list/unverified')
47
+ end
38
48
  end
39
49
 
40
50
  # Fetches rejected bots
41
51
  #
42
52
  # @return [Hash] raw data from DBLista
43
53
  def self.rejected
44
- DBLista._get('/bots/list/rejected')
54
+ DBLista._cache(:botsrejected) do
55
+ DBLista._get('/bots/list/rejected')
56
+ end
57
+ end
58
+
59
+ # Fetches all bots
60
+ #
61
+ # @return [Array] array of raw bot data from DBLista
62
+ def self.all
63
+ DBLista._cache(:botsall) do
64
+ DBLista::List::Bot.top(0, 100_000_000)
65
+ end
45
66
  end
46
67
 
47
68
  # Bot search
@@ -51,7 +72,9 @@ module DBLista::List
51
72
  def self.search(query)
52
73
  raise DBLista::Error, DBLista::Errors::QUERY_NOT_PROVIDED unless query
53
74
 
54
- DBLista._get("/bots/search/#{CGI.escape query}")
75
+ DBLista._cache("botsearch#{query}") do
76
+ DBLista._get("/bots/search/#{CGI.escape query.to_s}")
77
+ end
55
78
  end
56
79
  end
57
80
  end
@@ -8,19 +8,36 @@ module DBLista::List
8
8
  # Fetches top servers
9
9
  #
10
10
  # @param page [Integer] page
11
+ # @param limit [Integer] limit of servers per page
11
12
  # @return [Hash] raw data from DBLista
12
- def self.top(page = 0)
13
+ def self.top(page = 0, limit = 10)
13
14
  DBLista._page_integer page
14
- DBLista._get("/servers/list/top/#{page}")
15
+ DBLista._limit_integer limit
16
+ DBLista._cache("serverstop#{page}-#{limit}") do
17
+ DBLista._get("/servers/list/top/#{page}?limit=#{limit}")
18
+ end
15
19
  end
16
20
 
17
21
  # Fetches premium servers
18
22
  #
19
23
  # @param page [Integer] page
24
+ # @param limit [Integer] limit of servers per page
20
25
  # @return [Hash] raw data from DBLista
21
- def self.premium(page = 0)
26
+ def self.premium(page = 0, limit = 10)
22
27
  DBLista._page_integer page
23
- DBLista._get("/servers/list/premium/#{page}")
28
+ DBLista._limit_integer limit
29
+ DBLista._cache("serverspremium#{page}-#{limit}") do
30
+ DBLista._get("/servers/list/premium/#{page}?limit=#{limit}")
31
+ end
32
+ end
33
+
34
+ # Fetches all servers
35
+ #
36
+ # @return [Array] array of raw server data from DBLista
37
+ def self.all
38
+ DBLista._cache(:serversall) do
39
+ DBLista::List::Server.top(0, 100_000_000)
40
+ end
24
41
  end
25
42
 
26
43
  # Server search
@@ -30,7 +47,9 @@ module DBLista::List
30
47
  def self.search(query)
31
48
  raise DBLista::Error, DBLista::Errors::QUERY_NOT_PROVIDED unless query
32
49
 
33
- DBLista._get("/servers/search/#{CGI.escape query}")
50
+ DBLista._cache("serversearch#{query}") do
51
+ DBLista._get("/servers/search/#{CGI.escape query.to_s}")
52
+ end
34
53
  end
35
54
  end
36
55
  end
@@ -42,12 +42,13 @@ module DBLista
42
42
  #
43
43
  # @param members [Integer] member count
44
44
  # @param servers [Integer] server count
45
- # @return [Hash] raw data from DBLista
45
+ # @return [Boolean] true if operation succeded
46
46
  def update_stats(members, servers)
47
47
  DBLista._post('/bots/stats', {
48
48
  'servers' => servers,
49
49
  'members' => members
50
50
  }, @token)
51
+ true
51
52
  end
52
53
  end
53
54
  end
@@ -5,54 +5,58 @@ require 'json'
5
5
  module DBLista::User
6
6
  # User client - actions
7
7
  module Actions
8
- # Adds bot/server to DBLista
9
- #
10
- # @param body [Hash] raw body to send
11
- # @param type [Symbol] type of entity (bot/server)
12
- # @return [Hash] raw data from DBLista
13
- def add(body, type = 'bot')
14
- raise DBLista::Error, DBLista::Errors::BODY_HASH unless body.is_a?(Hash)
15
- raise DBLista::Error, DBLista::Errors::TYPE_NOT_ALLOWED unless ALLOWED_TYPES.include?(type)
16
-
17
- DBLista._post("/#{type}s", body, @token)
18
- end
19
-
20
- # Edits bot/server in DBLista
21
- #
22
- # @param body [Hash] raw body to send
23
- # @param type [Symbol] type of entity (bot/server)
24
- # @return [Hash] raw data from DBLista
25
- def edit(body, type = :bot)
26
- raise DBLista::Error, DBLista::Errors::BODY_HASH unless body.is_a?(Hash)
27
- raise DBLista::Error, DBLista::Errors::TYPE_NOT_ALLOWED unless DBLista::User::Client::ALLOWED_TYPES.include?(type)
28
-
29
- DBLista._put("/#{type}s", body, @token)
30
- end
31
-
32
- # Deletes bot/server from DBLista
33
- #
34
- # @param id [Integer] entity ID
35
- # @param type [Symbol] type of entity (bot/server)
36
- # @return [Hash] raw data from DBLista
37
- def delete(id, type = :bot)
38
- DBLista._validate_id id
39
- raise DBLista::Error, DBLista::Errors::TYPE_NOT_ALLOWED unless DBLista::User::Client::ALLOWED_TYPES.include?(type)
40
-
41
- DBLista._delete("/#{type}s/#{id}", nil, @token)
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
8
+ # Adds bot/server to DBLista
9
+ #
10
+ # @param body [Hash] raw body to send
11
+ # @param type [Symbol] type of entity (bot/server)
12
+ # @return [Boolean] true if operation succeded
13
+ def add(body, type = 'bot')
14
+ raise DBLista::Error, DBLista::Errors::BODY_HASH unless body.is_a?(Hash)
15
+ raise DBLista::Error, DBLista::Errors::TYPE_NOT_ALLOWED unless DBLista::User::Client::ALLOWED_TYPES.include?(type)
16
+
17
+ DBLista._post("/#{type}s", body, @token)
18
+ true
19
+ end
20
+
21
+ # Edits bot/server in DBLista
22
+ #
23
+ # @param body [Hash] raw body to send
24
+ # @param type [Symbol] type of entity (bot/server)
25
+ # @return [Boolean] true if operation succeded
26
+ def edit(body, type = :bot)
27
+ raise DBLista::Error, DBLista::Errors::BODY_HASH unless body.is_a?(Hash)
28
+ raise DBLista::Error, DBLista::Errors::TYPE_NOT_ALLOWED unless DBLista::User::Client::ALLOWED_TYPES.include?(type)
29
+
30
+ DBLista._put("/#{type}s", body, @token)
31
+ true
32
+ end
33
+
34
+ # Deletes bot/server from DBLista
35
+ #
36
+ # @param id [Integer] entity ID
37
+ # @param type [Symbol] type of entity (bot/server)
38
+ # @return [Boolean] true if operation succeded
39
+ def delete(id, type = :bot)
40
+ DBLista._validate_id id
41
+ raise DBLista::Error, DBLista::Errors::TYPE_NOT_ALLOWED unless DBLista::User::Client::ALLOWED_TYPES.include?(type)
42
+
43
+ DBLista._delete("/#{type}s/#{id}", nil, @token)
44
+ true
45
+ end
46
+
47
+ # Manages user (bans or adds premium)
48
+ # Available only for DBLista staff
49
+ #
50
+ # @param id [Integer] user ID
51
+ # @param banned [Boolean] user ban status
52
+ # @param premium [Integer] days for premium
53
+ # @return [Boolean] true if operation succeded
54
+ def manage_user(id, banned = false, premium = 0)
55
+ DBLista._post("/users/#{id}/manage", {
56
+ premium: premium,
57
+ ban: banned
58
+ }, @token)
59
+ true
60
+ end
57
61
  end
58
62
  end
@@ -3,28 +3,30 @@
3
3
  module DBLista::User
4
4
  # User client - boosting
5
5
  module Boosting
6
- # Boosts selected bot/server
7
- #
8
- # @param id [Integer] entity ID
9
- # @param type [Symbol] type of entity (bot/server)
10
- # @return [Hash] raw data from DBLista
11
- def boost(id, type = :bot)
12
- DBLista._validate_id id
13
- raise DBLista::Error, DBLista::Errors::TYPE_NOT_ALLOWED unless ALLOWED_TYPES.include?(type)
6
+ # Boosts selected bot/server
7
+ #
8
+ # @param id [Integer] entity ID
9
+ # @param type [Symbol] type of entity (bot/server)
10
+ # @return [Boolean] true if operation succeded
11
+ def boost(id, type = :bot)
12
+ DBLista._validate_id id
13
+ raise DBLista::Error, DBLista::Errors::TYPE_NOT_ALLOWED unless DBLista::User::Client::ALLOWED_TYPES.include?(type)
14
14
 
15
- DBLista._post("/#{type}s/#{id}/boost", nil, @token)
16
- end
15
+ DBLista._post("/#{type}s/#{id}/boost", nil, @token)
16
+ true
17
+ end
17
18
 
18
- # Removes boost from a selected bot/server
19
- #
20
- # @param id [Integer] entity ID
21
- # @param type [Symbol] type of entity (bot/server)
22
- # @return [Hash] raw data from DBLista
23
- def delete_boost(id, type = :bot)
24
- DBLista._validate_id id
25
- raise DBLista::Error, DBLista::Errors::TYPE_NOT_ALLOWED unless DBLista::User::Client::ALLOWED_TYPES.include?(type)
19
+ # Removes boost from a selected bot/server
20
+ #
21
+ # @param id [Integer] entity ID
22
+ # @param type [Symbol] type of entity (bot/server)
23
+ # @return [Boolean] true if operation succeded
24
+ def delete_boost(id, type = :bot)
25
+ DBLista._validate_id id
26
+ raise DBLista::Error, DBLista::Errors::TYPE_NOT_ALLOWED unless DBLista::User::Client::ALLOWED_TYPES.include?(type)
26
27
 
27
- DBLista._delete("/#{type}s/#{id}/boost", nil, @token)
28
- end
28
+ DBLista._delete("/#{type}s/#{id}/boost", nil, @token)
29
+ true
30
+ end
29
31
  end
30
32
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'zache'
4
+
3
5
  require_relative './actions'
4
6
  require_relative './boosting'
5
7
  require_relative './rating'
@@ -13,11 +15,11 @@ module DBLista::User
13
15
  #
14
16
  # @example Server voting
15
17
  # client = DBLista::User::Client.new "USER_TOKEN"
16
- # response = client.vote(123456789012345678, :server)
18
+ # client.vote(123456789012345678, :server)
17
19
  #
18
20
  # @example Bot rating
19
21
  # client = DBLista::User::Client.new "USER_TOKEN"
20
- # response = client.rate(123456789012345678, 5, 'Nice bot')
22
+ # client.rate(123456789012345678, 5, 'Nice bot')
21
23
  class Client
22
24
  include DBLista::User::Voting
23
25
  include DBLista::User::Actions
@@ -35,6 +37,7 @@ module DBLista::User
35
37
  raise DBLista::Error, DBLista::Errors::TOKEN_NOT_PROVIDED unless token
36
38
 
37
39
  @token = token
40
+ @cache = Zache.new
38
41
 
39
42
  me
40
43
  end
@@ -43,14 +46,18 @@ module DBLista::User
43
46
  #
44
47
  # @return [Hash] raw data from DBLista
45
48
  def me
46
- DBLista._get('/users/me', @token)
49
+ @cache.get(:guilds, lifetime: DBLista::CACHE_LIFETIME) do
50
+ DBLista._get('/users/me', @token)
51
+ end
47
52
  end
48
53
 
49
54
  # Fetches current user guilds
50
55
  #
51
56
  # @return [Hash] raw data from DBLista
52
57
  def guilds
53
- DBLista._get('/users/me/guilds', @token)
58
+ @cache.get(:guilds, lifetime: DBLista::CACHE_LIFETIME) do
59
+ DBLista._get('/users/me/guilds', @token)
60
+ end
54
61
  end
55
62
  end
56
63
  end
@@ -3,47 +3,50 @@
3
3
  module DBLista::User
4
4
  # User client - notifications
5
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
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
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
13
+ # Clears user notifications
14
+ #
15
+ # @return [Boolean] true if operation succeded
16
+ def clear_notifications
17
+ DBLista._get('/users/me/notifications/clear', @token)
18
+ true
19
+ end
19
20
 
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
21
+ # Sends notification to specified user
22
+ # Available only for DBLista staff
23
+ #
24
+ # @param rank [Integer] user ID
25
+ # @param details [String] details (content)
26
+ # @param url [String] url to redirect if clicked
27
+ # @return [Boolean] true if operation succeded
28
+ def send_notification(id, details, url = '#')
29
+ DBLista._validate_id id
30
+ DBLista._post("/users/#{id}/notifications", {
31
+ text: details,
32
+ url: url || '#'
33
+ }, @token)
34
+ true
35
+ end
34
36
 
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
37
+ # Sends notification to specified group (rank)
38
+ # Available only for DBLista staff
39
+ #
40
+ # @param rank [Integer] rank ID
41
+ # @param details [String] details (content)
42
+ # @param url [String] url to redirect if clicked
43
+ # @return [Boolean] true if operation succeded
44
+ def send_group_notification(rank, details, url = '#')
45
+ DBLista._post("/users/group/#{rank}/notifications", {
46
+ text: details,
47
+ url: url || '#'
48
+ }, @token)
49
+ true
50
+ end
48
51
  end
49
52
  end
@@ -3,34 +3,36 @@
3
3
  module DBLista::User
4
4
  # User client - rating
5
5
  module Rating
6
- # Sends rate for a selected bot/server
7
- #
8
- # @param id [Integer] entity ID
9
- # @param rating [Integer] rating from 0 to 5
10
- # @param details [String] details (description)
11
- # @param type [Symbol] type of entity (bot/server)
12
- # @return [Hash] raw data from DBLista
13
- def rate(id, rating, details, type = :bot)
14
- DBLista._validate_id id
15
- raise DBLista::Error, DBLista::Errors::TYPE_NOT_ALLOWED unless ALLOWED_TYPES.include?(type)
6
+ # Sends rate for a selected bot/server
7
+ #
8
+ # @param id [Integer] entity ID
9
+ # @param rating [Integer] rating from 0 to 5
10
+ # @param details [String] details (description)
11
+ # @param type [Symbol] type of entity (bot/server)
12
+ # @return [Boolean] true if operation succeded
13
+ def rate(id, rating, details, type = :bot)
14
+ DBLista._validate_id id
15
+ raise DBLista::Error, DBLista::Errors::TYPE_NOT_ALLOWED unless DBLista::User::Client::ALLOWED_TYPES.include?(type)
16
16
 
17
- DBLista._post("/#{type}s/#{id}/rate", {
18
- rating: rating,
19
- details: details
20
- }, @token)
21
- end
17
+ DBLista._post("/#{type}s/#{id}/rate", {
18
+ rating: rating,
19
+ details: details
20
+ }, @token)
21
+ true
22
+ end
22
23
 
23
- # Removes rate for a selected bot/server
24
- #
25
- # @param id [Integer] entity ID
26
- # @param target_id [Integer] target user to remove rate from (for owners only)
27
- # @param type [Symbol] type of entity (bot/server)
28
- # @return [Hash] raw data from DBLista
29
- def delete_rate(id, target_id = nil, type = :bot)
30
- DBLista._validate_id id
31
- raise DBLista::Error, DBLista::Errors::TYPE_NOT_ALLOWED unless DBLista::User::Client::ALLOWED_TYPES.include?(type)
24
+ # Removes rate for a selected bot/server
25
+ #
26
+ # @param id [Integer] entity ID
27
+ # @param target_id [Integer] target user to remove rate from (for owners only)
28
+ # @param type [Symbol] type of entity (bot/server)
29
+ # @return [Boolean] true if operation succeded
30
+ def delete_rate(id, target_id = nil, type = :bot)
31
+ DBLista._validate_id id
32
+ raise DBLista::Error, DBLista::Errors::TYPE_NOT_ALLOWED unless DBLista::User::Client::ALLOWED_TYPES.include?(type)
32
33
 
33
- DBLista._delete("/#{type}s/#{id}/rate/#{target_id}", nil, @token)
34
- end
34
+ DBLista._delete("/#{type}s/#{id}/rate/#{target_id}", nil, @token)
35
+ true
36
+ end
35
37
  end
36
38
  end
@@ -5,39 +5,39 @@ require 'cgi'
5
5
  module DBLista::User
6
6
  # User client - verification (only for staff)
7
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
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
15
 
16
- DBLista._post("/bots/#{id}/approve?reason=#{CGI.escape reason}", nil, @token)
17
- true
18
- end
16
+ DBLista._post("/bots/#{id}/approve?reason=#{CGI.escape reason}", nil, @token)
17
+ true
18
+ end
19
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
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
27
 
28
- DBLista._post("/bots/#{id}/reject?reason=#{CGI.escape reason}", nil, @token)
29
- true
30
- end
28
+ DBLista._post("/bots/#{id}/reject?reason=#{CGI.escape reason}", nil, @token)
29
+ true
30
+ end
31
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
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
38
 
39
- DBLista._post("/bots/#{id}/set-pending", nil, @token)
40
- true
41
- end
39
+ DBLista._post("/bots/#{id}/set-pending", nil, @token)
40
+ true
41
+ end
42
42
  end
43
43
  end
@@ -3,16 +3,17 @@
3
3
  module DBLista::User
4
4
  # User client - voting
5
5
  module Voting
6
- # Votes for a selected bot/server
7
- #
8
- # @param id [Integer] entity ID
9
- # @param type [Symbol] type of entity (bot/server)
10
- # @return [Hash] raw data from DBLista
11
- def vote(id, type = :bot)
12
- DBLista._validate_id id
13
- raise DBLista::Error, DBLista::Errors::TYPE_NOT_ALLOWED unless DBLista::User::Client::ALLOWED_TYPES.include?(type)
6
+ # Votes for a selected bot/server
7
+ #
8
+ # @param id [Integer] entity ID
9
+ # @param type [Symbol] type of entity (bot/server)
10
+ # @return [Boolean] true if operation succeded
11
+ def vote(id, type = :bot)
12
+ DBLista._validate_id id
13
+ raise DBLista::Error, DBLista::Errors::TYPE_NOT_ALLOWED unless DBLista::User::Client::ALLOWED_TYPES.include?(type)
14
14
 
15
- DBLista._post("/#{type}s/#{id}/vote", nil, @token)
16
- end
15
+ DBLista._post("/#{type}s/#{id}/vote", nil, @token)
16
+ true
17
+ end
17
18
  end
18
19
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  module DBLista
4
4
  # Wrapper version
5
- VERSION = '0.2.0'
5
+ VERSION = '0.4.0'
6
6
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dblista
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.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-04 00:00:00.000000000 Z
11
+ date: 2020-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: zache
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -68,8 +82,14 @@ files:
68
82
  - bin/console
69
83
  - bin/setup
70
84
  - dblista.gemspec
71
- - example/info.rb
85
+ - examples/auto_stats.rb
86
+ - examples/bot_add.rb
87
+ - examples/full_bot_name_list.rb
88
+ - examples/notifications.rb
89
+ - examples/tag_search.rb
90
+ - examples/user_avatar.rb
72
91
  - lib/dblista.rb
92
+ - lib/dblista/constants.rb
73
93
  - lib/dblista/errors.rb
74
94
  - lib/dblista/helpers.rb
75
95
  - lib/dblista/info.rb
@@ -1,3 +0,0 @@
1
- require 'dblista'
2
-
3
- puts DBLista::Information.bot('594589970740543490')