Class: Cupid::Session
- Inherits:
-
Object
- Object
- Cupid::Session
- Defined in:
- lib/cupid/session.rb,
lib/cupid/methods/list.rb,
lib/cupid/methods/email.rb,
lib/cupid/methods/subscriber.rb
Constant Summary collapse
- DEFAULTS =
{ :soap_s4_url => "https://webservice.s4.exacttarget.com/etframework.wsdl", :wsa_soap_s4_to => "https://webservice.s4.exacttarget.com/Service.asmx", :use_ssl => true }
Instance Method Summary collapse
- #create_email(subject, body, *args) ⇒ Object
- #create_emails(*args) ⇒ Object
- #create_folder(title, *args) ⇒ Object
- #create_subscriber(email, *args) ⇒ Object
- #create_subscribers(*args) ⇒ Object
- #email_link(email_id) ⇒ Object
-
#initialize(*args) ⇒ Session
constructor
A new instance of Session.
- #retrieve_email_folders(account = nil, properties = nil) ⇒ Object
- #retrieve_lists(account = nil, properties = nil) ⇒ Object
- #send_email_to_list(email_id, list_id, account = nil) ⇒ Object
Constructor Details
#initialize(*args) ⇒ Session
Returns a new instance of Session.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/cupid/session.rb', line 11 def initialize(*args) = args. @username = [:username] ||= Cupid.username @password = [:password] ||= Cupid.password @account = [:account] ||= Cupid.account @headers = {"Content-Type" => "application/x-www-form-urlencoded", "Connection" => "close"} @api_uri = @api_wsdl = DEFAULTS[:soap_s4_url] @api_uri = URI.parse(@api_uri) @api_url = Net::HTTP.new(@api_uri.host, @api_uri.port) @api_url.use_ssl = DEFAULTS[:use_ssl] @wsa_soap_s4_to = DEFAULTS[:wsa_soap_s4_to] end |
Instance Method Details
#create_email(subject, body, *args) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/cupid/methods/email.rb', line 18 def create_email(subject, body, *args) = args. [:subject] = CGI.escapeHTML subject.to_s [:body] = CGI.escapeHTML body.to_s [:client_id] ||= @account [:email_type] ||= 'HTML' [:is_html_paste] ||= 'true' # ?? [:character_set] ||= 'utf-8' soap_body = '<Objects xsi:type="Email">' + create_email_object() + '</Objects>' response = build_request('Create', 'CreateRequest', soap_body) response = Nokogiri::XML(response.http.body).remove_namespaces! created_email_id = response.css('NewID').text end |
#create_emails(*args) ⇒ Object
72 73 74 |
# File 'lib/cupid/methods/email.rb', line 72 def create_emails(*args) raise NoMethodError.new "I will implement this method soon" end |
#create_folder(title, *args) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/cupid/methods/email.rb', line 37 def create_folder(title, *args) = args. [:title] = CGI.escapeHTML title.to_s [:description] ||= 'description' [:client_id] ||= @account [:content_type] ||= 'email' [:is_active] ||= 'true' [:is_editable] ||= 'true' [:allow_children] ||= 'true' soap_body = '<Objects xsi:type="DataFolder">' + create_folder_object() + '</Objects>' response = build_request('Create', 'CreateRequest', soap_body) response = Nokogiri::XML(response.http.body).remove_namespaces! created_folder_id = response.css('NewID').text end |
#create_subscriber(email, *args) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 |
# File 'lib/cupid/methods/subscriber.rb', line 3 def create_subscriber(email, *args) = args. [:email] = email.to_s [:client_id] ||= @account soap_body = '<Objects xsi:type="Subscriber">' + create_subscriber_object() + '</Objects>' build_request('Create', 'CreateRequest', soap_body) end |
#create_subscribers(*args) ⇒ Object
15 16 17 |
# File 'lib/cupid/methods/subscriber.rb', line 15 def create_subscribers(*args) raise NoMethodError.new "I will implement this method soon" end |
#email_link(email_id) ⇒ Object
68 69 70 |
# File 'lib/cupid/methods/email.rb', line 68 def email_link(email_id) "https://members.s4.exacttarget.com/Content/Email/EmailEdit.aspx?eid=" + email_id.to_s end |
#retrieve_email_folders(account = nil, properties = nil) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/cupid/methods/email.rb', line 3 def retrieve_email_folders(account=nil, properties=nil) account ||= @account properties ||= ['ID', 'Name', 'ParentFolder.ID', 'ParentFolder.Name'] filters = '<Filter xsi:type="SimpleFilterPart">' + '<Property>ContentType</Property>' + '<SimpleOperator>like</SimpleOperator>' + '<Value>email</Value>' + '</Filter>' soap_body = build_retrieve(account.to_s, 'DataFolder', properties, filters) response = build_request('Retrieve', 'RetrieveRequestMsg', soap_body) response = Nokogiri::XML(response.http.body).remove_namespaces! all_folders = response.css('Results').map{|f| {f.css('Name').to_a.map(&:text).join('/') => f.css('ID')[0].text}} end |
#retrieve_lists(account = nil, properties = nil) ⇒ Object
3 4 5 6 7 8 9 10 11 |
# File 'lib/cupid/methods/list.rb', line 3 def retrieve_lists(account=nil, properties=nil) account ||= @account properties ||= ['ID', 'CustomerKey'] soap_body = build_retrieve(account.to_s, 'List', properties) response = build_request('Retrieve', 'RetrieveRequestMsg', soap_body) response = Nokogiri::XML(response.http.body).remove_namespaces! all_lists = response.css('Results').map{|f| {f.css('CustomerKey').to_a.map(&:text).join('/') => f.css('ID')[0].text}} end |
#send_email_to_list(email_id, list_id, account = nil) ⇒ Object
57 58 59 60 61 62 63 64 65 66 |
# File 'lib/cupid/methods/email.rb', line 57 def send_email_to_list(email_id, list_id, account=nil) account ||= @account soap_body = '<Objects xsi:type="Send">' + create_send_object(email_id, list_id, account) + '</Objects>' response = build_request('Create', 'CreateRequest', soap_body) response = Nokogiri::XML(response.http.body).remove_namespaces! created_send_id = response.css('NewID').text end |