Sha256: 703f4d31dacd69b5c743284f81d57566b8817af59b55000edd911cd21e2528c8

Contents?: true

Size: 1.72 KB

Versions: 1

Compression:

Stored size: 1.72 KB

Contents

require "logger"
require "concurrent"
require "net/http"
require "rest-client"
require "json"

module Sqspoller


  class WorkerTask

    def initialize(worker_configuration, logger_file)
      @logger = Logger.new(logger_file)
      @http_method = worker_configuration[:http_method]
      @http_url = worker_configuration[:http_url]
      @uri = URI(@http_url)
    end

    def process(message, message_id)
      params = {}
      parsed_message = JSON.parse(message)
      parsed_message.keys.each do |key|
        @logger.info "Creating a new params hash"
        params[key] = ( parsed_message[key].is_a?(Hash) ? parsed_message[key].to_json : parsed_message[key])
      end
      @logger.info "rest-client, Got params as: #{message}"
      @logger.info "rest-client, Got params as: #{parsed_message}"
      @logger.info "rest-client, Got params as: #{params}"
      @logger.info "rest-client, json params as: #{params.to_json}"

      if @http_method.downcase == "post"
        RestClient::Request.execute(:method => :post, :url => @http_url, :payload => params.to_json, :timeout => 10, :open_timeout => 5) do |response, request, result|
          process_http_response response
        end
      elsif @http_method.downcase == "get"
        RestClient::Request.execute(:method => :get, :url => @http_url, :payload => params.to_json, :timeout => 10, :open_timeout => 5) do |response, request, result|
          process_http_response response
        end
      else
        raise "Invalid http_method provided. #{http_method}"
      end
    end

    def process_http_response(response)
      case response.code
      when 200
        return "OK"
      else
        raise "Service did not return 200 OK response. #{response.code}"
      end
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fourkites-sqspoller-0.1.12.16 lib/sqspoller/worker_task.rb