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
28 29 30 31 32 33 34 |
# File 'lib/discord_rda/connection/rest_client.rb', line 28 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.
17 18 19 |
# File 'lib/discord_rda/connection/rest_client.rb', line 17 def config @config end |
#logger ⇒ Logger (readonly)
Returns Logger instance.
20 21 22 |
# File 'lib/discord_rda/connection/rest_client.rb', line 20 def logger @logger end |
#rate_limiter ⇒ RateLimiter (readonly)
Returns Rate limiter instance.
23 24 25 |
# File 'lib/discord_rda/connection/rest_client.rb', line 23 def rate_limiter @rate_limiter end |
Instance Method Details
#delete(path, params: {}, headers: {}) ⇒ Hash
Make a DELETE request
108 109 110 |
# File 'lib/discord_rda/connection/rest_client.rb', line 108 def delete(path, params: {}, headers: {}) request(:delete, path, params: params, headers: headers) end |
#get(path, params: {}, headers: {}) ⇒ Hash
Make a GET request
54 55 56 |
# File 'lib/discord_rda/connection/rest_client.rb', line 54 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
95 96 97 98 99 100 101 |
# File 'lib/discord_rda/connection/rest_client.rb', line 95 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
65 66 67 68 69 70 71 |
# File 'lib/discord_rda/connection/rest_client.rb', line 65 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
80 81 82 83 84 85 86 |
# File 'lib/discord_rda/connection/rest_client.rb', line 80 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
38 39 40 |
# File 'lib/discord_rda/connection/rest_client.rb', line 38 def start @internet = Async::HTTP::Internet.new end |
#stop ⇒ void
This method returns an undefined value.
Stop the HTTP client
44 45 46 47 |
# File 'lib/discord_rda/connection/rest_client.rb', line 44 def stop @internet&.close @internet = nil end |