Sha256: e125dcd11078b3b9db39f6d5548f6b8598ec5cec87c08a73fadf0a8350816bfd

Contents?: true

Size: 1.29 KB

Versions: 2

Compression:

Stored size: 1.29 KB

Contents

require "concurrent"
require "rest-client"

module Sqspoller
  class WorkerTask

    HEADERS = { 'Content-Type' => 'application/json',
                'Accept' => 'application/json'
              }
    ALLOWED_METHODS = { 'post' => :post,
                        'get'  => :get
                      }

    def initialize(worker_configuration, logger_file)
      @http_method = ALLOWED_METHODS[worker_configuration[:http_method].downcase]
      @http_url = worker_configuration[:http_url]
      @timeout = worker_configuration[:timeout] && worker_configuration[:timeout].to_i || 450
    end

    def process(message, _message_id)
      if @http_method
        RestClient::Request.execute(:method => @http_method,
                                    :url => @http_url,
                                    :payload => message,
                                    :headers => HEADERS,
                                    :timeout => @timeout,
                                    :open_timeout => 5) do |response, request, result|
          case response.code
          when 200
            return "OK"
          else
            raise "Service did not return 200 OK response. #{response.code}"
          end
        end
      else
        raise "Invalid http_method provided. #{http_method}"
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fk-redis-sqspoller-0.1.1 lib/sqspoller/worker_task.rb
fk-redis-sqspoller-0.1.0 lib/sqspoller/worker_task.rb