Class: VersacommerceAPI::Session
- Inherits:
-
Object
- Object
- VersacommerceAPI::Session
- Defined in:
- lib/versacommerce_api/session.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
Returns the value of attribute name.
-
#token ⇒ Object
Returns the value of attribute token.
-
#url ⇒ Object
Returns the value of attribute url.
Class Method Summary collapse
Instance Method Summary collapse
- #create_permission_url ⇒ Object
-
#initialize(url, token = nil, params = nil) ⇒ Session
constructor
A new instance of Session.
- #shop ⇒ Object
-
#site ⇒ Object
Used by ActiveResource::Base to make all non-authentication API calls.
- #valid? ⇒ Boolean
Constructor Details
#initialize(url, token = nil, params = nil) ⇒ Session
Returns a new instance of Session.
16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/versacommerce_api/session.rb', line 16 def initialize(url, token = nil, params = nil) self.url, self.token = url, token if params && params[:signature] unless self.class.validate_signature(params) && params[:timestamp].to_i > 24.hours.ago.utc.to_i raise "Invalid Signature: Possible malicious login" end end self.class.prepare_url(self.url) end |
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
13 14 15 |
# File 'lib/versacommerce_api/session.rb', line 13 def name @name end |
#token ⇒ Object
Returns the value of attribute token.
13 14 15 |
# File 'lib/versacommerce_api/session.rb', line 13 def token @token end |
#url ⇒ Object
Returns the value of attribute url.
13 14 15 |
# File 'lib/versacommerce_api/session.rb', line 13 def url @url end |
Class Method Details
.get_password ⇒ Object
45 46 47 48 49 50 51 52 |
# File 'lib/versacommerce_api/session.rb', line 45 def self.get_password return nil if domain.blank? || api_key.blank? || secret.blank? token = request_token(domain) return if token.blank? Digest::MD5.hexdigest(secret + token) end |
.request_token(domain) ⇒ Object
34 35 36 37 38 39 40 41 42 43 |
# File 'lib/versacommerce_api/session.rb', line 34 def self.request_token(domain) return nil if domain.blank? || api_key.blank? begin uri = URI("https://#{domain}/api/auth.xml?api_key=#{api_key}") res = Net::HTTP.get_response(uri) Hash.from_xml(res.body)["token"] if res&.body rescue nil end end |
.setup(params) ⇒ Object
29 30 31 |
# File 'lib/versacommerce_api/session.rb', line 29 def self.setup(params) params.each { |k,value| send("#{k}=", value) } end |
Instance Method Details
#create_permission_url ⇒ Object
61 62 63 64 |
# File 'lib/versacommerce_api/session.rb', line 61 def return nil if url.blank? || api_key.blank? "#{protocol}://#{url}/api/auth?api_key=#{api_key}" end |
#shop ⇒ Object
56 57 58 |
# File 'lib/versacommerce_api/session.rb', line 56 def shop Shop.current end |
#site ⇒ Object
Used by ActiveResource::Base to make all non-authentication API calls
68 69 70 |
# File 'lib/versacommerce_api/session.rb', line 68 def site "#{protocol}://#{api_key}:#{computed_password}@#{url}/api/" end |
#valid? ⇒ Boolean
73 74 75 |
# File 'lib/versacommerce_api/session.rb', line 73 def valid? url.present? && token.present? end |