Class: Tracksale::Campaign

Inherits:
Object
  • Object
show all
Defined in:
lib/tracksale/campaign.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#codeObject

Returns the value of attribute code.



3
4
5
# File 'lib/tracksale/campaign.rb', line 3

def code
  @code
end

#nameObject

Returns the value of attribute name.



3
4
5
# File 'lib/tracksale/campaign.rb', line 3

def name
  @name
end

#scoreObject

Returns the value of attribute score.



3
4
5
# File 'lib/tracksale/campaign.rb', line 3

def score
  @score
end

Class Method Details

.allObject



30
31
32
# File 'lib/tracksale/campaign.rb', line 30

def self.all
  raw_all.map { |campaign| create_from_response(campaign) }
end

.clientObject



50
51
52
# File 'lib/tracksale/campaign.rb', line 50

def self.client
  Tracksale.configuration.client.new
end

.create_from_response(raw_reponse) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
# File 'lib/tracksale/campaign.rb', line 34

def self.create_from_response(raw_reponse)
  new.tap do |campaign|
    campaign.name = raw_reponse['name']
    campaign.code = raw_reponse['code']
    campaign.score = {
      detractors: raw_reponse['detractors'],
      passives: raw_reponse['passives'],
      promoters: raw_reponse['promoters']
    }
  end
end

.find_by_code(code) ⇒ Object



24
25
26
27
28
# File 'lib/tracksale/campaign.rb', line 24

def self.find_by_code(code)
  campaign_found_by_code = client.get('campaign/' + code.to_s).first
  return nil if campaign_found_by_code.nil?
  create_from_response(campaign_found_by_code)
end

.find_by_name(name) ⇒ Object



18
19
20
21
22
# File 'lib/tracksale/campaign.rb', line 18

def self.find_by_name(name)
  campaign_found_by_name = raw_all.keep_if { |c| c['name'] == name }.first
  return nil if campaign_found_by_name.nil?
  create_from_response(campaign_found_by_name)
end

.raw_allObject



46
47
48
# File 'lib/tracksale/campaign.rb', line 46

def self.raw_all
  client.get('campaign')
end

.schedule_dispatch(code, body) ⇒ Object

Raises:

  • (ArgumentError)


9
10
11
12
13
14
15
16
# File 'lib/tracksale/campaign.rb', line 9

def self.schedule_dispatch(code, body)
  response = client.post('campaign/' + code.to_s + '/dispatch', body)

  return response if response.success?

  raise ArgumentError, response['error'] if response['error']
  raise response.response.error!
end

Instance Method Details

#schedule_dispatch(body) ⇒ Object



5
6
7
# File 'lib/tracksale/campaign.rb', line 5

def schedule_dispatch(body)
  self.class.schedule_dispatch(code, body)
end