Sha256: ce3eb2b52f6b83e7b0b383f4192457e4eb3f10bbf7c263731022f2b9f3336d0f

Contents?: true

Size: 1.8 KB

Versions: 1

Compression:

Stored size: 1.8 KB

Contents

require 'rest-client'
require 'json'
require 'redis'

module RestApiClient

  class RequestsHandler

    def self.perform_get(service_key, path, args = {:params => {}})
      RestClient.get(get_service_url(service_key) + path, args[:params]) { |response, request, result, &block|
        get_response_callback(args).call(response, request, result, &block)
      }
    end

    def self.perform_post(service_key, path, args = {})
      RestClient.post(get_service_url(service_key) + path, args[:params]) { |response, request, result, &block|
        get_response_callback(args).call(response, request, result, &block)
      }
    end

    def self.perform_put(service_key, path, args = {})
      RestClient.put(get_service_url(service_key) + path, args[:params]) { |response, request, result, &block|
        get_response_callback(args).call(response, request, result, &block)
      }
    end

    def self.perform_delete(service_key, path, args = {})
      RestClient.delete(get_service_url(service_key) + path, args[:params]) { |response, request, result, &block|
        get_response_callback(args).call(response, request, result, &block)
      }
    end

    def self.get_service_url(service_key)
      redis = Redis.new
      path = redis.get service_key
      raise RestApiClient::ServiceUrlException.new('You must need to set the service key') unless path
      path << '/' unless path.end_with?('/')
      path
    end

    def self.get_response_callback(args)
      lambda do |response, request, result, &block|
        if response.code >= 200 && response.code < 300
          RestApiClient.parse_json response, args

        elsif [301, 302, 307].include? response.code
          response.follow_redirection(request, result, &block)

        else
          response.return!(request, result, &block)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rest-api-client-0.1.0 lib/rest/api/client/request_handler.rb