Class: DiscordRDA::RestClient
- Inherits:
-
Object
- Object
- DiscordRDA::RestClient
- Defined in:
- lib/discord_rda/connection/rest_client.rb
Overview
HTTP client for Discord REST API. Handles requests, rate limiting, and response parsing.
Defined Under Namespace
Classes: APIError, BadRequestError, ForbiddenError, NotFoundError, RateLimitedError, ServerError, UnauthorizedError
Constant Summary collapse
- API_BASE =
Discord API base URL
'https://discord.com/api/v10'
Instance Attribute Summary collapse
-
#config ⇒ Configuration
readonly
Configuration instance.
-
#logger ⇒ Logger
readonly
Logger instance.
-
#rate_limiter ⇒ RateLimiter
readonly
Rate limiter instance.
Instance Method Summary collapse
-
#delete(path, params: {}, headers: {}) ⇒ Hash
Make a DELETE request.
-
#get(path, params: {}, headers: {}) ⇒ Hash
Make a GET request.
-
#initialize(config, logger) ⇒ RestClient
constructor
Initialize the REST client.
-
#patch(path, body: nil, params: {}, headers: {}, files: nil) ⇒ Hash
Make a PATCH request.
-
#post(path, body: nil, params: {}, headers: {}, files: nil) ⇒ Hash
Make a POST request.
-
#put(path, body: nil, params: {}, headers: {}, files: nil) ⇒ Hash
Make a PUT request.
-
#start ⇒ void
Start the HTTP client.
-
#stop ⇒ void
Stop the HTTP client.
Constructor Details
#initialize(config, logger) ⇒ RestClient
Initialize the REST client
29 30 31 32 33 34 35 |
# File 'lib/discord_rda/connection/rest_client.rb', line 29 def initialize(config, logger) @config = config @logger = logger @rate_limiter = RateLimiter.new(logger: logger) @internet = nil @mutex = Mutex.new end |
Instance Attribute Details
#config ⇒ Configuration (readonly)
Returns Configuration instance.
18 19 20 |
# File 'lib/discord_rda/connection/rest_client.rb', line 18 def config @config end |
#logger ⇒ Logger (readonly)
Returns Logger instance.
21 22 23 |
# File 'lib/discord_rda/connection/rest_client.rb', line 21 def logger @logger end |
#rate_limiter ⇒ RateLimiter (readonly)
Returns Rate limiter instance.
24 25 26 |
# File 'lib/discord_rda/connection/rest_client.rb', line 24 def rate_limiter @rate_limiter end |
Instance Method Details
#delete(path, params: {}, headers: {}) ⇒ Hash
Make a DELETE request
109 110 111 |
# File 'lib/discord_rda/connection/rest_client.rb', line 109 def delete(path, params: {}, headers: {}) request(:delete, path, params: params, headers: headers) end |
#get(path, params: {}, headers: {}) ⇒ Hash
Make a GET request
55 56 57 |
# File 'lib/discord_rda/connection/rest_client.rb', line 55 def get(path, params: {}, headers: {}) request(:get, path, params: params, headers: headers) end |
#patch(path, body: nil, params: {}, headers: {}, files: nil) ⇒ Hash
Make a PATCH request
96 97 98 99 100 101 102 |
# File 'lib/discord_rda/connection/rest_client.rb', line 96 def patch(path, body: nil, params: {}, headers: {}, files: nil) if files request_multipart(:patch, path, body: body, files: files, params: params, headers: headers) else request(:patch, path, body: body, params: params, headers: headers) end end |
#post(path, body: nil, params: {}, headers: {}, files: nil) ⇒ Hash
Make a POST request
66 67 68 69 70 71 72 |
# File 'lib/discord_rda/connection/rest_client.rb', line 66 def post(path, body: nil, params: {}, headers: {}, files: nil) if files request_multipart(:post, path, body: body, files: files, params: params, headers: headers) else request(:post, path, body: body, params: params, headers: headers) end end |
#put(path, body: nil, params: {}, headers: {}, files: nil) ⇒ Hash
Make a PUT request
81 82 83 84 85 86 87 |
# File 'lib/discord_rda/connection/rest_client.rb', line 81 def put(path, body: nil, params: {}, headers: {}, files: nil) if files request_multipart(:put, path, body: body, files: files, params: params, headers: headers) else request(:put, path, body: body, params: params, headers: headers) end end |
#start ⇒ void
This method returns an undefined value.
Start the HTTP client
39 40 41 |
# File 'lib/discord_rda/connection/rest_client.rb', line 39 def start @internet = Async::HTTP::Internet.new end |
#stop ⇒ void
This method returns an undefined value.
Stop the HTTP client
45 46 47 48 |
# File 'lib/discord_rda/connection/rest_client.rb', line 45 def stop @internet&.close @internet = nil end |