Class: SmarterMeter::Services::Pachube
- Inherits:
-
Object
- Object
- SmarterMeter::Services::Pachube
- Defined in:
- lib/smartermeter/services/pachube.rb
Instance Method Summary collapse
-
#initialize(ui, config) ⇒ Pachube
constructor
A new instance of Pachube.
-
#request_body(samples) ⇒ Object
Creates the proper XML request to send to Pachube.
-
#upload(samples) ⇒ Object
Public: Uploads an array of Samples to Pachube.
Constructor Details
#initialize(ui, config) ⇒ Pachube
Returns a new instance of Pachube.
6 7 8 9 10 11 12 |
# File 'lib/smartermeter/services/pachube.rb', line 6 def initialize(ui, config) @ui = ui @config = config raise "The Pachube token must be configured" unless @config[:api_key] raise "The Pachube feed id must be configured" unless @config[:feed_id] raise "The Pachube datastream id must be configured" unless @config[:datastream_id] end |
Instance Method Details
#request_body(samples) ⇒ Object
Creates the proper XML request to send to Pachube
Returns the proper text/csv request to send to pachube
38 39 40 41 |
# File 'lib/smartermeter/services/pachube.rb', line 38 def request_body(samples) template = ERB.new(File.read(File.join(File.dirname(__FILE__), "pachube.erb"))) template.result(binding).gsub(/^\n/, '') end |
#upload(samples) ⇒ Object
Public: Uploads an array of Samples to Pachube
samples - An array of samples to upload
Returns true on success and false otherwise
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/smartermeter/services/pachube.rb', line 19 def upload(samples) url = URI.parse("https://api.pachube.com/v2/feeds/#{@config[:feed_id]}/datastreams/#{@config[:datastream_id]}/datapoints.csv") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.ca_file = File.join(File.dirname(__FILE__), "cacert.pem") res, body = http.post(url.path, request_body(samples), {"X-PachubeApiKey" => @config[:api_key], "Content-Type" => "text/csv"}) @ui.log.debug("Pachube Response: #{res}") case res when Net::HTTPSuccess true else false end end |