lib/campaign.rb in createsend-0.1.1 vs lib/campaign.rb in createsend-0.2.0
- old
+ new
@@ -1,134 +1,136 @@
require 'createsend'
require 'json'
-# Represents a campaign and provides associated funtionality.
-class Campaign
- attr_reader :campaign_id
+module CreateSend
+ # Represents a campaign and provides associated funtionality.
+ class Campaign
+ attr_reader :campaign_id
- def initialize(campaign_id)
- @campaign_id = campaign_id
- end
+ def initialize(campaign_id)
+ @campaign_id = campaign_id
+ end
- # Creates a new campaign for a client.
- def self.create(client_id, subject, name, from_name, from_email, reply_to, html_url,
- text_url, list_ids, segment_ids)
- options = { :body => {
- :Subject => subject,
- :Name => name,
- :FromName => from_name,
- :FromEmail => from_email,
- :ReplyTo => reply_to,
- :HtmlUrl => html_url,
- :TextUrl => text_url,
- :ListIDs => list_ids,
- :SegmentIDs => segment_ids }.to_json }
- response = CreateSend.post "/campaigns/#{client_id}.json", options
- response.parsed_response
- end
+ # Creates a new campaign for a client.
+ def self.create(client_id, subject, name, from_name, from_email, reply_to, html_url,
+ text_url, list_ids, segment_ids)
+ options = { :body => {
+ :Subject => subject,
+ :Name => name,
+ :FromName => from_name,
+ :FromEmail => from_email,
+ :ReplyTo => reply_to,
+ :HtmlUrl => html_url,
+ :TextUrl => text_url,
+ :ListIDs => list_ids,
+ :SegmentIDs => segment_ids }.to_json }
+ response = CreateSend.post "/campaigns/#{client_id}.json", options
+ response.parsed_response
+ end
- # Sends a preview of this campaign.
- def send_preview(recipients, personalize="fallback")
- options = { :body => {
- :PreviewRecipients => recipients.kind_of?(String) ? [ recipients ] : recipients,
- :Personalize => personalize }.to_json }
- response = post "sendpreview", options
- end
+ # Sends a preview of this campaign.
+ def send_preview(recipients, personalize="fallback")
+ options = { :body => {
+ :PreviewRecipients => recipients.kind_of?(String) ? [ recipients ] : recipients,
+ :Personalize => personalize }.to_json }
+ response = post "sendpreview", options
+ end
- # Sends this campaign.
- def send(confirmation_email, send_date="immediately")
- options = { :body => {
- :ConfirmationEmail => confirmation_email,
- :SendDate => send_date }.to_json }
- response = post "send", options
- end
+ # Sends this campaign.
+ def send(confirmation_email, send_date="immediately")
+ options = { :body => {
+ :ConfirmationEmail => confirmation_email,
+ :SendDate => send_date }.to_json }
+ response = post "send", options
+ end
- # Deletes this campaign.
- def delete
- response = CreateSend.delete "/campaigns/#{campaign_id}.json", {}
- end
+ # Deletes this campaign.
+ def delete
+ response = CreateSend.delete "/campaigns/#{campaign_id}.json", {}
+ end
- # Gets a summary of this campaign
- def summary
- response = get "summary", {}
- Hashie::Mash.new(response)
- end
+ # Gets a summary of this campaign
+ def summary
+ response = get "summary", {}
+ Hashie::Mash.new(response)
+ end
- # Retrieves the lists and segments to which this campaaign will be (or was) sent.
- def lists_and_segments
- response = get "listsandsegments", {}
- Hashie::Mash.new(response)
- end
+ # Retrieves the lists and segments to which this campaaign will be (or was) sent.
+ def lists_and_segments
+ response = get "listsandsegments", {}
+ Hashie::Mash.new(response)
+ end
- # Retrieves the recipients of this campaign.
- def recipients(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 'recipients', options
- Hashie::Mash.new(response)
- end
+ # Retrieves the recipients of this campaign.
+ def recipients(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 'recipients', options
+ Hashie::Mash.new(response)
+ end
- # Retrieves the opens for this campaign.
- def opens(date, page=1, page_size=1000, order_field="date", order_direction="asc")
- options = { :query => {
- :date => date,
- :page => page,
- :pagesize => page_size,
- :orderfield => order_field,
- :orderdirection => order_direction } }
- response = get "opens", options
- Hashie::Mash.new(response)
- end
+ # Retrieves the opens for this campaign.
+ def opens(date, page=1, page_size=1000, order_field="date", order_direction="asc")
+ options = { :query => {
+ :date => date,
+ :page => page,
+ :pagesize => page_size,
+ :orderfield => order_field,
+ :orderdirection => order_direction } }
+ response = get "opens", options
+ Hashie::Mash.new(response)
+ end
- # Retrieves the subscriber clicks for this campaign.
- def clicks(date, page=1, page_size=1000, order_field="date", order_direction="asc")
- options = { :query => {
- :date => date,
- :page => page,
- :pagesize => page_size,
- :orderfield => order_field,
- :orderdirection => order_direction } }
- response = get "clicks", options
- Hashie::Mash.new(response)
- end
+ # Retrieves the subscriber clicks for this campaign.
+ def clicks(date, page=1, page_size=1000, order_field="date", order_direction="asc")
+ options = { :query => {
+ :date => date,
+ :page => page,
+ :pagesize => page_size,
+ :orderfield => order_field,
+ :orderdirection => order_direction } }
+ response = get "clicks", options
+ Hashie::Mash.new(response)
+ end
- # Retrieves the unsubscribes for this campaign.
- def unsubscribes(date, page=1, page_size=1000, order_field="date", order_direction="asc")
- options = { :query => {
- :date => date,
- :page => page,
- :pagesize => page_size,
- :orderfield => order_field,
- :orderdirection => order_direction } }
- response = get "unsubscribes", options
- Hashie::Mash.new(response)
- end
+ # Retrieves the unsubscribes for this campaign.
+ def unsubscribes(date, page=1, page_size=1000, order_field="date", order_direction="asc")
+ options = { :query => {
+ :date => date,
+ :page => page,
+ :pagesize => page_size,
+ :orderfield => order_field,
+ :orderdirection => order_direction } }
+ response = get "unsubscribes", options
+ Hashie::Mash.new(response)
+ end
- # Retrieves the bounces for this campaign.
- def bounces(page=1, page_size=1000, order_field="date", order_direction="asc")
- options = { :query => {
- :page => page,
- :pagesize => page_size,
- :orderfield => order_field,
- :orderdirection => order_direction } }
- response = get "bounces", options
- Hashie::Mash.new(response)
- end
+ # Retrieves the bounces for this campaign.
+ def bounces(page=1, page_size=1000, order_field="date", order_direction="asc")
+ options = { :query => {
+ :page => page,
+ :pagesize => page_size,
+ :orderfield => order_field,
+ :orderdirection => order_direction } }
+ response = get "bounces", options
+ Hashie::Mash.new(response)
+ end
- private
+ private
- def get(action, options = {})
- CreateSend.get uri_for(action), options
- end
+ def get(action, options = {})
+ CreateSend.get uri_for(action), options
+ end
- def post(action, options = {})
- CreateSend.post uri_for(action), options
- end
+ def post(action, options = {})
+ CreateSend.post uri_for(action), options
+ end
- def uri_for(action)
- "/campaigns/#{campaign_id}/#{action}.json"
- end
+ def uri_for(action)
+ "/campaigns/#{campaign_id}/#{action}.json"
+ end
-end
+ end
+end
\ No newline at end of file