Sha256: 47d98725962ac2e2f8c39ec5ec93372c34d6d70ce5d987b21846609eaf1dcffe
Contents?: true
Size: 1.26 KB
Versions: 2
Compression:
Stored size: 1.26 KB
Contents
require "faraday" require "json" require "forwardable" require "espago/router" require "espago/error" require "espago/response" require "facets/kernel/require_all" require_all "error/*" require_all "api_connection/*" module Espago class ApiConnection extend Forwardable def_delegator :@connection, :basic_auth, :authenticate def initialize(enviroment) @connection = Faraday.new(enviroment) @router = Router end def create(path, method, params = {} ) route = @router.new(path, method).route response = route.new(@connection).request(params) handle_response response end private def handle_response(response) case response.status when 200, 201, 204 return Response.new(response) when 400, 404, 422 raise invalid_request_error(response) when 401 raise authentication_error(response) else raise api_error(response.status, response.body) end end def invalid_request_error(response) InvalidRequestError.new(response) end def authentication_error(response) AuthenticationError.new(response) end def api_error(response) ApiError.new(response) end def parse(body) JSON.parse body end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
espago-0.0.9 | lib/espago/api_connection.rb |
espago-0.0.7 | lib/espago/api_connection.rb |