lib/client.rb in createsend-0.0.1 vs lib/client.rb in createsend-0.0.2

- old
+ new

@@ -1,78 +1,95 @@ require 'createsend' require 'json' +# Represents a client and associated functionality. class Client attr_reader :client_id def initialize(client_id) @client_id = client_id end + # Creates a client. def self.create(company, contact_name, email, timezone, country) options = { :body => { :CompanyName => company, :ContactName => contact_name, :EmailAddress => email, :TimeZone => timezone, :Country => country }.to_json } CreateSend.post "/clients.json", options end + # Gets the details of this client. def details response = CreateSend.get "/clients/#{client_id}.json", {} Hashie::Mash.new(response) end + # Gets the sent campaigns belonging to this client. def campaigns response = get 'campaigns' response.map{|item| Hashie::Mash.new(item)} end + # Gets the draft campaigns belonging to this client. def drafts response = get 'drafts' response.map{|item| Hashie::Mash.new(item)} end + # Gets the subscriber lists belonging to this client. def lists response = get 'lists' response.map{|item| Hashie::Mash.new(item)} end + # Gets the segments belonging to this client. def segments response = get 'segments' response.map{|item| Hashie::Mash.new(item)} end - def suppressionlist - response = get 'suppressionlist' - response.map{|item| Hashie::Mash.new(item)} + # Gets this client's suppression list. + 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 - + + # Gets the templates belonging to this client. def templates response = get 'templates' response.map{|item| Hashie::Mash.new(item)} end + # Sets the basic details for this client. def set_basics(company, contact_name, email, timezone, country) options = { :body => { :CompanyName => company, :ContactName => contact_name, :EmailAddress => email, :TimeZone => timezone, :Country => country }.to_json } put 'setbasics', options end + # Sets the access settings for this client. def set_access(username, password, access_level) options = { :body => { :Username => username, :Password => password, :AccessLevel => access_level }.to_json } put 'setaccess', options end + # Sets the PAYG billing settings for this client. 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, @@ -82,18 +99,20 @@ :MarkupPerRecipient => markup_per_recipient, :MarkupOnDesignSpamTest => markup_on_design_spam_test }.to_json } put 'setpaygbilling', options end + # Sets the monthly billing settings for this client. def set_monthly_billing(currency, can_purchase_credits, client_pays, markup_percentage) options = { :body => { :Currency => currency, :CanPurchaseCredits => can_purchase_credits, :ClientPays => client_pays, :MarkupPercentage => markup_percentage }.to_json } put 'setmonthlybilling', options end + # Deletes this client. def delete CreateSend.delete "/clients/#{client_id}.json", {} end private