Sha256: 66f0e83d11c648f98bb9d41f5b687b0e3758bcc7f16bc826a1b07c066a705f9e

Contents?: true

Size: 852 Bytes

Versions: 11

Compression:

Stored size: 852 Bytes

Contents

require "net/http"
require "openssl"

module AkamaiCCU
  class Client
    attr_reader :net_klass, :host

    def initialize(host:, net_klass: Net::HTTP)
      @host = host
      @net_klass = net_klass
    end

    def call(path: "/", method: POST, initheader: JSON_HEADER)
      request(path, method, initheader)
      yield @request if block_given?
      Thread.new { http.request(@request) }.value
    end

    private def base_uri
      @base_uri ||= URI("#{SSL}://#{host}")
    end

    private def http
      @http ||= @net_klass.new(base_uri.host, base_uri.port).tap do |http|
        http.use_ssl = true
        http.verify_mode = OpenSSL::SSL::VERIFY_PEER
      end
    end

    private def request(path, klass = GET, initheader = nil)
      @request ||= @net_klass.const_get(klass).new(base_uri.merge(path).to_s, initheader)
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
akamai_ccu-1.3.5 lib/akamai_ccu/client.rb
akamai_ccu-1.3.4 lib/akamai_ccu/client.rb
akamai_ccu-1.3.3 lib/akamai_ccu/client.rb
akamai_ccu-1.3.2 lib/akamai_ccu/client.rb
akamai_ccu-1.3.1 lib/akamai_ccu/client.rb
akamai_ccu-1.3.0 lib/akamai_ccu/client.rb
akamai_ccu-1.2.1 lib/akamai_ccu/client.rb
akamai_ccu-1.2.0 lib/akamai_ccu/client.rb
akamai_ccu-1.1.3 lib/akamai_ccu/client.rb
akamai_ccu-1.1.2 lib/akamai_ccu/client.rb
akamai_ccu-1.1.1 lib/akamai_ccu/client.rb