Class: CreateSend::Client

Inherits:
CreateSend show all
Defined in:
lib/createsend/client.rb

Overview

Represents a client and associated functionality.

Constant Summary

Constants included from CreateSend

USER_AGENT_STRING, VERSION

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(auth, client_id) ⇒ Client

Returns a new instance of Client.



6
7
8
9
# File 'lib/createsend/client.rb', line 6

def initialize(auth, client_id)
  @client_id = client_id
  super
end

Instance Attribute Details

#client_idObject (readonly)

Returns the value of attribute client_id.



4
5
6
# File 'lib/createsend/client.rb', line 4

def client_id
  @client_id
end

Class Method Details

.create(auth, company, timezone, country) ⇒ Object

Creates a client.



12
13
14
15
16
17
18
19
# File 'lib/createsend/client.rb', line 12

def self.create(auth, company, timezone, country)
  options = { :body => {
    :CompanyName => company,
    :TimeZone => timezone,
    :Country => country }.to_json }
  cs = CreateSend.new auth
  cs.post "/clients.json", options
end

Instance Method Details

#campaignsObject

Gets the sent campaigns belonging to this client.



28
29
30
31
# File 'lib/createsend/client.rb', line 28

def campaigns
  response = get 'campaigns'
  response.map{|item| Hashie::Mash.new(item)}
end

#deleteObject

Deletes this client.



180
181
182
# File 'lib/createsend/client.rb', line 180

def delete
  super "/clients/#{client_id}.json", {}
end

#detailsObject

Gets the details of this client.



22
23
24
25
# File 'lib/createsend/client.rb', line 22

def details
  response = cs_get "/clients/#{client_id}.json", {}
  Hashie::Mash.new(response)
end

#draftsObject

Gets the draft campaigns belonging to this client.



40
41
42
43
# File 'lib/createsend/client.rb', line 40

def drafts
  response = get 'drafts'
  response.map{|item| Hashie::Mash.new(item)}
end

#get_primary_contactObject



72
73
74
75
# File 'lib/createsend/client.rb', line 72

def get_primary_contact
  response = get "primarycontact"
  Hashie::Mash.new(response)
end

#listsObject

Gets the subscriber lists belonging to this client.



46
47
48
49
# File 'lib/createsend/client.rb', line 46

def lists
  response = get 'lists'
  response.map{|item| Hashie::Mash.new(item)}
end

#lists_for_email(email_address) ⇒ Object

Gets the lists across a client, to which a subscriber with a particular email address belongs. email_address - A String representing the subcriber’s email address



54
55
56
57
58
# File 'lib/createsend/client.rb', line 54

def lists_for_email(email_address)
  options = { :query => { :email => email_address } }
  response = get 'listsforemail', options
  response.map{|item| Hashie::Mash.new(item)}
end

#peopleObject

Gets the people associated with this client



67
68
69
70
# File 'lib/createsend/client.rb', line 67

def people
  response = get "people"
  response.map{|item| Hashie::Mash.new(item)}
end

#scheduledObject

Gets the currently scheduled campaigns belonging to this client.



34
35
36
37
# File 'lib/createsend/client.rb', line 34

def scheduled
  response = get 'scheduled'
  response.map{|item| Hashie::Mash.new(item)}
end

#segmentsObject

Gets the segments belonging to this client.



61
62
63
64
# File 'lib/createsend/client.rb', line 61

def segments
  response = get 'segments'
  response.map{|item| Hashie::Mash.new(item)}
end

#set_basics(company, timezone, country) ⇒ Object

Sets the basic details for this client.



117
118
119
120
121
122
123
# File 'lib/createsend/client.rb', line 117

def set_basics(company, timezone, country)
  options = { :body => {
    :CompanyName => company,
    :TimeZone => timezone,
    :Country => country }.to_json }
  put 'setbasics', options
end

#set_monthly_billing(currency, client_pays, markup_percentage, monthly_scheme = nil) ⇒ Object

Sets the monthly billing settings for this client. monthly_scheme must be nil, Basic or Unlimited



142
143
144
145
146
147
148
149
150
# File 'lib/createsend/client.rb', line 142

def set_monthly_billing(currency, client_pays, markup_percentage,
  monthly_scheme = nil)
  options = { :body => {
    :Currency => currency,
    :ClientPays => client_pays,
    :MarkupPercentage => markup_percentage,
    :MonthlyScheme => monthly_scheme }.to_json }
  put 'setmonthlybilling', options
end

#set_payg_billing(currency, can_purchase_credits, client_pays, markup_percentage, markup_on_delivery = 0, markup_per_recipient = 0, markup_on_design_spam_test = 0) ⇒ Object

Sets the PAYG billing settings for this client.



126
127
128
129
130
131
132
133
134
135
136
137
138
# File 'lib/createsend/client.rb', line 126

def set_payg_billing(currency, can_purchase_credits, client_pays,
  markup_percentage, markup_on_delivery=0, markup_per_recipient=0,
  markup_on_design_spam_test=0)
  options = { :body => {
    :Currency => currency,
    :CanPurchaseCredits => can_purchase_credits,
    :ClientPays => client_pays,
    :MarkupPercentage => markup_percentage,
    :MarkupOnDelivery => markup_on_delivery,
    :MarkupPerRecipient => markup_per_recipient,
    :MarkupOnDesignSpamTest => markup_on_design_spam_test }.to_json }
  put 'setpaygbilling', options
end

#set_primary_contact(email) ⇒ Object



77
78
79
80
81
# File 'lib/createsend/client.rb', line 77

def set_primary_contact(email)
  options = { :query => { :email => email } }
  response = put "primarycontact", options
  Hashie::Mash.new(response)
end

#suppress(emails) ⇒ Object

Adds email addresses to a client’s suppression list



96
97
98
99
100
101
# File 'lib/createsend/client.rb', line 96

def suppress(emails)
  options = { :body => {
    :EmailAddresses => emails.kind_of?(String) ?
      [ emails ] : emails }.to_json }
  post "suppress", options
end

#suppressionlist(page = 1, page_size = 1000, order_field = "email", order_direction = "asc") ⇒ Object

Gets this client’s suppression list.



84
85
86
87
88
89
90
91
92
93
# File 'lib/createsend/client.rb', line 84

def suppressionlist(page=1, page_size=1000, order_field="email",
  order_direction="asc")
  options = { :query => {
    :page => page,
    :pagesize => page_size,
    :orderfield => order_field,
    :orderdirection => order_direction } }
  response = get 'suppressionlist', options
  Hashie::Mash.new(response)
end

#templatesObject

Gets the templates belonging to this client.



111
112
113
114
# File 'lib/createsend/client.rb', line 111

def templates
  response = get 'templates'
  response.map{|item| Hashie::Mash.new(item)}
end

#transfer_credits(credits, can_use_my_credits_when_they_run_out) ⇒ Object

Transfer credits to or from this client.

credits - An Integer representing the number of credits to transfer.

This value may be either positive if you want to allocate credits from
your account to the client, or negative if you want to deduct credits
from the client back into your account.

can_use_my_credits_when_they_run_out - A Boolean value representing

which, if set to true, will allow the client to continue sending using
your credits or payment details once they run out of credits, and if
set to false, will prevent the client from using your credits to
continue sending until you allocate more credits to them.

Returns an object of the following form representing the result:

AccountCredits # Integer representing credits in your account now
ClientCredits # Integer representing credits in this client's
   now



170
171
172
173
174
175
176
177
# File 'lib/createsend/client.rb', line 170

def transfer_credits(credits, can_use_my_credits_when_they_run_out)
  options = { :body => {
    :Credits => credits,
    :CanUseMyCreditsWhenTheyRunOut => can_use_my_credits_when_they_run_out
  }.to_json }
  response = post 'credits', options
  Hashie::Mash.new(response)
end

#unsuppress(email) ⇒ Object

Unsuppresses an email address by removing it from the the client’s suppression list



105
106
107
108
# File 'lib/createsend/client.rb', line 105

def unsuppress(email)
  options = { :query => { :email => email }, :body => '' }
  put "unsuppress", options
end