diff --git a/lib/panda/config.rb b/lib/panda/config.rb index 255471f..7ae236f 100644 --- a/lib/panda/config.rb +++ b/lib/panda/config.rb @@ -29,7 +29,7 @@ def config [:api_host, :api_port, :access_key, :secret_key, - :api_version, :cloud_id].each do |attr| + :api_version, :cloud_id, :token].each do |attr| define_method "#{attr}" do |value| config["#{attr.to_s}"] = value end @@ -74,6 +74,9 @@ def valid? def validation_errors err = [] + unless config["token"].to_s.empty? + return err + end if config["access_key"].to_s.empty? err << "access_key is missing" end diff --git a/lib/panda/connection.rb b/lib/panda/connection.rb index 0fcbbb1..58d3316 100644 --- a/lib/panda/connection.rb +++ b/lib/panda/connection.rb @@ -5,7 +5,7 @@ module Panda EU_API_HOST="api-eu.pandastream.com" class Connection - attr_accessor :api_host, :api_port, :access_key, :secret_key, :api_version, :cloud_id + attr_accessor :api_host, :api_port, :access_key, :secret_key, :api_version, :cloud_id, :token def initialize(auth_params={}) params = { :api_host => US_API_HOST, :api_port => API_PORT }.merge!(auth_params) @@ -17,12 +17,13 @@ def initialize(auth_params={}) @api_host = params["api_host"] || params[:api_host] @api_port = params["api_port"] || params[:api_port] @prefix = params["prefix_url"] || "v#{api_version}" + @token = params["token"] || params[:token] end def http_client Panda::HttpClient::Faraday.new(api_url) end - + # Authenticated requests def get(request_uri, params={}) sp = signed_params("GET", request_uri, params) @@ -52,6 +53,10 @@ def signed_query(*args) def signed_params(verb, request_uri, params = {}, timestamp_str = nil) auth_params = stringify_keys(params) auth_params['cloud_id'] = cloud_id unless request_uri =~ /^\/clouds/ + if token + auth_params['token'] = token + return auth_params + end auth_params['access_key'] = access_key auth_params['timestamp'] = timestamp_str || Time.now.utc.iso8601(6) @@ -81,7 +86,7 @@ def setup_bucket(params={}) def to_hash hash = {} - [:api_host, :api_port, :access_key, :secret_key, :api_version, :cloud_id].each do |a| + [:api_host, :api_port, :access_key, :secret_key, :api_version, :cloud_id, :token].each do |a| hash[a] = send(a) end hash diff --git a/lib/panda/version.rb b/lib/panda/version.rb index 31ef438..0739487 100644 --- a/lib/panda/version.rb +++ b/lib/panda/version.rb @@ -1,3 +1,3 @@ module Panda - VERSION = "1.6.2" + VERSION = "1.6.3" end