Class: Lipstick::Api::Session
- Inherits:
-
Object
- Object
- Lipstick::Api::Session
- Defined in:
- lib/lipstick/api/session.rb
Instance Attribute Summary collapse
-
#base_url ⇒ Object
readonly
API endpoint, eg.
-
#credentials ⇒ Object
readonly
Hash containing :username, :password.
-
#logger ⇒ Object
readonly
Used for logging request and response info.
Instance Method Summary collapse
- #camelize(str) ⇒ Object
-
#campaign_find_active ⇒ Object
Find all active campaigns.
-
#campaign_view(campaign_id) ⇒ Object
Fetch details for a given campaign.
- #customer_find_active_product(customer_id, campaign_id = nil) ⇒ Object
-
#initialize(params) ⇒ Session
constructor
Public: Initialize session.
-
#new_order(params) ⇒ Object
Create order for new customer.
- #order_find(start_time, end_time, params = {}) ⇒ Object
- #order_find_updated(start_time, end_time, params = {}) ⇒ Object
- #order_refund(order_id, amount, keep_recurring = true) ⇒ Object
- #order_update(order_id, action, value) ⇒ Object
- #order_update_recurring(order_id, status) ⇒ Object
- #order_view(order_id) ⇒ Object
- #order_void(order_id) ⇒ Object
- #shipping_method_find(campaign_id = 'all') ⇒ Object
-
#underscore(camel_cased_word) ⇒ Object
partly copied from activesupport/inflector.
- #validate_credentials ⇒ Object
Constructor Details
#initialize(params) ⇒ Session
Public: Initialize session.
params - Hash
-
:url
- API endpoint, eg. example.com/admin -
:username
-
:password
-
:logger
- Used for logging request and response info.
24 25 26 27 28 29 30 |
# File 'lib/lipstick/api/session.rb', line 24 def initialize(params) @base_url = params[:url] || raise("url not defined.") raise("username missing") unless params[:username] raise("password missing") unless params[:password] @credentials = { username: params[:username], password: params[:password] } @logger = params[:logger] || Logger.new('/dev/null') end |
Instance Attribute Details
#base_url ⇒ Object (readonly)
API endpoint, eg. example.com/admin
9 10 11 |
# File 'lib/lipstick/api/session.rb', line 9 def base_url @base_url end |
#credentials ⇒ Object (readonly)
Hash containing :username, :password
12 13 14 |
# File 'lib/lipstick/api/session.rb', line 12 def credentials @credentials end |
#logger ⇒ Object (readonly)
Used for logging request and response info.
15 16 17 |
# File 'lib/lipstick/api/session.rb', line 15 def logger @logger end |
Instance Method Details
#camelize(str) ⇒ Object
125 126 127 128 |
# File 'lib/lipstick/api/session.rb', line 125 def camelize(str) return str.to_s unless str.to_s.include?(?_) str.to_s.split("_").each {|s| s.capitalize! }.join end |
#campaign_find_active ⇒ Object
Find all active campaigns.
33 34 35 |
# File 'lib/lipstick/api/session.rb', line 33 def campaign_find_active call_api(:campaign_find_active) end |
#campaign_view(campaign_id) ⇒ Object
Fetch details for a given campaign.
38 39 40 |
# File 'lib/lipstick/api/session.rb', line 38 def campaign_view(campaign_id) call_api(:campaign_view, campaign_id: campaign_id) end |
#customer_find_active_product(customer_id, campaign_id = nil) ⇒ Object
42 43 44 45 46 |
# File 'lib/lipstick/api/session.rb', line 42 def customer_find_active_product(customer_id, campaign_id = nil) params = { customer_id: customer_id } params.merge!(campaign_id: campaign_id) if campaign_id call_api(:customer_find_active_product, params) end |
#new_order(params) ⇒ Object
Create order for new customer
49 50 51 52 |
# File 'lib/lipstick/api/session.rb', line 49 def new_order(params) camelcase_params!(params) call_api('NewOrder', params) end |
#order_find(start_time, end_time, params = {}) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/lipstick/api/session.rb', line 54 def order_find(start_time, end_time, params = {}) params.merge!( start_date: start_time.strftime('%m/%d/%Y'), start_time: start_time.strftime('%H:%M:%S'), end_date: end_time.strftime('%m/%d/%Y'), end_time: end_time.strftime('%H:%M:%S')) params[:campaign_id] ||= 'all' params[:product_id] ||= 'all' params[:criteria] ||= 'all' call_api(:order_find, params) end |
#order_find_updated(start_time, end_time, params = {}) ⇒ Object
66 67 68 69 70 71 72 73 74 |
# File 'lib/lipstick/api/session.rb', line 66 def order_find_updated(start_time, end_time, params = {}) params.merge!( start_date: start_time.strftime('%m/%d/%Y'), start_time: start_time.strftime('%H:%M:%S'), end_date: end_time.strftime('%m/%d/%Y'), end_time: end_time.strftime('%H:%M:%S')) params[:campaign_id] ||= 'all' call_api(:order_find_updated, params) end |
#order_refund(order_id, amount, keep_recurring = true) ⇒ Object
76 77 78 79 80 81 |
# File 'lib/lipstick/api/session.rb', line 76 def order_refund(order_id, amount, keep_recurring = true) call_api(:order_refund, order_id: order_id, amount: amount.to_s, keep_recurring: keep_recurring ? '1' : '0') end |
#order_update(order_id, action, value) ⇒ Object
83 84 85 |
# File 'lib/lipstick/api/session.rb', line 83 def order_update(order_id, action, value) call_api(:order_update, order_ids: order_id, actions: action, values: value) end |
#order_update_recurring(order_id, status) ⇒ Object
87 88 89 |
# File 'lib/lipstick/api/session.rb', line 87 def order_update_recurring(order_id, status) call_api(:order_update_recurring, order_id: order_id, status: status) end |
#order_view(order_id) ⇒ Object
91 92 93 |
# File 'lib/lipstick/api/session.rb', line 91 def order_view(order_id) call_api(:order_view, order_id: order_id) end |
#order_void(order_id) ⇒ Object
95 96 97 |
# File 'lib/lipstick/api/session.rb', line 95 def order_void(order_id) call_api(:order_void, order_id: order_id) end |
#shipping_method_find(campaign_id = 'all') ⇒ Object
99 100 101 102 103 104 105 106 107 |
# File 'lib/lipstick/api/session.rb', line 99 def shipping_method_find(campaign_id = 'all') call_api(:shipping_method_find, campaign_id: campaign_id) do |fields| if fields[:response_code] == '100' [:shipping_ids].each do |key| fields[key] = CSV.parse_line(fields[key]).map(&:to_i) end end end end |
#underscore(camel_cased_word) ⇒ Object
partly copied from activesupport/inflector
114 115 116 117 118 119 120 121 122 123 |
# File 'lib/lipstick/api/session.rb', line 114 def underscore(camel_cased_word) word = camel_cased_word.to_s.dup word.gsub!(/([A-Z\d]+)([A-Z][a-z])/,'\1_\2') word.gsub!(/([a-z\d])([A-Z])/,'\1_\2') word.tr!("-", "_") word.tr!("[", "_") word.tr!("]", "") word.downcase! word end |
#validate_credentials ⇒ Object
109 110 111 |
# File 'lib/lipstick/api/session.rb', line 109 def validate_credentials call_api(:validate_credentials) end |