constantcontact-ruby 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +2 -0
  3. data/README.md +136 -0
  4. data/constantcontact-ruby.gemspec +31 -0
  5. data/lib/constantcontact/api.rb +1012 -0
  6. data/lib/constantcontact/auth/oauth2.rb +105 -0
  7. data/lib/constantcontact/auth/session_data_store.rb +69 -0
  8. data/lib/constantcontact/components/account/account_address.rb +26 -0
  9. data/lib/constantcontact/components/account/account_info.rb +38 -0
  10. data/lib/constantcontact/components/account/verified_email_address.rb +26 -0
  11. data/lib/constantcontact/components/activities/activity.rb +43 -0
  12. data/lib/constantcontact/components/activities/activity_error.rb +26 -0
  13. data/lib/constantcontact/components/activities/add_contacts.rb +127 -0
  14. data/lib/constantcontact/components/activities/add_contacts_import_data.rb +46 -0
  15. data/lib/constantcontact/components/activities/export_contacts.rb +30 -0
  16. data/lib/constantcontact/components/component.rb +48 -0
  17. data/lib/constantcontact/components/contacts/address.rb +27 -0
  18. data/lib/constantcontact/components/contacts/contact.rb +92 -0
  19. data/lib/constantcontact/components/contacts/contact_list.rb +26 -0
  20. data/lib/constantcontact/components/contacts/custom_field.rb +26 -0
  21. data/lib/constantcontact/components/contacts/email_address.rb +33 -0
  22. data/lib/constantcontact/components/contacts/note.rb +26 -0
  23. data/lib/constantcontact/components/email_marketing/campaign.rb +83 -0
  24. data/lib/constantcontact/components/email_marketing/campaign_preview.rb +29 -0
  25. data/lib/constantcontact/components/email_marketing/click_through_details.rb +27 -0
  26. data/lib/constantcontact/components/email_marketing/message_footer.rb +29 -0
  27. data/lib/constantcontact/components/email_marketing/schedule.rb +27 -0
  28. data/lib/constantcontact/components/email_marketing/test_send.rb +45 -0
  29. data/lib/constantcontact/components/event_spot/contact.rb +27 -0
  30. data/lib/constantcontact/components/event_spot/event.rb +69 -0
  31. data/lib/constantcontact/components/event_spot/event_address.rb +29 -0
  32. data/lib/constantcontact/components/event_spot/event_fee.rb +27 -0
  33. data/lib/constantcontact/components/event_spot/event_item.rb +36 -0
  34. data/lib/constantcontact/components/event_spot/event_item_attribute.rb +26 -0
  35. data/lib/constantcontact/components/event_spot/event_track.rb +31 -0
  36. data/lib/constantcontact/components/event_spot/guest.rb +31 -0
  37. data/lib/constantcontact/components/event_spot/guest_section.rb +34 -0
  38. data/lib/constantcontact/components/event_spot/notification_option.rb +27 -0
  39. data/lib/constantcontact/components/event_spot/online_meeting.rb +28 -0
  40. data/lib/constantcontact/components/event_spot/payment_address.rb +29 -0
  41. data/lib/constantcontact/components/event_spot/payment_summary.rb +33 -0
  42. data/lib/constantcontact/components/event_spot/promocode.rb +25 -0
  43. data/lib/constantcontact/components/event_spot/registrant.rb +52 -0
  44. data/lib/constantcontact/components/event_spot/registrant_fee.rb +29 -0
  45. data/lib/constantcontact/components/event_spot/registrant_field.rb +27 -0
  46. data/lib/constantcontact/components/event_spot/registrant_order.rb +39 -0
  47. data/lib/constantcontact/components/event_spot/registrant_promo_code.rb +31 -0
  48. data/lib/constantcontact/components/event_spot/registrant_promo_code_info.rb +27 -0
  49. data/lib/constantcontact/components/event_spot/registrant_section.rb +34 -0
  50. data/lib/constantcontact/components/event_spot/sale_item.rb +29 -0
  51. data/lib/constantcontact/components/library/file/library_file.rb +27 -0
  52. data/lib/constantcontact/components/library/folder/library_folder.rb +26 -0
  53. data/lib/constantcontact/components/library/info/library_summary.rb +26 -0
  54. data/lib/constantcontact/components/library/info/move_results.rb +26 -0
  55. data/lib/constantcontact/components/library/info/upload_status.rb +26 -0
  56. data/lib/constantcontact/components/result_set.rb +50 -0
  57. data/lib/constantcontact/components/tracking/bounce_activity.rb +28 -0
  58. data/lib/constantcontact/components/tracking/click_activity.rb +26 -0
  59. data/lib/constantcontact/components/tracking/forward_activity.rb +26 -0
  60. data/lib/constantcontact/components/tracking/open_activity.rb +26 -0
  61. data/lib/constantcontact/components/tracking/send_activity.rb +27 -0
  62. data/lib/constantcontact/components/tracking/tracking_activity.rb +26 -0
  63. data/lib/constantcontact/components/tracking/tracking_summary.rb +27 -0
  64. data/lib/constantcontact/components/tracking/unsubscribe_activity.rb +27 -0
  65. data/lib/constantcontact/exceptions/ctct_exception.rb +25 -0
  66. data/lib/constantcontact/exceptions/illegal_argument_exception.rb +11 -0
  67. data/lib/constantcontact/exceptions/oauth2_exception.rb +11 -0
  68. data/lib/constantcontact/exceptions/webhooks_exception.rb +11 -0
  69. data/lib/constantcontact/services/account_service.rb +39 -0
  70. data/lib/constantcontact/services/activity_service.rb +136 -0
  71. data/lib/constantcontact/services/base_service.rb +68 -0
  72. data/lib/constantcontact/services/campaign_schedule_service.rb +101 -0
  73. data/lib/constantcontact/services/campaign_tracking_service.rb +152 -0
  74. data/lib/constantcontact/services/contact_service.rb +105 -0
  75. data/lib/constantcontact/services/contact_tracking_service.rb +152 -0
  76. data/lib/constantcontact/services/email_marketing_service.rb +94 -0
  77. data/lib/constantcontact/services/event_spot_service.rb +448 -0
  78. data/lib/constantcontact/services/library_service.rb +281 -0
  79. data/lib/constantcontact/services/list_service.rb +81 -0
  80. data/lib/constantcontact/util/config.rb +180 -0
  81. data/lib/constantcontact/util/helpers.rb +27 -0
  82. data/lib/constantcontact/version.rb +12 -0
  83. data/lib/constantcontact/webhooks/helpers/validator.rb +30 -0
  84. data/lib/constantcontact/webhooks/models/billing_change_notification.rb +27 -0
  85. data/lib/constantcontact/webhooks/webhooks_util.rb +45 -0
  86. data/lib/constantcontact.rb +124 -0
  87. data/spec/constantcontact/api_spec.rb +1560 -0
  88. data/spec/constantcontact/auth/oauth2_spec.rb +125 -0
  89. data/spec/constantcontact/components/contacts/address_spec.rb +18 -0
  90. data/spec/constantcontact/components/contacts/contact_list_spec.rb +18 -0
  91. data/spec/constantcontact/components/contacts/contact_spec.rb +18 -0
  92. data/spec/constantcontact/components/contacts/custom_field_spec.rb +18 -0
  93. data/spec/constantcontact/components/contacts/email_address_spec.rb +18 -0
  94. data/spec/constantcontact/sdk_spec.rb +24 -0
  95. data/spec/constantcontact/services/account_service_spec.rb +46 -0
  96. data/spec/constantcontact/services/activity_service_spec.rb +244 -0
  97. data/spec/constantcontact/services/base_service_spec.rb +50 -0
  98. data/spec/constantcontact/services/campaign_schedule_service_spec.rb +115 -0
  99. data/spec/constantcontact/services/campaign_tracking_service_spec.rb +131 -0
  100. data/spec/constantcontact/services/contact_service_spec.rb +111 -0
  101. data/spec/constantcontact/services/contact_tracking_service_spec.rb +131 -0
  102. data/spec/constantcontact/services/email_marketing_spec.rb +100 -0
  103. data/spec/constantcontact/services/event_spot_spec.rb +423 -0
  104. data/spec/constantcontact/services/library_service_spec.rb +252 -0
  105. data/spec/constantcontact/services/list_service_spec.rb +89 -0
  106. data/spec/constantcontact/webhooks/webhooks_spec.rb +26 -0
  107. metadata +243 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 74ceb09ee19f5f7af57343c79fc8ef94416a1ae1
4
+ data.tar.gz: 1ca40a24f720b500e490b8bcccdb3f54da184075
5
+ SHA512:
6
+ metadata.gz: 1f9e336a081468da87bfe1ba9cef99434083421030da104098f4cc67d13b5d65e89bb35067123b0ce518c046a56a841d4e6c113c0d61762d965db412b1fa7668
7
+ data.tar.gz: c1d534fe869dc559ec6f6751ef7e7e17f3ba1b4b24b53cbd9a7d986ddc7a2ded8ec8478155760e25c07e3e53c88f904552826a76ed795bba80688843764df653
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format nested
2
+ --color
data/README.md ADDED
@@ -0,0 +1,136 @@
1
+ Constant Contact Ruby SDK for AppConnect
2
+ ====
3
+
4
+ The Ruby SDK for AppConnect allows you to leverage the AppConnect v2 APIs.
5
+
6
+ [![Build Status](https://travis-ci.org/constantcontact/ruby-sdk.png)](https://travis-ci.org/constantcontact/ruby-sdk)
7
+
8
+ Installation
9
+ ====
10
+ Via bundler:
11
+ ```ruby
12
+ gem 'constantcontact', '~> 2.2.0'
13
+ ```
14
+ Otherwise:
15
+ ```bash
16
+ [sudo|rvm] gem install constantcontact
17
+ ```
18
+
19
+ Configuration
20
+ ====
21
+ The AppConnect SDK can be configured with some options globally or they can be specified when creating the API client:
22
+ ```ruby
23
+ ConstantContact::Util::Config.configure do |config|
24
+ config[:auth][:api_key] = 'your-access-key'
25
+ config[:auth][:api_secret] = 'your-access-secret'
26
+ config[:auth][:redirect_uri] = 'https://example.com/auth/constantcontact'
27
+ end
28
+ ```
29
+
30
+ Documentation
31
+ =====
32
+ SDK Documentation is hosted at http://constantcontact.github.io/ruby-sdk
33
+
34
+ API Documentation is located at http://developer.constantcontact.com/docs/developer-guides/api-documentation-index.html
35
+
36
+ Getting Started
37
+ ====
38
+ AppConnect requires an OAuth access token which will give your app access to Constant Contact data and services for the accout that granted that access token.
39
+
40
+ Rails
41
+ =====
42
+ Create a new controller action. The redirect_url should be the same as the one given when registering the app with Mashery. Use the following code snippet to get an access token:
43
+ ```ruby
44
+ @oauth = ConstantContact::Auth::OAuth2.new(
45
+ :api_key => 'your api key',
46
+ :api_secret => 'your secret key',
47
+ :redirect_url => 'your redirect url' # the URL given when registering your app with Mashery.
48
+ )
49
+
50
+ @error = params[:error]
51
+ @user = params[:username]
52
+ @code = params[:code]
53
+
54
+ if @code.present?
55
+ response = @oauth.get_access_token(@code)
56
+ if response.present?
57
+ token = response['access_token']
58
+ cc = ConstantContact::Api.new('your api key', token)
59
+ @contacts = cc.get_contacts()
60
+ end
61
+ else
62
+ # if not code param is provided redirect into the OAuth flow
63
+ redirect_to @oauth.get_authorization_url and return
64
+ end
65
+ ```
66
+
67
+ Create a view for the above mentioned action with the following code:
68
+ ```erb
69
+
70
+ <% if @error %>
71
+ <p><%= @error %></p>
72
+ <% end %>
73
+
74
+ <% if @contacts.present? %>
75
+ <% @contacts.each do |contact| %>
76
+ <p>Contact name: <%= "#{contact.first_name} #{contact.last_name}" %></p>
77
+ <% end %>
78
+ <% end %>
79
+ ```
80
+
81
+ The first time you access the action you will be redirected into the Constant Contact OAuth flow.
82
+ Then you will be redirected back to your action and you should see the list of contacts.
83
+
84
+ Sinatra
85
+ =====
86
+ Require AppConnect:
87
+ ```ruby
88
+ require 'constantcontact'
89
+ ```
90
+
91
+ Add the following route. The redirect_url should be the same given when registering the app with Mashery.
92
+ ```ruby
93
+ get '/my_url' do
94
+ @oauth = ConstantContact::Auth::OAuth2.new(
95
+ :api_key => 'your api key',
96
+ :api_secret => 'your secret key',
97
+ :redirect_url => 'your redirect url'
98
+ )
99
+
100
+ @error = params[:error]
101
+ @user = params[:username]
102
+ @code = params[:code]
103
+
104
+ if @code
105
+ response = @oauth.get_access_token(@code)
106
+ if response
107
+ token = response['access_token']
108
+ cc = ConstantContact::Api.new('your api key', token)
109
+ @contacts = cc.get_contacts()
110
+ end
111
+ end
112
+
113
+ erb :my_view
114
+ end
115
+ ```
116
+
117
+ Create a my_view.erb with the following code:
118
+ ```ruby
119
+ <% if @error %>
120
+ <p><%=@error%></p>
121
+ <% end %>
122
+
123
+ <% if @code %>
124
+ <% if @contacts %>
125
+ <% @contacts.each do |contact| %>
126
+ <p>\Contact name: <%= "#{contact.first_name} #{contact.last_name}" %></p>
127
+ <% end %>
128
+ <% end %>
129
+ <% else %>
130
+ <a href="<%=@oauth.get_authorization_url%>">Click to authorize</a>
131
+ <% end %>
132
+ ```
133
+
134
+ The first time you access the action in browser you should see the "Click to authorize" link.
135
+ Follow the link, go through all the Constant Contact steps required
136
+ and then you will be redirected back to your action and you should see the list of contacts.
@@ -0,0 +1,31 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ lib = File.expand_path('../lib', __FILE__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "constantcontact-ruby"
8
+ s.version = '2.2.0'
9
+ s.platform = Gem::Platform::RUBY
10
+ s.authors = ["ConstantContact", "ConferenceCloud"]
11
+ s.homepage = "http://www.constantcontact.com"
12
+ s.summary = %q{Constant Contact SDK for Ruby}
13
+ s.email = "webservices@constantcontact.com"
14
+ s.description = "Ruby library for interactions with Constant Contact v2 API"
15
+ s.license = "MIT"
16
+
17
+ s.files = [
18
+ '.rspec',
19
+ 'constantcontact-ruby.gemspec',
20
+ 'README.md'
21
+ ]
22
+ s.files += Dir['lib/**/*.rb']
23
+ s.executables = []
24
+ s.require_paths = [ "lib" ]
25
+ s.test_files = Dir['spec/**/*_spec.rb']
26
+
27
+ s.add_runtime_dependency("rest-client", '~> 1.6', '>= 1.6.7')
28
+ s.add_runtime_dependency("json", '~> 1.8', '>= 1.8.1')
29
+ s.add_runtime_dependency('mime-types', '~> 2.4', '>= 2.4.1')
30
+ s.add_development_dependency("rspec", '~> 2.14')
31
+ end