lib/subscriber.rb in createsend-0.1.1 vs lib/subscriber.rb in createsend-0.2.0
- old
+ new
@@ -1,67 +1,69 @@
require 'createsend'
require 'json'
-# Represents a subscriber and associated functionality.
-class Subscriber
- attr_reader :list_id
- attr_reader :email_address
+module CreateSend
+ # Represents a subscriber and associated functionality.
+ class Subscriber
+ attr_reader :list_id
+ attr_reader :email_address
- def initialize(list_id, email_address)
- @list_id = list_id
- @email_address = email_address
- end
+ def initialize(list_id, email_address)
+ @list_id = list_id
+ @email_address = email_address
+ end
- # Gets a subscriber by list ID and email address.
- def self.get(list_id, email_address)
- options = { :query => { :email => email_address } }
- response = CreateSend.get "/subscribers/#{list_id}.json", options
- Hashie::Mash.new(response)
- end
+ # Gets a subscriber by list ID and email address.
+ def self.get(list_id, email_address)
+ options = { :query => { :email => email_address } }
+ response = CreateSend.get "/subscribers/#{list_id}.json", options
+ Hashie::Mash.new(response)
+ end
- # Adds a subscriber to a subscriber list.
- def self.add(list_id, email_address, name, custom_fields, resubscribe)
- options = { :body => {
- :EmailAddress => email_address,
- :Name => name,
- :CustomFields => custom_fields,
- :Resubscribe => resubscribe }.to_json }
- response = CreateSend.post "/subscribers/#{list_id}.json", options
- response.parsed_response
- end
+ # Adds a subscriber to a subscriber list.
+ def self.add(list_id, email_address, name, custom_fields, resubscribe)
+ options = { :body => {
+ :EmailAddress => email_address,
+ :Name => name,
+ :CustomFields => custom_fields,
+ :Resubscribe => resubscribe }.to_json }
+ response = CreateSend.post "/subscribers/#{list_id}.json", options
+ response.parsed_response
+ end
- # Imports subscribers into a subscriber list.
- def self.import(list_id, subscribers, resubscribe)
- options = { :body => {
- :Subscribers => subscribers,
- :Resubscribe => resubscribe }.to_json }
- begin
- response = CreateSend.post "/subscribers/#{list_id}/import.json", options
- rescue BadRequest => br
- # Subscriber import will throw BadRequest if some subscribers are not imported
- # successfully. If this occurs, we want to return the ResultData property of
- # the BadRequest exception (which is of the same "form" as the response we'd
- # receive upon a completely successful import)
- if br.data.ResultData
- return br.data.ResultData
- else
- raise br
+ # Imports subscribers into a subscriber list.
+ def self.import(list_id, subscribers, resubscribe)
+ options = { :body => {
+ :Subscribers => subscribers,
+ :Resubscribe => resubscribe }.to_json }
+ begin
+ response = CreateSend.post "/subscribers/#{list_id}/import.json", options
+ rescue BadRequest => br
+ # Subscriber import will throw BadRequest if some subscribers are not imported
+ # successfully. If this occurs, we want to return the ResultData property of
+ # the BadRequest exception (which is of the same "form" as the response we'd
+ # receive upon a completely successful import)
+ if br.data.ResultData
+ return br.data.ResultData
+ else
+ raise br
+ end
end
+ Hashie::Mash.new(response)
end
- Hashie::Mash.new(response)
- end
- # Unsubscribes this subscriber from the associated list.
- def unsubscribe
- options = { :body => {
- :EmailAddress => @email_address }.to_json }
- CreateSend.post "/subscribers/#{@list_id}/unsubscribe.json", options
- end
+ # Unsubscribes this subscriber from the associated list.
+ def unsubscribe
+ options = { :body => {
+ :EmailAddress => @email_address }.to_json }
+ CreateSend.post "/subscribers/#{@list_id}/unsubscribe.json", options
+ end
- # Gets the historical record of this subscriber's trackable actions.
- def history
- options = { :query => { :email => @email_address } }
- response = CreateSend.get "/subscribers/#{@list_id}/history.json", options
- response.map{|item| Hashie::Mash.new(item)}
- end
+ # Gets the historical record of this subscriber's trackable actions.
+ def history
+ options = { :query => { :email => @email_address } }
+ response = CreateSend.get "/subscribers/#{@list_id}/history.json", options
+ response.map{|item| Hashie::Mash.new(item)}
+ end
+ end
end
\ No newline at end of file