class Ribbon::Intercom::Client::SDK::Adapters::LocalAdapter

Attributes

channel_secret[RW]
channel_token[RW]
service[R]

Public Instance Methods

connect(service, params={}) click to toggle source
# File lib/ribbon/intercom/client/sdk/adapters/local_adapter.rb, line 10
def connect(service, params={})
  case service
  when Service
    @service = service
  else
    raise ArgumentError, "Expected a service, got: #{service.inspect}"
  end

  @channel_token = params[:channel_token]
  @channel_secret = params[:channel_secret]
end
connected?(*args) click to toggle source
# File lib/ribbon/intercom/client/sdk/adapters/local_adapter.rb, line 22
def connected?(*args)
  !!service
end
send_packet!(encoded_packet) click to toggle source

Mimics an HTTP PUT

# File lib/ribbon/intercom/client/sdk/adapters/local_adapter.rb, line 28
def send_packet!(encoded_packet)
  response = service.call(
    _http_headers.merge(
      'HTTP_AUTHORIZATION'     => _http_auth,
      'REQUEST_METHOD'         => 'PUT',
      'rack.input'             => StringIO.new(encoded_packet)
    )
  )

  Adapter::Response.new(response[2], response[0], response[1])
end

Private Instance Methods

_header_to_http(name) click to toggle source
# File lib/ribbon/intercom/client/sdk/adapters/local_adapter.rb, line 50
def _header_to_http(name)
  "HTTP_#{name.to_s.upcase.gsub('-', '_')}"
end
_http_auth() click to toggle source
# File lib/ribbon/intercom/client/sdk/adapters/local_adapter.rb, line 42
def _http_auth
  "Basic #{Base64.strict_encode64("#{channel_token}:#{channel_secret}")}"
end
_http_headers() click to toggle source
# File lib/ribbon/intercom/client/sdk/adapters/local_adapter.rb, line 46
def _http_headers
  Hash[headers.map { |name, value| [_header_to_http(name), value] }]
end