class PlatformLib::DataService

Constants

AUTH_URL_FORMAT

Public Class Methods

new(username, password) click to toggle source
# File lib/platform_lib/data_service.rb, line 8
def initialize(username, password)
  @username = username
  @password = password
  @auth_token = nil

  @services = {}
end

Public Instance Methods

method_missing(method_name, *args) click to toggle source
Calls superclass method
# File lib/platform_lib/data_service.rb, line 16
def method_missing(method_name, *args)
  if method_name =~ /^(.*)_service$/
    service_by_name($1)
  else
    super
  end
end
sign_out() click to toggle source
# File lib/platform_lib/data_service.rb, line 24
def sign_out
  return if @auth_token.nil?
  
  url = AUTH_URL_FORMAT.sub(/ACTION/, 'signOut')
  url << "&_token=#{@auth_token}"
  uri = URI.parse(url)

  response = WebHelper::get(uri, :user => @username, :pass => @password)
  @auth_token = nil
  @services.clear
end

Private Instance Methods

service_by_name(name) { |service| ... } click to toggle source
# File lib/platform_lib/data_service.rb, line 41
def service_by_name(name)
  
  # we've already got an instance
  service = @services[name]

  if service.nil?
    # create a new service
    sign_in

    class_name = "#{name.capitalize}Service"
    service = PlatformLib.const_get(class_name).new(@auth_token)
    @services[name] = service
  end

  if block_given?
    yield(service)
  else
    service
  end
end
sign_in() click to toggle source
# File lib/platform_lib/data_service.rb, line 62
def sign_in
  uri = URI.parse(AUTH_URL_FORMAT.sub(/ACTION/, 'signIn'))
  response = WebHelper::get(uri, user: @username, pass: @password)

  response_object = Hashie::Mash.new(JSON.parse(response))
  @auth_token = response_object.signInResponse.token
end