sendgrid-ruby 1.1.6 → 6.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (160) hide show
  1. checksums.yaml +5 -5
  2. data/.env_sample +1 -3
  3. data/.github/ISSUE_TEMPLATE/config.yml +10 -0
  4. data/.github/workflows/test-and-deploy.yml +120 -0
  5. data/.gitignore +3 -0
  6. data/.rubocop.yml +5 -27
  7. data/.rubocop_todo.yml +127 -0
  8. data/CHANGELOG.md +417 -1
  9. data/CODE_OF_CONDUCT.md +73 -0
  10. data/CONTRIBUTING.md +202 -0
  11. data/Dockerfile +14 -0
  12. data/FIRST_TIMERS.md +79 -0
  13. data/Gemfile +4 -4
  14. data/ISSUE_TEMPLATE.md +30 -0
  15. data/LICENSE +21 -0
  16. data/Makefile +14 -0
  17. data/PULL_REQUEST_TEMPLATE.md +31 -0
  18. data/README.md +153 -229
  19. data/Rakefile +9 -3
  20. data/TROUBLESHOOTING.md +151 -0
  21. data/UPGRADE.md +5 -0
  22. data/USAGE.md +5144 -0
  23. data/config.ru +4 -0
  24. data/examples/accesssettings/accesssettings.rb +80 -0
  25. data/examples/alerts/alerts.rb +59 -0
  26. data/examples/apikeys/apikeys.rb +81 -0
  27. data/examples/asm/asm.rb +170 -0
  28. data/examples/browsers/browsers.rb +13 -0
  29. data/examples/campaigns/campaigns.rb +150 -0
  30. data/examples/categories/categories.rb +33 -0
  31. data/examples/clients/clients.rb +24 -0
  32. data/examples/contactdb/contactdb.rb +392 -0
  33. data/examples/devices/devices.rb +13 -0
  34. data/examples/emailactivity/emailactivity.rb +52 -0
  35. data/examples/geo/geo.rb +13 -0
  36. data/examples/helpers/eventwebhook/example.rb +16 -0
  37. data/examples/helpers/mail/example.rb +158 -0
  38. data/examples/helpers/settings/example.rb +23 -0
  39. data/examples/helpers/stats/example.rb +42 -0
  40. data/examples/ips/ips.rb +164 -0
  41. data/examples/mail/mail.rb +170 -0
  42. data/examples/mailboxproviders/mailboxproviders.rb +13 -0
  43. data/examples/mailsettings/mailsettings.rb +216 -0
  44. data/examples/partnersettings/partnersettings.rb +36 -0
  45. data/examples/scopes/scopes.rb +59 -0
  46. data/examples/senderauthentication/senderauthentication.rb +307 -0
  47. data/examples/senders/senders.rb +95 -0
  48. data/examples/stats/stats.rb +13 -0
  49. data/examples/subusers/subusers.rb +166 -0
  50. data/examples/suppression/suppression.rb +198 -0
  51. data/examples/templates/templates.rb +127 -0
  52. data/examples/trackingsettings/trackingsettings.rb +107 -0
  53. data/examples/user/user.rb +290 -0
  54. data/gemfiles/Sinatra_1.gemfile +6 -0
  55. data/gemfiles/Sinatra_2.gemfile +6 -0
  56. data/lib/rack/sendgrid_webhook_verification.rb +55 -0
  57. data/lib/sendgrid/base_interface.rb +40 -0
  58. data/lib/sendgrid/helpers/eventwebhook/eventwebhook.rb +50 -0
  59. data/lib/sendgrid/helpers/inbound/README.md +98 -0
  60. data/lib/sendgrid/helpers/inbound/app.rb +32 -0
  61. data/lib/sendgrid/helpers/inbound/config.yml +26 -0
  62. data/lib/sendgrid/helpers/inbound/public/index.html +10 -0
  63. data/lib/sendgrid/helpers/inbound/sample_data/default_data.txt +58 -0
  64. data/lib/sendgrid/helpers/inbound/sample_data/raw_data.txt +57 -0
  65. data/lib/sendgrid/helpers/inbound/sample_data/raw_data_with_attachments.txt +298 -0
  66. data/lib/sendgrid/helpers/inbound/send.rb +26 -0
  67. data/lib/sendgrid/helpers/ip_management/ip_management.rb +17 -0
  68. data/lib/sendgrid/helpers/mail/README.md +14 -0
  69. data/lib/sendgrid/helpers/mail/asm.rb +19 -0
  70. data/lib/sendgrid/helpers/mail/attachment.rb +55 -0
  71. data/lib/sendgrid/helpers/mail/bcc_settings.rb +19 -0
  72. data/lib/sendgrid/helpers/mail/bypass_list_management.rb +31 -0
  73. data/lib/sendgrid/helpers/mail/category.rb +18 -0
  74. data/lib/sendgrid/helpers/mail/click_tracking.rb +19 -0
  75. data/lib/sendgrid/helpers/mail/content.rb +19 -0
  76. data/lib/sendgrid/helpers/mail/custom_arg.rb +18 -0
  77. data/lib/sendgrid/helpers/mail/email.rb +32 -0
  78. data/lib/sendgrid/helpers/mail/footer.rb +21 -0
  79. data/lib/sendgrid/helpers/mail/ganalytics.rb +28 -0
  80. data/lib/sendgrid/helpers/mail/header.rb +18 -0
  81. data/lib/sendgrid/helpers/mail/mail.rb +122 -0
  82. data/lib/sendgrid/helpers/mail/mail_settings.rb +45 -0
  83. data/lib/sendgrid/helpers/mail/open_tracking.rb +19 -0
  84. data/lib/sendgrid/helpers/mail/personalization.rb +93 -0
  85. data/lib/sendgrid/helpers/mail/section.rb +18 -0
  86. data/lib/sendgrid/helpers/mail/spam_check.rb +21 -0
  87. data/lib/sendgrid/helpers/mail/subscription_tracking.rb +23 -0
  88. data/lib/sendgrid/helpers/mail/substitution.rb +18 -0
  89. data/lib/sendgrid/helpers/mail/tracking_settings.rb +39 -0
  90. data/lib/sendgrid/helpers/permissions/scope.rb +28 -0
  91. data/lib/sendgrid/helpers/permissions/scopes.yml +309 -0
  92. data/lib/sendgrid/helpers/settings/README.md +14 -0
  93. data/lib/sendgrid/helpers/settings/mail_settings_dto.rb +13 -0
  94. data/lib/sendgrid/helpers/settings/partner_settings_dto.rb +13 -0
  95. data/lib/sendgrid/helpers/settings/settings.rb +28 -0
  96. data/lib/sendgrid/helpers/settings/tracking_settings_dto.rb +22 -0
  97. data/lib/sendgrid/helpers/settings/user_settings_dto.rb +13 -0
  98. data/lib/sendgrid/helpers/stats/email_stats.rb +46 -0
  99. data/lib/sendgrid/helpers/stats/metrics.rb +33 -0
  100. data/lib/sendgrid/helpers/stats/stats_response.rb +29 -0
  101. data/lib/sendgrid/sendgrid.rb +21 -0
  102. data/lib/sendgrid/twilio_email.rb +21 -0
  103. data/lib/sendgrid/version.rb +1 -1
  104. data/lib/sendgrid-ruby.rb +32 -7
  105. data/mail_helper_v3.md +390 -0
  106. data/sendgrid-ruby.gemspec +16 -20
  107. data/spec/fixtures/event_webhook.rb +22 -0
  108. data/spec/rack/sendgrid_webhook_verification_spec.rb +142 -0
  109. data/spec/sendgrid/helpers/eventwebhook/eventwebhook_spec.rb +105 -0
  110. data/spec/sendgrid/helpers/ip_management/ip_management_spec.rb +12 -0
  111. data/spec/sendgrid/helpers/settings/mail_settings_dto_spec.rb +32 -0
  112. data/spec/sendgrid/helpers/settings/partner_settings_dto_spec.rb +24 -0
  113. data/spec/sendgrid/helpers/settings/settings_spec.rb +25 -0
  114. data/spec/sendgrid/helpers/settings/tracking_settings_dto_spec.rb +27 -0
  115. data/spec/sendgrid/helpers/settings/user_settings_dto_spec.rb +24 -0
  116. data/spec/sendgrid/helpers/stats/email_stats_spec.rb +111 -0
  117. data/spec/sendgrid/helpers/stats/metrics_spec.rb +45 -0
  118. data/spec/sendgrid/helpers/stats/stats_response_spec.rb +75 -0
  119. data/spec/sendgrid/sendgrid_spec.rb +11 -0
  120. data/spec/sendgrid/twilio_email_spec.rb +11 -0
  121. data/spec/spec_helper.rb +12 -1
  122. data/static/img/github-fork.png +0 -0
  123. data/static/img/github-sign-up.png +0 -0
  124. data/test/sendgrid/helpers/mail/test_attachment.rb +33 -0
  125. data/test/sendgrid/helpers/mail/test_category.rb +25 -0
  126. data/test/sendgrid/helpers/mail/test_email.rb +41 -0
  127. data/test/sendgrid/helpers/mail/test_mail.rb +260 -0
  128. data/test/sendgrid/helpers/mail/test_personalizations.rb +214 -0
  129. data/test/sendgrid/permissions/test_scopes.rb +36 -0
  130. data/test/sendgrid/test_sendgrid-ruby.rb +2729 -0
  131. data/twilio_sendgrid_logo.png +0 -0
  132. data/use-cases/README.md +17 -0
  133. data/use-cases/domain-authentication.md +5 -0
  134. data/use-cases/email-statistics.md +52 -0
  135. data/use-cases/legacy-templates.md +98 -0
  136. data/use-cases/personalizations.md +34 -0
  137. data/use-cases/sms.md +39 -0
  138. data/use-cases/transactional-templates.md +111 -0
  139. data/use-cases/twilio-email.md +13 -0
  140. data/use-cases/twilio-setup.md +54 -0
  141. metadata +187 -112
  142. data/.rspec +0 -2
  143. data/.travis.yml +0 -20
  144. data/FETCH_HEAD +0 -0
  145. data/Guardfile +0 -10
  146. data/LICENSE.txt +0 -22
  147. data/example.rb +0 -41
  148. data/lib/sendgrid/client.rb +0 -62
  149. data/lib/sendgrid/exceptions.rb +0 -7
  150. data/lib/sendgrid/mail.rb +0 -182
  151. data/lib/sendgrid/recipient.rb +0 -29
  152. data/lib/sendgrid/response.rb +0 -14
  153. data/lib/sendgrid/template.rb +0 -26
  154. data/lib/sendgrid/template_mailer.rb +0 -59
  155. data/spec/lib/sendgrid/client_spec.rb +0 -87
  156. data/spec/lib/sendgrid/mail_spec.rb +0 -151
  157. data/spec/lib/sendgrid/recipient_spec.rb +0 -91
  158. data/spec/lib/sendgrid/template_mailer_spec.rb +0 -86
  159. data/spec/lib/sendgrid/template_spec.rb +0 -61
  160. data/spec/lib/sendgrid_spec.rb +0 -7
data/config.ru ADDED
@@ -0,0 +1,4 @@
1
+ require './lib/sendgrid/helpers/inbound/app'
2
+
3
+ use Rack::Reloader, 0
4
+ run Main
@@ -0,0 +1,80 @@
1
+ require 'sendgrid-ruby'
2
+
3
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
4
+
5
+ ##################################################
6
+ # Retrieve all recent access attempts #
7
+ # GET /access_settings/activity #
8
+
9
+ params = JSON.parse('{"limit": 1}')
10
+ response = sg.client.access_settings.activity.get(query_params: params)
11
+ puts response.status_code
12
+ puts response.body
13
+ puts response.headers
14
+
15
+ ##################################################
16
+ # Add one or more IPs to the whitelist #
17
+ # POST /access_settings/whitelist #
18
+
19
+ data = JSON.parse('{
20
+ "ips": [
21
+ {
22
+ "ip": "192.168.1.1"
23
+ },
24
+ {
25
+ "ip": "192.*.*.*"
26
+ },
27
+ {
28
+ "ip": "192.168.1.3/32"
29
+ }
30
+ ]
31
+ }')
32
+ response = sg.client.access_settings.whitelist.post(request_body: data)
33
+ puts response.status_code
34
+ puts response.body
35
+ puts response.headers
36
+
37
+ ##################################################
38
+ # Retrieve a list of currently whitelisted IPs #
39
+ # GET /access_settings/whitelist #
40
+
41
+ response = sg.client.access_settings.whitelist.get
42
+ puts response.status_code
43
+ puts response.body
44
+ puts response.headers
45
+
46
+ ##################################################
47
+ # Remove one or more IPs from the whitelist #
48
+ # DELETE /access_settings/whitelist #
49
+
50
+ data = JSON.parse('{
51
+ "ids": [
52
+ 1,
53
+ 2,
54
+ 3
55
+ ]
56
+ }')
57
+ response = sg.client.access_settings.whitelist.delete(request_body: data)
58
+ puts response.status_code
59
+ puts response.body
60
+ puts response.headers
61
+
62
+ ##################################################
63
+ # Retrieve a specific whitelisted IP #
64
+ # GET /access_settings/whitelist/{rule_id} #
65
+
66
+ rule_id = 'test_url_param'
67
+ response = sg.client.access_settings.whitelist._(rule_id).get
68
+ puts response.status_code
69
+ puts response.body
70
+ puts response.headers
71
+
72
+ ##################################################
73
+ # Remove a specific IP from the whitelist #
74
+ # DELETE /access_settings/whitelist/{rule_id} #
75
+
76
+ rule_id = 'test_url_param'
77
+ response = sg.client.access_settings.whitelist._(rule_id).delete
78
+ puts response.status_code
79
+ puts response.body
80
+ puts response.headers
@@ -0,0 +1,59 @@
1
+ require 'sendgrid-ruby'
2
+
3
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
4
+
5
+ ##################################################
6
+ # Create a new Alert #
7
+ # POST /alerts #
8
+
9
+ data = JSON.parse('{
10
+ "email_to": "example@example.com",
11
+ "frequency": "daily",
12
+ "type": "stats_notification"
13
+ }')
14
+ response = sg.client.alerts.post(request_body: data)
15
+ puts response.status_code
16
+ puts response.body
17
+ puts response.headers
18
+
19
+ ##################################################
20
+ # Retrieve all alerts #
21
+ # GET /alerts #
22
+
23
+ response = sg.client.alerts.get
24
+ puts response.status_code
25
+ puts response.body
26
+ puts response.headers
27
+
28
+ ##################################################
29
+ # Update an alert #
30
+ # PATCH /alerts/{alert_id} #
31
+
32
+ data = JSON.parse('{
33
+ "email_to": "example@example.com"
34
+ }')
35
+ alert_id = 'test_url_param'
36
+ response = sg.client.alerts._(alert_id).patch(request_body: data)
37
+ puts response.status_code
38
+ puts response.body
39
+ puts response.headers
40
+
41
+ ##################################################
42
+ # Retrieve a specific alert #
43
+ # GET /alerts/{alert_id} #
44
+
45
+ alert_id = 'test_url_param'
46
+ response = sg.client.alerts._(alert_id).get
47
+ puts response.status_code
48
+ puts response.body
49
+ puts response.headers
50
+
51
+ ##################################################
52
+ # Delete an alert #
53
+ # DELETE /alerts/{alert_id} #
54
+
55
+ alert_id = 'test_url_param'
56
+ response = sg.client.alerts._(alert_id).delete
57
+ puts response.status_code
58
+ puts response.body
59
+ puts response.headers
@@ -0,0 +1,81 @@
1
+ require 'sendgrid-ruby'
2
+
3
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
4
+
5
+ ##################################################
6
+ # Create API keys #
7
+ # POST /api_keys #
8
+
9
+ data = JSON.parse('{
10
+ "name": "My API Key",
11
+ "sample": "data",
12
+ "scopes": [
13
+ "mail.send",
14
+ "alerts.create",
15
+ "alerts.read"
16
+ ]
17
+ }')
18
+ response = sg.client.api_keys.post(request_body: data)
19
+ puts response.status_code
20
+ puts response.body
21
+ puts response.headers
22
+
23
+ ##################################################
24
+ # Retrieve all API Keys belonging to the authenticated user #
25
+ # GET /api_keys #
26
+
27
+ params = JSON.parse('{"limit": 1}')
28
+ response = sg.client.api_keys.get(query_params: params)
29
+ puts response.status_code
30
+ puts response.body
31
+ puts response.headers
32
+
33
+ ##################################################
34
+ # Update the name & scopes of an API Key #
35
+ # PUT /api_keys/{api_key_id} #
36
+
37
+ data = JSON.parse('{
38
+ "name": "A New Hope",
39
+ "scopes": [
40
+ "user.profile.read",
41
+ "user.profile.update"
42
+ ]
43
+ }')
44
+ api_key_id = 'test_url_param'
45
+ response = sg.client.api_keys._(api_key_id).put(request_body: data)
46
+ puts response.status_code
47
+ puts response.body
48
+ puts response.headers
49
+
50
+ ##################################################
51
+ # Update API keys #
52
+ # PATCH /api_keys/{api_key_id} #
53
+
54
+ data = JSON.parse('{
55
+ "name": "A New Hope"
56
+ }')
57
+ api_key_id = 'test_url_param'
58
+ response = sg.client.api_keys._(api_key_id).patch(request_body: data)
59
+ puts response.status_code
60
+ puts response.body
61
+ puts response.headers
62
+
63
+ ##################################################
64
+ # Retrieve an existing API Key #
65
+ # GET /api_keys/{api_key_id} #
66
+
67
+ api_key_id = 'test_url_param'
68
+ response = sg.client.api_keys._(api_key_id).get
69
+ puts response.status_code
70
+ puts response.body
71
+ puts response.headers
72
+
73
+ ##################################################
74
+ # Delete API keys #
75
+ # DELETE /api_keys/{api_key_id} #
76
+
77
+ api_key_id = 'test_url_param'
78
+ response = sg.client.api_keys._(api_key_id).delete
79
+ puts response.status_code
80
+ puts response.body
81
+ puts response.headers
@@ -0,0 +1,170 @@
1
+ require 'sendgrid-ruby'
2
+
3
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
4
+
5
+ ##################################################
6
+ # Create a new suppression group #
7
+ # POST /asm/groups #
8
+
9
+ data = JSON.parse('{
10
+ "description": "Suggestions for products our users might like.",
11
+ "is_default": true,
12
+ "name": "Product Suggestions"
13
+ }')
14
+ response = sg.client.asm.groups.post(request_body: data)
15
+ puts response.status_code
16
+ puts response.body
17
+ puts response.headers
18
+
19
+ ##################################################
20
+ # Retrieve information about multiple suppression groups #
21
+ # GET /asm/groups #
22
+
23
+ params = JSON.parse('{"id": 1}')
24
+ response = sg.client.asm.groups.get(query_params: params)
25
+ puts response.status_code
26
+ puts response.body
27
+ puts response.headers
28
+
29
+ ##################################################
30
+ # Update a suppression group. #
31
+ # PATCH /asm/groups/{group_id} #
32
+
33
+ data = JSON.parse('{
34
+ "description": "Suggestions for items our users might like.",
35
+ "id": 103,
36
+ "name": "Item Suggestions"
37
+ }')
38
+ group_id = 'test_url_param'
39
+ response = sg.client.asm.groups._(group_id).patch(request_body: data)
40
+ puts response.status_code
41
+ puts response.body
42
+ puts response.headers
43
+
44
+ ##################################################
45
+ # Get information on a single suppression group. #
46
+ # GET /asm/groups/{group_id} #
47
+
48
+ group_id = 'test_url_param'
49
+ response = sg.client.asm.groups._(group_id).get
50
+ puts response.status_code
51
+ puts response.body
52
+ puts response.headers
53
+
54
+ ##################################################
55
+ # Delete a suppression group. #
56
+ # DELETE /asm/groups/{group_id} #
57
+
58
+ group_id = 'test_url_param'
59
+ response = sg.client.asm.groups._(group_id).delete
60
+ puts response.status_code
61
+ puts response.body
62
+ puts response.headers
63
+
64
+ ##################################################
65
+ # Add suppressions to a suppression group #
66
+ # POST /asm/groups/{group_id}/suppressions #
67
+
68
+ data = JSON.parse('{
69
+ "recipient_emails": [
70
+ "test1@example.com",
71
+ "test2@example.com"
72
+ ]
73
+ }')
74
+ group_id = 'test_url_param'
75
+ response = sg.client.asm.groups._(group_id).suppressions.post(request_body: data)
76
+ puts response.status_code
77
+ puts response.body
78
+ puts response.headers
79
+
80
+ ##################################################
81
+ # Retrieve all suppressions for a suppression group #
82
+ # GET /asm/groups/{group_id}/suppressions #
83
+
84
+ group_id = 'test_url_param'
85
+ response = sg.client.asm.groups._(group_id).suppressions.get
86
+ puts response.status_code
87
+ puts response.body
88
+ puts response.headers
89
+
90
+ ##################################################
91
+ # Search for suppressions within a group #
92
+ # POST /asm/groups/{group_id}/suppressions/search #
93
+
94
+ data = JSON.parse('{
95
+ "recipient_emails": [
96
+ "exists1@example.com",
97
+ "exists2@example.com",
98
+ "doesnotexists@example.com"
99
+ ]
100
+ }')
101
+ group_id = 'test_url_param'
102
+ response = sg.client.asm.groups._(group_id).suppressions.search.post(request_body: data)
103
+ puts response.status_code
104
+ puts response.body
105
+ puts response.headers
106
+
107
+ ##################################################
108
+ # Delete a suppression from a suppression group #
109
+ # DELETE /asm/groups/{group_id}/suppressions/{email} #
110
+
111
+ group_id = 'test_url_param'
112
+ email = 'test_url_param'
113
+ response = sg.client.asm.groups._(group_id).suppressions._(email).delete
114
+ puts response.status_code
115
+ puts response.body
116
+ puts response.headers
117
+
118
+ ##################################################
119
+ # Retrieve all suppressions #
120
+ # GET /asm/suppressions #
121
+
122
+ response = sg.client.asm.suppressions.get
123
+ puts response.status_code
124
+ puts response.body
125
+ puts response.headers
126
+
127
+ ##################################################
128
+ # Add recipient addresses to the global suppression group. #
129
+ # POST /asm/suppressions/global #
130
+
131
+ data = JSON.parse('{
132
+ "recipient_emails": [
133
+ "test1@example.com",
134
+ "test2@example.com"
135
+ ]
136
+ }')
137
+ response = sg.client.asm.suppressions.global.post(request_body: data)
138
+ puts response.status_code
139
+ puts response.body
140
+ puts response.headers
141
+
142
+ ##################################################
143
+ # Retrieve a Global Suppression #
144
+ # GET /asm/suppressions/global/{email} #
145
+
146
+ email = 'test_url_param'
147
+ response = sg.client.asm.suppressions.global._(email).get
148
+ puts response.status_code
149
+ puts response.body
150
+ puts response.headers
151
+
152
+ ##################################################
153
+ # Delete a Global Suppression #
154
+ # DELETE /asm/suppressions/global/{email} #
155
+
156
+ email = 'test_url_param'
157
+ response = sg.client.asm.suppressions.global._(email).delete
158
+ puts response.status_code
159
+ puts response.body
160
+ puts response.headers
161
+
162
+ ##################################################
163
+ # Retrieve all suppression groups for an email address #
164
+ # GET /asm/suppressions/{email} #
165
+
166
+ email = 'test_url_param'
167
+ response = sg.client.asm.suppressions._(email).get
168
+ puts response.status_code
169
+ puts response.body
170
+ puts response.headers
@@ -0,0 +1,13 @@
1
+ require 'sendgrid-ruby'
2
+
3
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
4
+
5
+ ##################################################
6
+ # Retrieve email statistics by browser. #
7
+ # GET /browsers/stats #
8
+
9
+ params = JSON.parse('{"end_date": "2016-04-01", "aggregated_by": "day", "browsers": "test_string", "limit": "test_string", "offset": "test_string", "start_date": "2016-01-01"}')
10
+ response = sg.client.browsers.stats.get(query_params: params)
11
+ puts response.status_code
12
+ puts response.body
13
+ puts response.headers
@@ -0,0 +1,150 @@
1
+ require 'sendgrid-ruby'
2
+
3
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
4
+
5
+ ##################################################
6
+ # Create a Campaign #
7
+ # POST /campaigns #
8
+
9
+ data = JSON.parse('{
10
+ "categories": [
11
+ "spring line"
12
+ ],
13
+ "custom_unsubscribe_url": "",
14
+ "html_content": "<html><head><title></title></head><body><p>Check out our spring line!</p></body></html>",
15
+ "ip_pool": "marketing",
16
+ "list_ids": [
17
+ 110,
18
+ 124
19
+ ],
20
+ "plain_content": "Check out our spring line!",
21
+ "segment_ids": [
22
+ 110
23
+ ],
24
+ "sender_id": 124451,
25
+ "subject": "New Products for Spring!",
26
+ "suppression_group_id": 42,
27
+ "title": "March Newsletter"
28
+ }')
29
+ response = sg.client.campaigns.post(request_body: data)
30
+ puts response.status_code
31
+ puts response.body
32
+ puts response.headers
33
+
34
+ ##################################################
35
+ # Retrieve all Campaigns #
36
+ # GET /campaigns #
37
+
38
+ params = JSON.parse('{"limit": 1, "offset": 1}')
39
+ response = sg.client.campaigns.get(query_params: params)
40
+ puts response.status_code
41
+ puts response.body
42
+ puts response.headers
43
+
44
+ ##################################################
45
+ # Update a Campaign #
46
+ # PATCH /campaigns/{campaign_id} #
47
+
48
+ data = JSON.parse('{
49
+ "categories": [
50
+ "summer line"
51
+ ],
52
+ "html_content": "<html><head><title></title></head><body><p>Check out our summer line!</p></body></html>",
53
+ "plain_content": "Check out our summer line!",
54
+ "subject": "New Products for Summer!",
55
+ "title": "May Newsletter"
56
+ }')
57
+ campaign_id = 'test_url_param'
58
+ response = sg.client.campaigns._(campaign_id).patch(request_body: data)
59
+ puts response.status_code
60
+ puts response.body
61
+ puts response.headers
62
+
63
+ ##################################################
64
+ # Retrieve a single campaign #
65
+ # GET /campaigns/{campaign_id} #
66
+
67
+ campaign_id = 'test_url_param'
68
+ response = sg.client.campaigns._(campaign_id).get
69
+ puts response.status_code
70
+ puts response.body
71
+ puts response.headers
72
+
73
+ ##################################################
74
+ # Delete a Campaign #
75
+ # DELETE /campaigns/{campaign_id} #
76
+
77
+ campaign_id = 'test_url_param'
78
+ response = sg.client.campaigns._(campaign_id).delete
79
+ puts response.status_code
80
+ puts response.body
81
+ puts response.headers
82
+
83
+ ##################################################
84
+ # Update a Scheduled Campaign #
85
+ # PATCH /campaigns/{campaign_id}/schedules #
86
+
87
+ data = JSON.parse('{
88
+ "send_at": 1489451436
89
+ }')
90
+ campaign_id = 'test_url_param'
91
+ response = sg.client.campaigns._(campaign_id).schedules.patch(request_body: data)
92
+ puts response.status_code
93
+ puts response.body
94
+ puts response.headers
95
+
96
+ ##################################################
97
+ # Schedule a Campaign #
98
+ # POST /campaigns/{campaign_id}/schedules #
99
+
100
+ data = JSON.parse('{
101
+ "send_at": 1489771528
102
+ }')
103
+ campaign_id = 'test_url_param'
104
+ response = sg.client.campaigns._(campaign_id).schedules.post(request_body: data)
105
+ puts response.status_code
106
+ puts response.body
107
+ puts response.headers
108
+
109
+ ##################################################
110
+ # View Scheduled Time of a Campaign #
111
+ # GET /campaigns/{campaign_id}/schedules #
112
+
113
+ campaign_id = 'test_url_param'
114
+ response = sg.client.campaigns._(campaign_id).schedules.get
115
+ puts response.status_code
116
+ puts response.body
117
+ puts response.headers
118
+
119
+ ##################################################
120
+ # Unschedule a Scheduled Campaign #
121
+ # DELETE /campaigns/{campaign_id}/schedules #
122
+
123
+ campaign_id = 'test_url_param'
124
+ response = sg.client.campaigns._(campaign_id).schedules.delete
125
+ puts response.status_code
126
+ puts response.body
127
+ puts response.headers
128
+
129
+ ##################################################
130
+ # Send a Campaign #
131
+ # POST /campaigns/{campaign_id}/schedules/now #
132
+
133
+ campaign_id = 'test_url_param'
134
+ response = sg.client.campaigns._(campaign_id).schedules.now.post
135
+ puts response.status_code
136
+ puts response.body
137
+ puts response.headers
138
+
139
+ ##################################################
140
+ # Send a Test Campaign #
141
+ # POST /campaigns/{campaign_id}/schedules/test #
142
+
143
+ data = JSON.parse('{
144
+ "to": "your.email@example.com"
145
+ }')
146
+ campaign_id = 'test_url_param'
147
+ response = sg.client.campaigns._(campaign_id).schedules.test.post(request_body: data)
148
+ puts response.status_code
149
+ puts response.body
150
+ puts response.headers
@@ -0,0 +1,33 @@
1
+ require 'sendgrid-ruby'
2
+
3
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
4
+
5
+ ##################################################
6
+ # Retrieve all categories #
7
+ # GET /categories #
8
+
9
+ params = JSON.parse('{"category": "test_string", "limit": 1, "offset": 1}')
10
+ response = sg.client.categories.get(query_params: params)
11
+ puts response.status_code
12
+ puts response.body
13
+ puts response.headers
14
+
15
+ ##################################################
16
+ # Retrieve Email Statistics for Categories #
17
+ # GET /categories/stats #
18
+
19
+ params = JSON.parse('{"end_date": "2016-04-01", "aggregated_by": "day", "limit": 1, "offset": 1, "start_date": "2016-01-01", "categories": "test_string"}')
20
+ response = sg.client.categories.stats.get(query_params: params)
21
+ puts response.status_code
22
+ puts response.body
23
+ puts response.headers
24
+
25
+ ##################################################
26
+ # Retrieve sums of email stats for each category [Needs: Stats object defined, has category ID?] #
27
+ # GET /categories/stats/sums #
28
+
29
+ params = JSON.parse('{"end_date": "2016-04-01", "aggregated_by": "day", "limit": 1, "sort_by_metric": "test_string", "offset": 1, "start_date": "2016-01-01", "sort_by_direction": "asc"}')
30
+ response = sg.client.categories.stats.sums.get(query_params: params)
31
+ puts response.status_code
32
+ puts response.body
33
+ puts response.headers
@@ -0,0 +1,24 @@
1
+ require 'sendgrid-ruby'
2
+
3
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
4
+
5
+ ##################################################
6
+ # Retrieve email statistics by client type. #
7
+ # GET /clients/stats #
8
+
9
+ params = JSON.parse('{"aggregated_by": "day", "start_date": "2016-01-01", "end_date": "2016-04-01"}')
10
+ response = sg.client.clients.stats.get(query_params: params)
11
+ puts response.status_code
12
+ puts response.body
13
+ puts response.headers
14
+
15
+ ##################################################
16
+ # Retrieve stats by a specific client type. #
17
+ # GET /clients/{client_type}/stats #
18
+
19
+ params = JSON.parse('{"aggregated_by": "day", "start_date": "2016-01-01", "end_date": "2016-04-01"}')
20
+ client_type = 'test_url_param'
21
+ response = sg.client.clients._(client_type).stats.get(query_params: params)
22
+ puts response.status_code
23
+ puts response.body
24
+ puts response.headers