Sha256: 6a6b7514a7c688237a4e30c6bb07ecb059c4b292f2ff661a84bfb2a0344cbbea

Contents?: true

Size: 1.47 KB

Versions: 2

Compression:

Stored size: 1.47 KB

Contents

require 'uri'
require 'net/http'
require 'singleton'

module CaliperApi

  class Poster
    include Singleton

    def initialize
      @base_uri = Caliper.config[:api_host]
    end

    def self.send(url, data)
      instance.post(url, data)
    end

    def post(url, data = "")
      begin
        uri = URI.parse(@base_uri + url)
        http = Net::HTTP.new(uri.host, uri.port)

        http.open_timeout = 5 # in seconds
        http.read_timeout = 5 # in seconds

        request = Net::HTTP::Post.new(uri.request_uri)
        request["X_API_KEY"] = Caliper.config[:api_key]
        request["Content-Type"] = "application/json"
        request["Accept"] = "application/json"

        request.body = data

        response = http.request(request)

        status = response.code.to_i
        if status == 401
          Caliper.logger.error "CaliperApi: Error: Not authorized check your API key on #{Caliper.config[:api_host]}"
        elsif status > 400
          Caliper.logger.error "CaliperApi: Error: got #{response.code} from server"
        end
      rescue Exception => e
        Caliper.logger.error "CaliperApi: Http error: #{e.message}"
      end
    end
  end

  def self.test_post
    Poster.send("/api/test", "")
  end

  def self.create_trace(tracer_json)
    Poster.send("/api/traces", tracer_json)
  end

  def self.create_error(error_json)
    Poster.send("/api/errors", error_json)
  end

  def self.update_routes(routes_json)
    Poster.send("/api/routes", routes_json)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
caliper-0.0.2 lib/caliper_api/http.rb
caliper-0.0.1 lib/caliper_api/http.rb