class Facturama::Services::HttpService

Public Class Methods

new(connection_info, uri_resource ) click to toggle source
# File lib/facturama/services/http_service.rb, line 11
def initialize(connection_info, uri_resource )
    @connection_info = connection_info
    @uri_resource = uri_resource
end

Public Instance Methods

delete(args = "") click to toggle source
# File lib/facturama/services/http_service.rb, line 74
def delete(args = "")
    res=RestClient::Request.new(
        :method => :delete,
        :url => url(args),
        :user => @connection_info.facturama_user,
        :password => @connection_info.facturama_password ,
        :headers => {:accept => :json,
                     :content_type => :json
        }
    )

    executor(res)
end
get(args='') click to toggle source
# File lib/facturama/services/http_service.rb, line 18
def get(args='')
    res=RestClient::Request.new(
        :method => :get,
        :url => url(args),
        :user => @connection_info.facturama_user,
        :password => @connection_info.facturama_password ,
        :headers => {:accept => :json,
                     :content_type => :json,
                     :user_agent => '',
        }
    )

    executor(res)
end
post(message, args = "") click to toggle source
# File lib/facturama/services/http_service.rb, line 36
def post(message, args = "")
    json =message.to_json

    res= RestClient::Request.new(
        :method => :post,
        :url => url(args),
        :user => @connection_info.facturama_user,
        :password => @connection_info.facturama_password,
        :payload => json,
        :headers => { :content_type => :json }
    )

    executor(res)
end
put(message, args = "") click to toggle source
# File lib/facturama/services/http_service.rb, line 55
def put(message, args = "")
    json =message.to_json

    res= RestClient::Request.new(
        :method => :put,
        :url => url(args),
        :user => @connection_info.facturama_user,
        :password => @connection_info.facturama_password ,
        :payload => json,
        :headers => {:accept => :json,
                     :content_type => :json}
    )

    executor(res)
end

Private Instance Methods

executor(request) click to toggle source

Executa la peticion y procesa la respuesta decodificando el JSON a un Hash y Conviriendo los errores de la API en FacturamaExceptions

# File lib/facturama/services/http_service.rb, line 111
def executor(request)

    begin
        response = request.execute

        if response.code != 204 && response.body != ""     # 204 = sin contenido
            JSON[ response]
        end


    #exceptions
    rescue Exception => e
        case e.class.name
        when "RestClient::NotFound"
            raise( FacturamaException.new( "404 NotFound: Elemento no encontrado" ) )
        when "RestClient::BadRequest"
            json_response = JSON[e.response]
            model_state = json_response['ModelState']
            if model_state != nil
                model_state = json_response['ModelState'].map{|k,v| [k.to_s, v]}
                fact_exception = FacturamaException.new( json_response['Message']  )
            end

            fact_exception = FacturamaException.new( json_response['Message'], model_state   )
            raise( fact_exception  )
        else
            raise( Exception.new( e.response ) )
        end

    end

end
url(args = '') click to toggle source
# File lib/facturama/services/http_service.rb, line 93
def url(args = '')
    slash = ""
    args = args.to_s

    if args.length > 0
        slash = (args =~ /^\?/)? "" : "/"
    end

    if(@uri_resource.length > 0)
        @uri_resource = "/" + @uri_resource;
    end

    @connection_info.uri_base + @uri_resource + slash + args
end