class PusherPlatform::Instance

Public Class Methods

new(options) click to toggle source
# File lib/pusher-platform/instance.rb, line 11
def initialize(options)
  raise "No instance locator provided" if options[:locator].nil?
  raise "No service name provided" if options[:service_name].nil?
  raise "No service version provided" if options[:service_version].nil?
  locator = options[:locator]
  @service_name = options[:service_name]
  @service_version = options[:service_version]

  key_parts = options[:key].match(/^([^:]+):(.+)$/)
  raise "Invalid key" if key_parts.nil?

  @key_id = key_parts[1]
  @key_secret = key_parts[2]

  split_locator = locator.split(':')

  @platform_version = split_locator[0]
  @cluster = split_locator[1]
  @instance_id = split_locator[2]

  @client = if options[:client]
    options[:client]
  else
    BaseClient.new(
      host: options[:host] || "#{@cluster}.#{HOST_BASE}",
      port: options[:port],
      instance_id: @instance_id,
      service_name: @service_name,
      service_version: @service_version
    )
  end

  @authenticator = Authenticator.new(@instance_id, @key_id, @key_secret)
end

Public Instance Methods

authenticate(request, options) click to toggle source
# File lib/pusher-platform/instance.rb, line 55
def authenticate(request, options)
  @authenticator.authenticate(request, options)
end
generate_access_token(options) click to toggle source
# File lib/pusher-platform/instance.rb, line 59
def generate_access_token(options)
  @authenticator.generate_access_token(options)
end
request(options) click to toggle source
# File lib/pusher-platform/instance.rb, line 46
def request(options)
  if options[:jwt].nil?
    options = options.merge(
      { jwt: @authenticator.generate_access_token({ su: true })[:token] }
    )
  end
  @client.request(options)
end