Sha256: 634cfd364f975b456bd3b9911739712ddf720701c10c80b04acb04de410a73df
Contents?: true
Size: 1.31 KB
Versions: 1
Compression:
Stored size: 1.31 KB
Contents
# frozen_string_literal: true module LoopsSdk class Base class << self private def handle_response(response) case response.status when 200 JSON.parse(response.body) when 429 limit = response.headers["x-ratelimit-limit"] remaining = response.headers["x-ratelimit-remaining"] raise RateLimitError.new(limit, remaining) when 400, 404, 405, 409, 500 raise APIError.new(response.status, response.body) else raise APIError.new(response.status, "Unexpected error occurred") end end def make_request(method, path, params = {}, body = nil) response = LoopsSdk.configuration.connection.send(method, path, params) do |req| req.body = body.to_json if body end handle_response(response) end end end class RateLimitError < StandardError attr_reader :limit, :remaining def initialize(limit, remaining) @limit = limit @remaining = remaining super("Rate limit of #{limit} requests per second exceeded.") end end class APIError < StandardError attr_reader :status, :body def initialize(status, body) @status = status @body = body super("API request failed with status #{status}: #{body}") end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
loops_sdk-0.2.0 | lib/loops_sdk/base.rb |