class RGovData::OdataService

This is the catalog class that describes an OData Service

Public Instance Methods

dataset_keys() click to toggle source

Returns an array of DataSets (keys) for the service

# File lib/rgovdata/service/odata_service.rb, line 7
def dataset_keys
  # @dataset_keys ||= native_instance.classes.keys
  @dataset_keys ||= native_instance.instance_variable_get(:@collections)
end
native_instance() click to toggle source

Returns the native service object if applicable By default, returns self

# File lib/rgovdata/service/odata_service.rb, line 14
def native_instance
  @native_instance ||= load_service
end

Protected Instance Methods

clear() click to toggle source

Clears current state TODO: move to Dn?

# File lib/rgovdata/service/odata_service.rb, line 45
def clear
  @datasets = @dataset_keys = @native_instance = nil
end
load_service() click to toggle source

Identifies, loads, and returns the native service instance

# File lib/rgovdata/service/odata_service.rb, line 19
def load_service
  clear
  # currently forcing SSL verification off (seems to be required for projectnimbus)
  # TODO: this should probably be a setting in the ServiceListing
  rest_options = {:verify_ssl=>false}
  if credentialset && credentialset != 'projectnimbus'
    credentials = config.credentialsets[credentialset]
    # merge basic auth
    rest_options.merge!({ :username => credentials['username'], :password => credentials['password'] })
  end
  svc = OData::Service.new(uri, rest_options)
  if credentialset && credentialset == 'projectnimbus'
    credentials = config.credentialsets[credentialset]
    # some special funk to insert headers for projectnimbus authentication
    actual_rest_options = svc.instance_variable_get(:@rest_options)
    rest_options = actual_rest_options.merge({:headers => {
      'AccountKey' => credentials['AccountKey'], 'UniqueUserID' => credentials['UniqueUserID']
    }})
    svc.instance_variable_set(:@rest_options,rest_options)
  end
  svc
end