Class: Lipstick::Api::Session

Inherits:
Object
  • Object
show all
Defined in:
lib/lipstick/api/session.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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_urlObject (readonly)

API endpoint, eg. example.com/admin



9
10
11
# File 'lib/lipstick/api/session.rb', line 9

def base_url
  @base_url
end

#credentialsObject (readonly)

Hash containing :username, :password



12
13
14
# File 'lib/lipstick/api/session.rb', line 12

def credentials
  @credentials
end

#loggerObject (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_activeObject

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_credentialsObject



109
110
111
# File 'lib/lipstick/api/session.rb', line 109

def validate_credentials
  call_api(:validate_credentials)
end