Sha256: eeeadcaaf93c50434478f03e1af7bd2f20c338e77386bcd154e2795763ce05ab

Contents?: true

Size: 1.18 KB

Versions: 1

Compression:

Stored size: 1.18 KB

Contents

module StreamElements
  class Resource
    attr_reader :client

    def initialize(client)
      @client = client
    end

    private

    def get_request(url, params: {}, headers: {})
      handle_response client.connection.get(url, params, headers)
    end

    def post_request(url, body: {}, headers: {})
      handle_response client.connection.post(url, body, headers)
    end

    def put_request(url, body: {}, headers: {})
      handle_response client.connection.put(url, body, headers)
    end

    def patch_request(url, body:, headers: {})
      handle_response client.connection.patch(url, body, headers)
    end

    def delete_request(url, headers: {})
      handle_response client.connection.delete(url, headers)
    end

    def handle_response(response)
      return true if response.status == 204
      return response unless error?(response)

      raise_error(response)
    end

    def error?(response)
      [ 400, 401, 403, 404, 409, 429, 500, 501, 503 ].include?(response.status) #|| response.body&.key?("error")
    end

    def raise_error(response)
      error = StreamElements::ErrorFactory.create(response.body, response.status)
      raise error if error
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
streamelements-0.5.0 lib/stream_elements/resource.rb