class OverSIP::Modules::Callsign::Client

Public Class Methods

new(client_id, client_secret) click to toggle source
# File lib/oversip-mod-callsign/client.rb, line 35
def initialize client_id, client_secret
  @base_url = 'https://callsign.bwincubator.com/v1'
  @client_id = client_id
  @client_secret = client_secret
end

Public Instance Methods

describe_token(access_token) click to toggle source
# File lib/oversip-mod-callsign/client.rb, line 12
def describe_token(access_token)
  url = [
      @base_url,
      'tokens',
      access_token
  ].join('/')

  request = if ::Fiber.current != OverSIP.root_fiber
    send_request :get, url
  else
    ::Fiber.new do
      send_request :get, url
    end.resume
  end

  status = request.response_header.status
  if status == 200
    Token.from_json request.response
  else
    nil
  end
end

Private Instance Methods

send_request(method, url) click to toggle source
# File lib/oversip-mod-callsign/client.rb, line 43
def send_request(method, url)
  fiber = Fiber.current
  credentials = Base64.strict_encode64 [@client_id, @client_secret].join(':')
  http = EventMachine::HttpRequest.new(url).__send__ method.to_sym, :head => { 'Authorization' => ['Basic', credentials].join(' ') }
  http.callback { fiber.resume(http) }
  http.errback { fiber.resume(http) }

  Fiber.yield
end