infusionsoft 1.1.8 → 1.1.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +6 -0
  3. data/.travis.yml +9 -0
  4. data/Gemfile +12 -0
  5. data/LICENSE.md +0 -2
  6. data/README.md +17 -21
  7. data/Rakefile +12 -2
  8. data/infusionsoft.gemspec +2 -2
  9. data/lib/infusionsoft/client.rb +2 -0
  10. data/lib/infusionsoft/client/contact.rb +15 -5
  11. data/lib/infusionsoft/client/email.rb +1 -1
  12. data/lib/infusionsoft/client/funnel.rb +18 -0
  13. data/lib/infusionsoft/client/invoice.rb +1 -1
  14. data/lib/infusionsoft/connection.rb +1 -1
  15. data/lib/infusionsoft/request.rb +1 -0
  16. data/lib/infusionsoft/version.rb +1 -1
  17. data/test/client/contact_test.rb +79 -0
  18. data/test/client/data_test.rb +102 -0
  19. data/test/client/email_test.rb +89 -0
  20. data/test/exceptions_test.rb +131 -0
  21. data/test/test_helper.rb +47 -0
  22. data/test/vcr_cassettes/add_to_group.yml +49 -0
  23. data/test/vcr_cassettes/contact_add.yml +93 -0
  24. data/test/vcr_cassettes/contact_add_dup_check_no_dup.yml +93 -0
  25. data/test/vcr_cassettes/contact_add_dup_check_with_dup.yml +186 -0
  26. data/test/vcr_cassettes/contact_load.yml +49 -0
  27. data/test/vcr_cassettes/contact_merge.yml +49 -0
  28. data/test/vcr_cassettes/contact_update.yml +95 -0
  29. data/test/vcr_cassettes/data_add.yml +49 -0
  30. data/test/vcr_cassettes/data_add_custom_field.yml +49 -0
  31. data/test/vcr_cassettes/data_auth_user_failure.yml +50 -0
  32. data/test/vcr_cassettes/data_auth_user_success.yml +49 -0
  33. data/test/vcr_cassettes/data_delete.yml +49 -0
  34. data/test/vcr_cassettes/data_find_by_field.yml +51 -0
  35. data/test/vcr_cassettes/data_get_app_setting.yml +50 -0
  36. data/test/vcr_cassettes/data_load.yml +51 -0
  37. data/test/vcr_cassettes/data_query.yml +51 -0
  38. data/test/vcr_cassettes/data_query_order_by.yml +51 -0
  39. data/test/vcr_cassettes/data_update.yml +96 -0
  40. data/test/vcr_cassettes/data_update_custom_field.yml +49 -0
  41. data/test/vcr_cassettes/email_add.yml +50 -0
  42. data/test/vcr_cassettes/email_attach.yml +50 -0
  43. data/test/vcr_cassettes/email_get_available_merge_fields.yml +52 -0
  44. data/test/vcr_cassettes/email_get_opt_status.yml +50 -0
  45. data/test/vcr_cassettes/email_get_template.yml +118 -0
  46. data/test/vcr_cassettes/email_optin.yml +50 -0
  47. data/test/vcr_cassettes/email_optout.yml +50 -0
  48. data/test/vcr_cassettes/email_send.yml +50 -0
  49. data/test/vcr_cassettes/email_send_template.yml +50 -0
  50. data/test/vcr_cassettes/email_update_template.yml +50 -0
  51. data/test/vcr_cassettes/find_by_email.yml +49 -0
  52. data/test/vcr_cassettes/remove_from_group.yml +49 -0
  53. metadata +50 -17
  54. data/test/api_infusion_test.rb +0 -8
  55. data/test/test_exceptions.rb +0 -113
@@ -0,0 +1,49 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://test.infusionsoft.com/api/xmlrpc
6
+ body:
7
+ encoding: UTF-8
8
+ string: |
9
+ <?xml version="1.0" ?><methodCall><methodName>DataService.updateCustomField</methodName><params><param><value><string>not_a_real_key</string></value></param><param><value><i4>16</i4></value></param><param><value><struct><member><name>Label</name><value><string>Stuff</string></value></member></struct></value></param></params></methodCall>
10
+ headers:
11
+ User-Agent:
12
+ - Infusionsoft-1.1.8 (RubyGem)
13
+ Content-Type:
14
+ - text/xml; charset=utf-8
15
+ Content-Length:
16
+ - '358'
17
+ Connection:
18
+ - keep-alive
19
+ Accept-Encoding:
20
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
21
+ Accept:
22
+ - "*/*"
23
+ response:
24
+ status:
25
+ code: 200
26
+ message: OK
27
+ headers:
28
+ Server:
29
+ - Apache-Coyote/1.1
30
+ Pragma:
31
+ - no-cache
32
+ Cache-Control:
33
+ - no-cache, no-store
34
+ Expires:
35
+ - Sun, 12 Apr 2015 11:12:51 GMT
36
+ Content-Type:
37
+ - text/xml;charset=UTF-8
38
+ Content-Length:
39
+ - '138'
40
+ Date:
41
+ - Sat, 11 Apr 2015 23:12:51 GMT
42
+ Set-Cookie:
43
+ - app-lb=2466578442.20480.0000; path=/
44
+ body:
45
+ encoding: UTF-8
46
+ string: <?xml version="1.0" encoding="utf-8"?><methodResponse><params><param><value><boolean>1</boolean></value></param></params></methodResponse>
47
+ http_version:
48
+ recorded_at: Sat, 11 Apr 2015 23:12:51 GMT
49
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,50 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://test.infusionsoft.com/api/xmlrpc
6
+ body:
7
+ encoding: UTF-8
8
+ string: |
9
+ <?xml version="1.0" ?><methodCall><methodName>APIEmailService.addEmailTemplate</methodName><params><param><value><string>not_a_real_key</string></value></param><param><value><string>Test Via API</string></value></param><param><value><string>test,api</string></value></param><param><value><string>noreply@test.com</string></value></param><param><value><string>test@test.com</string></value></param><param><value><string>test2@test.com</string></value></param><param><value><string>test3@test.com</string></value></param><param><value><string>Test Subject</string></value></param><param><value><string>Text Body</string></value></param><param><value><string>&lt;p&gt; HTML body</string></value></param><param><value><string>Multipart</string></value></param><param><value><string>Contact</string></value></param></params></methodCall>
10
+ headers:
11
+ User-Agent:
12
+ - Infusionsoft-1.1.9 (RubyGem)
13
+ Content-Type:
14
+ - text/xml; charset=utf-8
15
+ Content-Length:
16
+ - '851'
17
+ Connection:
18
+ - keep-alive
19
+ Accept-Encoding:
20
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
21
+ Accept:
22
+ - "*/*"
23
+ response:
24
+ status:
25
+ code: 200
26
+ message: OK
27
+ headers:
28
+ Server:
29
+ - Apache-Coyote/1.1
30
+ Pragma:
31
+ - no-cache
32
+ Cache-Control:
33
+ - no-cache, no-store
34
+ Expires:
35
+ - Sun, 26 Jul 2015 13:26:12 GMT
36
+ Content-Type:
37
+ - text/xml;charset=UTF-8
38
+ Content-Length:
39
+ - '131'
40
+ Date:
41
+ - Sun, 26 Jul 2015 01:26:12 GMT
42
+ Set-Cookie:
43
+ - app-lb=!5OL9Klm4DZcqS1VgcOos6QUUDc5trfa0TqBXLOnV/wMidbuidkvEoEoBb7TTtatlKJx1PPPRuT7rgCk=;
44
+ path=/
45
+ body:
46
+ encoding: UTF-8
47
+ string: <?xml version="1.0" encoding="utf-8"?><methodResponse><params><param><value><i4>3651</i4></value></param></params></methodResponse>
48
+ http_version:
49
+ recorded_at: Sun, 26 Jul 2015 01:26:17 GMT
50
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,50 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://test.infusionsoft.com/api/xmlrpc
6
+ body:
7
+ encoding: UTF-8
8
+ string: |
9
+ <?xml version="1.0" ?><methodCall><methodName>APIEmailService.attachEmail</methodName><params><param><value><string>not_a_real_key</string></value></param><param><value><i4>304</i4></value></param><param><value><string>The Dude</string></value></param><param><value><string>the_dude@lebowski.com</string></value></param><param><value><string>hagglundized@gmail.com</string></value></param><param><value><string>hagglundized+cc@gmail.com</string></value></param><param><value><string>hagglundized+bcc@gmail.com</string></value></param><param><value><string>Multipart</string></value></param><param><value><string>Question</string></value></param><param><value><string>&lt;em&gt;Where's the money?&lt;/em&gt;</string></value></param><param><value><string>Where's the money?</string></value></param><param><value><string>Test Header</string></value></param><param><value><string>2015-07-25T23:02:51-07:00</string></value></param><param><value><string>2015-07-25T23:02:51-07:00</string></value></param></params></methodCall>
10
+ headers:
11
+ User-Agent:
12
+ - Infusionsoft-1.1.9 (RubyGem)
13
+ Content-Type:
14
+ - text/xml; charset=utf-8
15
+ Content-Length:
16
+ - '1039'
17
+ Connection:
18
+ - keep-alive
19
+ Accept-Encoding:
20
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
21
+ Accept:
22
+ - "*/*"
23
+ response:
24
+ status:
25
+ code: 200
26
+ message: OK
27
+ headers:
28
+ Server:
29
+ - Apache-Coyote/1.1
30
+ Pragma:
31
+ - no-cache
32
+ Cache-Control:
33
+ - no-cache, no-store
34
+ Expires:
35
+ - Sun, 26 Jul 2015 18:02:46 GMT
36
+ Content-Type:
37
+ - text/xml;charset=UTF-8
38
+ Content-Length:
39
+ - '138'
40
+ Date:
41
+ - Sun, 26 Jul 2015 06:02:46 GMT
42
+ Set-Cookie:
43
+ - app-lb=!+GwQkGtMYPo0RM1gcOos6QUUDc5trQEOJ6uXXbzsQOq4PPARvRWsStemzx8XeHl2sfU5v2CqVXMhh/4=;
44
+ path=/
45
+ body:
46
+ encoding: UTF-8
47
+ string: <?xml version="1.0" encoding="utf-8"?><methodResponse><params><param><value><boolean>1</boolean></value></param></params></methodResponse>
48
+ http_version:
49
+ recorded_at: Sun, 26 Jul 2015 06:02:51 GMT
50
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,52 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://test.infusionsoft.com/api/xmlrpc
6
+ body:
7
+ encoding: UTF-8
8
+ string: |
9
+ <?xml version="1.0" ?><methodCall><methodName>APIEmailService.getAvailableMergeFields</methodName><params><param><value><string>not_a_real_key</string></value></param><param><value><string>Contact</string></value></param></params></methodCall>
10
+ headers:
11
+ User-Agent:
12
+ - Infusionsoft-1.1.9 (RubyGem)
13
+ Content-Type:
14
+ - text/xml; charset=utf-8
15
+ Content-Length:
16
+ - '262'
17
+ Connection:
18
+ - keep-alive
19
+ Accept-Encoding:
20
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
21
+ Accept:
22
+ - "*/*"
23
+ response:
24
+ status:
25
+ code: 200
26
+ message: OK
27
+ headers:
28
+ Server:
29
+ - Apache-Coyote/1.1
30
+ Pragma:
31
+ - no-cache
32
+ Cache-Control:
33
+ - no-cache, no-store
34
+ Expires:
35
+ - Sun, 26 Jul 2015 13:07:41 GMT
36
+ Content-Type:
37
+ - text/xml;charset=UTF-8
38
+ Vary:
39
+ - Accept-Encoding
40
+ Date:
41
+ - Sun, 26 Jul 2015 01:07:41 GMT
42
+ Connection:
43
+ - close
44
+ Set-Cookie:
45
+ - app-lb=!eTyx0NRCU0EQYlNgcOos6QUUDc5trbQorGipa7K5SmDW4P3aScIkbcKFmJz1ILgT+ygT3zUerhKiIcE=;
46
+ path=/
47
+ body:
48
+ encoding: ASCII-8BIT
49
+ string: <?xml version="1.0" encoding="utf-8"?><methodResponse><params><param><value><array><data><value>~LoggedInUser.LastName~</value><value>~Contact.Address2Street1~</value><value>~Contact.ZipFour2~</value><value>~Contact.StreetAddress2~</value><value>~Contact.Username~</value><value>~Contact.EmailAddress2~</value><value>~Contact.Phone2~</value><value>~Contact.PostalCode3~</value><value>~Owner.EmailAddress2~</value><value>~Owner.Fax1Type~</value><value>~Owner.Phone1Ext~</value><value>~LoggedInUser.Fax1~</value><value>~Owner.PostalCode~</value><value>~EmailSent.PartialHash~</value><value>~Company.Website~</value><value>~Contact.Address3Street2~</value><value>~LoggedInUser.Phone3Type~</value><value>~EmailSent.PublicPartialHash~</value><value>~Owner.Fax2~</value><value>~Contact._WeeklyAttendance~</value><value>~Contact.SpouseName~</value><value>~LoggedInUser.Signature~</value><value>~Contact._Aretheyinacampaign~</value><value>~Company.City~</value><value>~Owner.Phone3Ext~</value><value>~Contact.Address2Street2~</value><value>~Contact._CustomerNotes~</value><value>~Contact.Phone4Type~</value><value>~Contact.StreetAddress1~</value><value>~Contact.EmailHash~</value><value>~Contact.Phone1~</value><value>~Contact.JobTitle~</value><value>~Owner.FirstName~</value><value>~LoggedInUser.Fax2~</value><value>~Contact.ZipFour1~</value><value>~Contact.LastName~</value><value>~Contact.MiddleName~</value><value>~Contact.Address3Street1~</value><value>~LoggedInUser.Phone1Ext~</value><value>~Contact.EmailAddress3~</value><value>~LoggedInUser.Phone3Ext~</value><value>~Contact.Fax1~</value><value>~Contact.Phone4Ext~</value><value>~Owner.Fax1~</value><value>~Contact._Pricing~</value><value>~Contact._ConsultingCompany~</value><value>~LoggedInUser.Phone1Type~</value><value>~Owner.State~</value><value>~Contact.Title~</value><value>~Contact.Phone5Ext~</value><value>~LoggedInUser.StreetAddress1~</value><value>~Contact._Goals~</value><value>~Company.HTMLMailingAddressBlock~</value><value>~Contact.Phone4~</value><value>~Owner.Email~</value><value>~Owner.StreetAddress1~</value><value>~Contact.Password~</value><value>~Contact.Phone3Type~</value><value>~Contact._ResetPasswordURL~</value><value>~Contact.City2~</value><value>~Company.PostalCode~</value><value>~LoggedInUser.StreetAddress2~</value><value>~Contact.Country~</value><value>~Contact.FirstName~</value><value>~LoggedInUser.Id~</value><value>~Contact.State~</value><value>~Contact.ReferralCode~</value><value>~Contact._ChMS~</value><value>~Contact.Company~</value><value>~LoggedInUser.Website~</value><value>~Contact.Fax2Type~</value><value>~LoggedInUser.City~</value><value>~Owner.Phone3Type~</value><value>~Contact.Phone3~</value><value>~Contact.PostalCode2~</value><value>~LoggedInUser.Fax2Type~</value><value>~Owner.Phone1Type~</value><value>~Contact.City3~</value><value>~Contact._Budget~</value><value>~LoggedInUser.Phone1~</value><value>~Contact._Aretheyworkingwithaconsultant~</value><value>~Contact.AssistantName~</value><value>~Contact.City~</value><value>~Contact._Budget0~</value><value>~Contact.Website~</value><value>~LoggedInUser.Country~</value><value>~LoggedInUser.Phone2Type~</value><value>~Owner.Country~</value><value>~Contact.ContactNotes~</value><value>~LoggedInUser.Phone2Ext~</value><value>~Contact.Anniversary~</value><value>~Owner.Fax2Type~</value><value>~Company.StreetAddress1~</value><value>~Owner.Phone2~</value><value>~Contact.Email~</value><value>~LoggedInUser.Phone2~</value><value>~Contact.Phone5~</value><value>~LoggedInUser.Email~</value><value>~Owner.City~</value><value>~Owner.Website~</value><value>~Contact.Phone2Ext~</value><value>~Company.Email~</value><value>~LoggedInUser.PostalCode~</value><value>~LoggedInUser.Company~</value><value>~Contact.Phone1Type~</value><value>~Company.Phone1~</value><value>~EmailSent.Id~</value><value>~Company.TaxId~</value><value>~Owner.Phone3~</value><value>~Owner.StreetAddress2~</value><value>~Contact.Fax1Type~</value><value>~Contact.Phone2Type~</value><value>~Company.Company~</value><value>~Contact.Leadsource~</value><value>~Contact.Birthday~</value><value>~Contact.Country3~</value><value>~Contact.Phone3Ext~</value><value>~Contact.Fax2~</value><value>~Contact.Phone5Type~</value><value>~Owner.Company~</value><value>~LoggedInUser.Phone3~</value><value>~LoggedInUser.State~</value><value>~App.Name~</value><value>~Contact.Nickname~</value><value>~Contact.PostalCode~</value><value>~Contact.State2~</value><value>~Owner.Phone2Type~</value><value>~Contact.Suffix~</value><value>~LoggedInUser.FirstName~</value><value>~Contact.Phone1Ext~</value><value>~Company.State~</value><value>~Contact.AssistantPhone~</value><value>~Contact.SSN~</value><value>~Owner.LastName~</value><value>~Contact.Id~</value><value>~Company.MailingAddressBlock~</value><value>~LoggedInUser.Title~</value><value>~Owner.Id~</value><value>~LoggedInUser.Fax1Type~</value><value>~Contact.Country2~</value><value>~Contact.AccountId~</value><value>~Contact._TypeofOrganization~</value><value>~Contact._ChMS0~</value><value>~LoggedInUser.HTMLSignature~</value><value>~Owner.Phone2Ext~</value><value>~Owner.Title~</value><value>~Contact.ZipFour3~</value><value>~Contact.State3~</value><value>~Owner.Signature~</value><value>~Contact.EditPage~</value><value>~Company.HTMLCanSpamAddressBlock~</value><value>~LoggedInUser.EmailAddress2~</value><value>~Company.Country~</value><value>~Owner.HTMLSignature~</value><value>~Company.StreetAddress2~</value><value>~Owner.Phone1~</value><value>~Company.CanSpamAddressBlock~</value></data></array></value></param></params></methodResponse>
50
+ http_version:
51
+ recorded_at: Sun, 26 Jul 2015 01:07:46 GMT
52
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,50 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://test.infusionsoft.com/api/xmlrpc
6
+ body:
7
+ encoding: UTF-8
8
+ string: |
9
+ <?xml version="1.0" ?><methodCall><methodName>APIEmailService.getOptStatus</methodName><params><param><value><string>not_a_real_key</string></value></param><param><value><string>hagglundized@gmail.com</string></value></param></params></methodCall>
10
+ headers:
11
+ User-Agent:
12
+ - Infusionsoft-1.1.9 (RubyGem)
13
+ Content-Type:
14
+ - text/xml; charset=utf-8
15
+ Content-Length:
16
+ - '266'
17
+ Connection:
18
+ - keep-alive
19
+ Accept-Encoding:
20
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
21
+ Accept:
22
+ - "*/*"
23
+ response:
24
+ status:
25
+ code: 200
26
+ message: OK
27
+ headers:
28
+ Server:
29
+ - Apache-Coyote/1.1
30
+ Pragma:
31
+ - no-cache
32
+ Cache-Control:
33
+ - no-cache, no-store
34
+ Expires:
35
+ - Sun, 26 Jul 2015 12:58:44 GMT
36
+ Content-Type:
37
+ - text/xml;charset=UTF-8
38
+ Content-Length:
39
+ - '128'
40
+ Date:
41
+ - Sun, 26 Jul 2015 00:58:43 GMT
42
+ Set-Cookie:
43
+ - app-lb=!bJjMumCYTheHPB1gcOos6QUUDc5trevd9zS0Fif3gxvA9Zs4zIBIqoXD62DMB7wqCMKf8zFJLdL9rbM=;
44
+ path=/
45
+ body:
46
+ encoding: UTF-8
47
+ string: <?xml version="1.0" encoding="utf-8"?><methodResponse><params><param><value><i4>1</i4></value></param></params></methodResponse>
48
+ http_version:
49
+ recorded_at: Sun, 26 Jul 2015 00:58:49 GMT
50
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,118 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://test.infusionsoft.com/api/xmlrpc
6
+ body:
7
+ encoding: UTF-8
8
+ string: |
9
+ <?xml version="1.0" ?><methodCall><methodName>APIEmailService.getEmailTemplate</methodName><params><param><value><string>not_a_real_key</string></value></param><param><value><i4>3649</i4></value></param></params></methodCall>
10
+ headers:
11
+ User-Agent:
12
+ - Infusionsoft-1.1.9 (RubyGem)
13
+ Content-Type:
14
+ - text/xml; charset=utf-8
15
+ Content-Length:
16
+ - '244'
17
+ Connection:
18
+ - keep-alive
19
+ Accept-Encoding:
20
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
21
+ Accept:
22
+ - "*/*"
23
+ response:
24
+ status:
25
+ code: 200
26
+ message: OK
27
+ headers:
28
+ Server:
29
+ - Apache-Coyote/1.1
30
+ Pragma:
31
+ - no-cache
32
+ Cache-Control:
33
+ - no-cache, no-store
34
+ Expires:
35
+ - Sun, 26 Jul 2015 13:17:06 GMT
36
+ Content-Type:
37
+ - text/xml;charset=UTF-8
38
+ Vary:
39
+ - Accept-Encoding
40
+ Date:
41
+ - Sun, 26 Jul 2015 01:17:06 GMT
42
+ Connection:
43
+ - close
44
+ Set-Cookie:
45
+ - app-lb=!Flm102Q1X/paEH1gcOos6QUUDc5trRdQIdihKTUs5MfQrp4SjjTU2MPK3UBq8D4ZANIGn0BKhPrj7Nw=;
46
+ path=/
47
+ body:
48
+ encoding: ASCII-8BIT
49
+ string: "<?xml version=\"1.0\" encoding=\"utf-8\"?><methodResponse><params><param><value><struct><member><name>pieceTitle</name><value>Test
50
+ Email Template</value></member><member><name>categories</name><value></value></member><member><name>fromAddress</name><value>\"~Owner.FirstName~
51
+ ~Owner.LastName~\" &lt;~Owner.Email~&gt;</value></member><member><name>toAddress</name><value>~Contact.Email~</value></member><member><name>ccAddress</name><value></value></member><member><name>bccAddress</name><value></value></member><member><name>subject</name><value>Test
52
+ Testing</value></member><member><name>textBody</name><value>This email was
53
+ sent as HTML-only. To view it, please visit:\r\n~HostedEmail.Url~</value></member><member><name>htmlBody</name><value>&lt;div
54
+ id=\"mainContent\" style=\"text-align: left;\"&gt;\n&lt;table cellpadding=\"10\"
55
+ cellspacing=\"0\" style=\"background-color: rgb(204,204,204); width: 100%;
56
+ height: 100%;\"&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td valign=\"top\"&gt;\n&lt;table
57
+ align=\"center\" cellpadding=\"0\" cellspacing=\"0\"&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td&gt;\n&lt;table
58
+ cellpadding=\"0\" cellspacing=\"0\" style=\"width: 600px;\"&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td
59
+ sectionid=\"preheader\" style=\"text-align: left; margin: 0; padding: 10px
60
+ 0; border: none; white-space: normal; line-height: normal;\"&gt;\n&lt;div&gt;\n&lt;div&gt;\n&lt;div
61
+ style=\"font-size: 11px; font-family: arial; color: rgb(42,41,40); margin:
62
+ 0; padding: 0; background: none; border: none; white-space: normal; line-height:
63
+ normal; overflow: visible; text-align: center;\"&gt;\n&lt;div contentid=\"preheader\"
64
+ style=\"font-size: 11px; font-family: arial; color: rgb(42,41,40); margin:
65
+ 0; padding: 0; background: none; border: none; white-space: normal; line-height:
66
+ normal; overflow: visible; text-align: center;\"&gt;\n&lt;div&gt;\nHaving
67
+ trouble viewing this email? &lt;a href=\"~Link-1911~\" shape=\"rect\" style=\"color:
68
+ rgb(42,41,40);\"&gt;Click here&lt;/a&gt;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td
69
+ sectionid=\"header\" style=\"background-color: rgb(255,255,255); text-align:
70
+ left; margin: 0; padding: 0; border: none; white-space: normal; line-height:
71
+ normal; height: 30px;\"&gt;\n&lt;div&gt;\n&lt;div style=\"height: 15px; line-height:
72
+ 15px;\"&gt;\n&amp;nbsp;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;div&gt;\n&lt;div&gt;\n&lt;div
73
+ style=\"font-size: 20px; font-weight: bold; font-family: arial; color: rgb(102,153,64);
74
+ margin: 0; padding: 0; background: none; border: none; white-space: normal;
75
+ line-height: normal; overflow: visible; text-align: left;\"&gt;\n&lt;div contentid=\"title\"
76
+ style=\"font-size: 20px; font-weight: bold; font-family: arial; color: rgb(102,153,64);
77
+ margin: 0; padding: 0; background: none; border: none; white-space: normal;
78
+ line-height: normal; overflow: visible; text-align: left;\"&gt;\n&lt;div&gt;\n&amp;nbsp;&amp;nbsp;&amp;nbsp;~Company.Company~\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;div&gt;\n&lt;div
79
+ style=\"height: 15px; line-height: 15px;\"&gt;\n&amp;nbsp;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td&gt;\n&lt;table
80
+ bgcolor=\"#FFFFFF\" cellpadding=\"20\" cellspacing=\"0\" style=\"width: 600px;
81
+ background-color: rgb(255,255,255);\"&gt;\n&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td
82
+ sectionid=\"body\" style=\"background-color: rgb(255,255,255); text-align:
83
+ left; margin: 0; padding: 20px; border: none; white-space: normal; line-height:
84
+ normal;\" valign=\"top\"&gt;\n&lt;div&gt;\n&lt;div&gt;\n&lt;div style=\"font-size:
85
+ 20px; font-weight: bold; font-family: arial; color: rgb(102,153,64); margin:
86
+ 0; padding: 0; background: none; border: none; white-space: normal; line-height:
87
+ normal; overflow: visible; text-align: left;\"&gt;\n&lt;div contentid=\"title\"
88
+ style=\"font-size: 20px; font-weight: bold; font-family: arial; color: rgb(102,153,64);
89
+ margin: 0; padding: 0; background: none; border: none; white-space: normal;
90
+ line-height: normal; overflow: visible; text-align: left;\"&gt;\n&lt;div&gt;\nHi
91
+ ~Contact.FirstName~\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;div&gt;\n&lt;div
92
+ style=\"height: 15px; line-height: 15px;\"&gt;\n&amp;nbsp;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;div&gt;\n&lt;div
93
+ style=\"font-size: 12px; font-family: arial; color: rgb(120,120,120); margin:
94
+ 0; padding: 0; background: none; border: none; white-space: normal; line-height:
95
+ normal; overflow: visible;\"&gt;\n&lt;div contentid=\"paragraph\" style=\"font-size:
96
+ 12px; font-family: arial; color: rgb(120,120,120); margin: 0; padding: 0;
97
+ background: none; border: none; white-space: normal; line-height: normal;
98
+ overflow: visible;\"&gt;\n&lt;div style=\"overflow: visible;\"&gt;\nThank
99
+ you for doing business with ~Company.Company~. \n&lt;br clear=\"none\" /&gt;\n&lt;br
100
+ clear=\"none\" /&gt;\n Sincerely,\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;div&gt;\n&lt;div
101
+ style=\"height: 15px; line-height: 15px;\"&gt;\n&amp;nbsp;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;div&gt;\n&lt;div&gt;\n~Owner.HTMLSignature~\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td
102
+ sectionid=\"footer\" style=\"background-color: rgb(122,193,67); text-align:
103
+ left; margin: 0; padding: 20px; border: none; white-space: normal; line-height:
104
+ normal;\" valign=\"top\"&gt;\n&lt;div&gt;\n&lt;div style=\"font-size: 10px;
105
+ font-family: verdana; color: rgb(42,41,40); margin: 0; padding: 0; background:
106
+ none; border: none; white-space: normal; line-height: normal; overflow: visible;\"&gt;\n&lt;div
107
+ contentid=\"paragraph\" style=\"font-size: 10px; font-family: verdana; color:
108
+ rgb(42,41,40); margin: 0; padding: 0; background: none; border: none; white-space:
109
+ normal; line-height: normal; overflow: visible;\"&gt;\n&lt;div&gt;\nIf you
110
+ no longer wish to receive our emails, click the link below: \n&lt;br clear=\"none\"
111
+ /&gt;\n&lt;a href=\"~Link-1909~\" shape=\"rect\" style=\"font-size: 11px;
112
+ font-family: arial; color: rgb(0,114,143);\"&gt;Unsubscribe&lt;/a&gt;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;div&gt;\n&lt;div
113
+ style=\"font-size: 10px; font-family: verdana; color: rgb(42,41,40); margin:
114
+ 0; padding: 0; background: none; border: none; white-space: normal; line-height:
115
+ normal; overflow: visible;\"&gt;\n~Company.HTMLCanSpamAddressBlock~\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;\n&lt;/table&gt;\n&lt;/div&gt;</value></member><member><name>contentType</name><value>Multipart</value></member><member><name>mergeContext</name><value>Contact</value></member></struct></value></param></params></methodResponse>"
116
+ http_version:
117
+ recorded_at: Sun, 26 Jul 2015 01:17:11 GMT
118
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,50 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://test.infusionsoft.com/api/xmlrpc
6
+ body:
7
+ encoding: UTF-8
8
+ string: |
9
+ <?xml version="1.0" ?><methodCall><methodName>APIEmailService.optIn</methodName><params><param><value><string>not_a_real_key</string></value></param><param><value><string>hagglundized@gmail.com</string></value></param><param><value><string>because i said so</string></value></param></params></methodCall>
10
+ headers:
11
+ User-Agent:
12
+ - Infusionsoft-1.1.9 (RubyGem)
13
+ Content-Type:
14
+ - text/xml; charset=utf-8
15
+ Content-Length:
16
+ - '323'
17
+ Connection:
18
+ - keep-alive
19
+ Accept-Encoding:
20
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
21
+ Accept:
22
+ - "*/*"
23
+ response:
24
+ status:
25
+ code: 200
26
+ message: OK
27
+ headers:
28
+ Server:
29
+ - Apache-Coyote/1.1
30
+ Pragma:
31
+ - no-cache
32
+ Cache-Control:
33
+ - no-cache, no-store
34
+ Expires:
35
+ - Sun, 26 Jul 2015 13:00:39 GMT
36
+ Content-Type:
37
+ - text/xml;charset=UTF-8
38
+ Content-Length:
39
+ - '138'
40
+ Date:
41
+ - Sun, 26 Jul 2015 01:00:39 GMT
42
+ Set-Cookie:
43
+ - app-lb=!5nxnGxdkuCJtM2BgcOos6QUUDc5trelc3pZ1XtQ72kFVpkCp+niAF9aoUCBrjjwP2VweA972axXQuEc=;
44
+ path=/
45
+ body:
46
+ encoding: UTF-8
47
+ string: <?xml version="1.0" encoding="utf-8"?><methodResponse><params><param><value><boolean>0</boolean></value></param></params></methodResponse>
48
+ http_version:
49
+ recorded_at: Sun, 26 Jul 2015 01:00:44 GMT
50
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,50 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://test.infusionsoft.com/api/xmlrpc
6
+ body:
7
+ encoding: UTF-8
8
+ string: |
9
+ <?xml version="1.0" ?><methodCall><methodName>APIEmailService.optOut</methodName><params><param><value><string>not_a_real_key</string></value></param><param><value><string>boutthat@ction.boss</string></value></param><param><value><string>because i said so</string></value></param></params></methodCall>
10
+ headers:
11
+ User-Agent:
12
+ - Infusionsoft-1.1.9 (RubyGem)
13
+ Content-Type:
14
+ - text/xml; charset=utf-8
15
+ Content-Length:
16
+ - '321'
17
+ Connection:
18
+ - keep-alive
19
+ Accept-Encoding:
20
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
21
+ Accept:
22
+ - "*/*"
23
+ response:
24
+ status:
25
+ code: 200
26
+ message: OK
27
+ headers:
28
+ Server:
29
+ - Apache-Coyote/1.1
30
+ Pragma:
31
+ - no-cache
32
+ Cache-Control:
33
+ - no-cache, no-store
34
+ Expires:
35
+ - Sun, 26 Jul 2015 13:05:25 GMT
36
+ Content-Type:
37
+ - text/xml;charset=UTF-8
38
+ Content-Length:
39
+ - '138'
40
+ Date:
41
+ - Sun, 26 Jul 2015 01:05:24 GMT
42
+ Set-Cookie:
43
+ - app-lb=!3RnJnFp8A8IWSIFgcOos6QUUDc5trZenL7ZhuhfLaqlXlu8/iD7MpacOZatIh1OUrHb1O/dXS9zFAEc=;
44
+ path=/
45
+ body:
46
+ encoding: UTF-8
47
+ string: <?xml version="1.0" encoding="utf-8"?><methodResponse><params><param><value><boolean>1</boolean></value></param></params></methodResponse>
48
+ http_version:
49
+ recorded_at: Sun, 26 Jul 2015 01:05:30 GMT
50
+ recorded_with: VCR 2.9.3