class GreenButtonData::Client

Attributes

configuration[RW]
ssl[RW]
token[RW]

Public Class Methods

new(config) click to toggle source
# File lib/green-button-data/client.rb, line 7
def initialize(config)
  @configuration = GreenButtonData::Configuration.new

  config.each do |key, value|
    if @configuration.respond_to? "#{key}="
      @configuration.send "#{key}=", value
    end
  end
end

Public Instance Methods

application_information(id = nil, options = {}) click to toggle source
# File lib/green-button-data/client.rb, line 17
def application_information(id = nil, options = {})
  if id.is_a? Hash
    options = id
    id = nil
  end

  get_resource(
    @configuration.application_information_url(id),
    id,
    ApplicationInformation,
    options
  )
end
authorization(id = nil, options = {}) click to toggle source
# File lib/green-button-data/client.rb, line 31
def authorization(id = nil, options = {})
  if id.is_a? Hash
    options = id
    id = nil
  end

  get_resource(
    @configuration.authorization_url(id),
    id,
    Authorization,
    sanitize_options(options)
  )
end
interval_block(id = nil, options = {}) click to toggle source
# File lib/green-button-data/client.rb, line 45
def interval_block(id = nil, options = {})
  if id.is_a? Hash
    options = id
    id = nil
  end

  id ||= options[:interval_block_id]
  meter_reading_id = options[:meter_reading_id]
  usage_point_id = options[:usage_point_id]
  subscription_id = options[:subscription_id]

  get_resource(
    @configuration.interval_block_url(
      interval_block_id: id,
      meter_reading_id: meter_reading_id,
      usage_point_id: usage_point_id,
      subscription_id: subscription_id
    ),
    id,
    IntervalBlock,
    sanitize_options(options)
  )
end
interval_block_bulk(id = nil, options = {}) click to toggle source
# File lib/green-button-data/client.rb, line 195
def interval_block_bulk(id = nil, options = {})
  if id.is_a? Hash
    options = id
    id = nil
  end

  subscription_id = options[:subscription_id]
  bulk_file_id = options[:bulk_file_id]

  get_resource(
    @configuration.bulk_url(
      subscription_id: subscription_id,
      bulk_file_id: bulk_file_id
    ),
    id,
    IntervalBlock,
    sanitize_options(options)
  )
end
local_time_parameters(id = nil, options = {}) click to toggle source
# File lib/green-button-data/client.rb, line 69
def local_time_parameters(id = nil, options = {})
  if id.is_a? Hash
    options = id
    id = nil
  end

  get_resource(
    @configuration.local_time_parameters_url(id),
    id,
    LocalTimeParameters,
    sanitize_options(options)
  )
end
meter_reading(id = nil, options = {}) click to toggle source
# File lib/green-button-data/client.rb, line 83
def meter_reading(id = nil, options = {})
  if id.is_a? Hash
    options = id
    id = nil
  end

  id ||= options[:meter_reading_id]
  usage_point_id = options[:usage_point_id]
  subscription_id = options[:subscription_id]

  get_resource(
    @configuration.meter_reading_url(
      meter_reading_id: id,
      usage_point_id: usage_point_id,
      subscription_id: subscription_id
    ),
    id,
    MeterReading,
    sanitize_options(options)
  )
end
reading_type(id = nil, options = {}) click to toggle source
# File lib/green-button-data/client.rb, line 105
def reading_type(id = nil, options = {})
  if id.is_a? Hash
    options = id
    id = nil
  end

  get_resource(
    @configuration.reading_type_url(id),
    id,
    ReadingType,
    sanitize_options(options)
  )
end
retail_customer(id = nil, options = {}) click to toggle source
# File lib/green-button-data/client.rb, line 177
def retail_customer(id = nil, options = {})
  if id.is_a? Hash
    options = id
    id = nil
  end

  retail_customer_id = options[:subscription_id]

  get_resource(
    @configuration.retail_customer_url(
      subscription_id: retail_customer_id
    ),
    id,
    RetailCustomer,
    sanitize_options(options)
  )
end
retail_customer_bulk(id = nil, options = {}) click to toggle source
# File lib/green-button-data/client.rb, line 235
def retail_customer_bulk(id = nil, options = {})
  if id.is_a? Hash
    options = id
    id = nil
  end

  subscription_id = options[:subscription_id]
  bulk_file_id = options[:bulk_file_id]

  get_resource(
    @configuration.bulk_url(
      subscription_id: subscription_id,
      bulk_file_id: bulk_file_id
    ),
    id,
    RetailCustomer,
    sanitize_options(options)
  )
end
ssl=(ssl) click to toggle source
# File lib/green-button-data/client.rb, line 119
def ssl=(ssl)
  ssl == nil || ssl.is_a?(Hash) or raise ArgumentError.new(
    "SSL options attribute must be a Hash"
  )

  @ssl = ssl
end
token=(token) click to toggle source
# File lib/green-button-data/client.rb, line 127
def token=(token)
  token == nil || token.is_a?(String) or raise ArgumentError.new(
    "Request token must be a string"
  )

  @token = token
end
usage_point(id = nil, options = {}) click to toggle source
# File lib/green-button-data/client.rb, line 135
def usage_point(id = nil, options = {})
  if id.is_a? Hash
    options = id
    id = nil
  end

  id ||= options[:usage_point_id]
  subscription_id = options[:subscription_id]

  get_resource(
    @configuration.usage_point_url(
      usage_point_id: id,
      subscription_id: subscription_id
    ),
    id,
    UsagePoint,
    sanitize_options(options)
  )
end
usage_summary(id = nil, options = {}) click to toggle source
# File lib/green-button-data/client.rb, line 155
def usage_summary(id = nil, options = {})
  if id.is_a? Hash
    options = id
    id = nil
  end

  id ||= options[:usage_summary_id]
  usage_point_id = options[:usage_point_id]
  subscription_id = options[:subscription_id]

  get_resource(
    @configuration.usage_summary_url(
      usage_summary_id: id,
      usage_point_id: usage_point_id,
      subscription_id: subscription_id
    ),
    id,
    UsageSummary,
    sanitize_options(options)
  )
end
usage_summary_bulk(id = nil, options = {}) click to toggle source
# File lib/green-button-data/client.rb, line 215
def usage_summary_bulk(id = nil, options = {})
  if id.is_a? Hash
    options = id
    id = nil
  end

  subscription_id = options[:subscription_id]
  bulk_file_id = options[:bulk_file_id]

  get_resource(
    @configuration.bulk_url(
      subscription_id: subscription_id,
      bulk_file_id: bulk_file_id
    ),
    id,
    UsageSummary,
    sanitize_options(options)
  )
end

Private Instance Methods

get_resource(url, id = nil, klazz = nil, options = {}) click to toggle source
# File lib/green-button-data/client.rb, line 257
def get_resource(url, id = nil, klazz = nil, options = {})
  klazz ||= Entry.class_from_name Entry.class_name_from_url url

  # Merge request options
  options[:token] ||= token if token
  options[:ssl] ||= ssl if ssl

  if id
    klazz.find url, options
  else
    klazz.all url, options
  end
end
sanitize_options(options) click to toggle source
# File lib/green-button-data/client.rb, line 271
def sanitize_options(options)
  options.delete(:interval_block_id) if options.has_key? :interval_block_id
  options.delete(:meter_reading_id) if options.has_key? :meter_reading_id
  options.delete(:subscription_id) if options.has_key? :subscription_id
  options.delete(:usage_point_id) if options.has_key? :usage_point_id
  options.delete(:usage_summary_id) if options.has_key? :usage_summary_id
  options.delete(:bulk_file_id) if options.has_key? :bulk_file_id
  options
end