sendgrid-ruby 1.1.6 → 6.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. checksums.yaml +5 -5
  2. data/.codeclimate.yml +21 -0
  3. data/.env_sample +1 -3
  4. data/.gitignore +1 -0
  5. data/.travis.yml +28 -17
  6. data/CHANGELOG.md +231 -1
  7. data/CODE_OF_CONDUCT.md +73 -0
  8. data/CONTRIBUTING.md +214 -0
  9. data/Gemfile +5 -4
  10. data/ISSUE_TEMPLATE.md +26 -0
  11. data/LICENSE.md +21 -0
  12. data/Makefile +7 -0
  13. data/PULL_REQUEST_TEMPLATE.md +31 -0
  14. data/README.md +161 -225
  15. data/Rakefile +9 -2
  16. data/TROUBLESHOOTING.md +137 -0
  17. data/UPGRADE.md +5 -0
  18. data/USAGE.md +5037 -0
  19. data/USE_CASES.md +377 -0
  20. data/config.ru +4 -0
  21. data/docker/Dockerfile +12 -0
  22. data/docker/README.md +30 -0
  23. data/examples/accesssettings/accesssettings.rb +83 -0
  24. data/examples/alerts/alerts.rb +62 -0
  25. data/examples/apikeys/apikeys.rb +84 -0
  26. data/examples/asm/asm.rb +173 -0
  27. data/examples/browsers/browsers.rb +16 -0
  28. data/examples/campaigns/campaigns.rb +153 -0
  29. data/examples/categories/categories.rb +36 -0
  30. data/examples/clients/clients.rb +27 -0
  31. data/examples/contactdb/contactdb.rb +395 -0
  32. data/examples/devices/devices.rb +16 -0
  33. data/examples/geo/geo.rb +16 -0
  34. data/examples/helpers/mail/example.rb +147 -0
  35. data/examples/helpers/settings/example.rb +23 -0
  36. data/examples/helpers/stats/example.rb +42 -0
  37. data/examples/ips/ips.rb +167 -0
  38. data/examples/mail/mail.rb +173 -0
  39. data/examples/mailboxproviders/mailboxproviders.rb +16 -0
  40. data/examples/mailsettings/mailsettings.rb +219 -0
  41. data/examples/partnersettings/partnersettings.rb +39 -0
  42. data/examples/scopes/scopes.rb +61 -0
  43. data/examples/senderauthentication/senderauthentication.rb +310 -0
  44. data/examples/senders/senders.rb +98 -0
  45. data/examples/stats/stats.rb +16 -0
  46. data/examples/subusers/subusers.rb +169 -0
  47. data/examples/suppression/suppression.rb +201 -0
  48. data/examples/templates/templates.rb +129 -0
  49. data/examples/trackingsettings/trackingsettings.rb +110 -0
  50. data/examples/user/user.rb +293 -0
  51. data/gemfiles/Sinatra_1.gemfile +6 -0
  52. data/gemfiles/Sinatra_2.gemfile +6 -0
  53. data/lib/sendgrid/client.rb +33 -57
  54. data/lib/sendgrid/helpers/inbound/README.md +98 -0
  55. data/lib/sendgrid/helpers/inbound/app.rb +32 -0
  56. data/lib/sendgrid/helpers/inbound/config.yml +26 -0
  57. data/lib/sendgrid/helpers/inbound/public/index.html +10 -0
  58. data/lib/sendgrid/helpers/inbound/sample_data/default_data.txt +58 -0
  59. data/lib/sendgrid/helpers/inbound/sample_data/raw_data.txt +57 -0
  60. data/lib/sendgrid/helpers/inbound/sample_data/raw_data_with_attachments.txt +298 -0
  61. data/lib/sendgrid/helpers/inbound/send.rb +26 -0
  62. data/lib/sendgrid/helpers/ip_management/ip_management.rb +17 -0
  63. data/lib/sendgrid/helpers/mail/README.md +14 -0
  64. data/lib/sendgrid/helpers/mail/asm.rb +33 -0
  65. data/lib/sendgrid/helpers/mail/attachment.rb +86 -0
  66. data/lib/sendgrid/helpers/mail/bcc_settings.rb +33 -0
  67. data/lib/sendgrid/helpers/mail/bypass_list_management.rb +43 -0
  68. data/lib/sendgrid/helpers/mail/category.rb +20 -0
  69. data/lib/sendgrid/helpers/mail/click_tracking.rb +33 -0
  70. data/lib/sendgrid/helpers/mail/content.rb +20 -0
  71. data/lib/sendgrid/helpers/mail/custom_arg.rb +24 -0
  72. data/lib/sendgrid/helpers/mail/email.rb +29 -0
  73. data/lib/sendgrid/helpers/mail/footer.rb +43 -0
  74. data/lib/sendgrid/helpers/mail/ganalytics.rb +74 -0
  75. data/lib/sendgrid/helpers/mail/header.rb +24 -0
  76. data/lib/sendgrid/helpers/mail/mail.rb +140 -0
  77. data/lib/sendgrid/helpers/mail/mail_settings.rb +63 -0
  78. data/lib/sendgrid/helpers/mail/open_tracking.rb +33 -0
  79. data/lib/sendgrid/helpers/mail/personalization.rb +82 -0
  80. data/lib/sendgrid/helpers/mail/section.rb +24 -0
  81. data/lib/sendgrid/helpers/mail/spam_check.rb +43 -0
  82. data/lib/sendgrid/helpers/mail/subscription_tracking.rb +53 -0
  83. data/lib/sendgrid/helpers/mail/substitution.rb +24 -0
  84. data/lib/sendgrid/helpers/mail/tracking_settings.rb +53 -0
  85. data/lib/sendgrid/helpers/permissions/scope.rb +28 -0
  86. data/lib/sendgrid/helpers/permissions/scopes.yml +309 -0
  87. data/lib/sendgrid/helpers/settings/README.md +14 -0
  88. data/lib/sendgrid/helpers/settings/mail_settings_dto.rb +13 -0
  89. data/lib/sendgrid/helpers/settings/partner_settings_dto.rb +13 -0
  90. data/lib/sendgrid/helpers/settings/settings.rb +28 -0
  91. data/lib/sendgrid/helpers/settings/tracking_settings_dto.rb +24 -0
  92. data/lib/sendgrid/helpers/settings/user_settings_dto.rb +13 -0
  93. data/lib/sendgrid/helpers/stats/email_stats.rb +46 -0
  94. data/lib/sendgrid/helpers/stats/metrics.rb +35 -0
  95. data/lib/sendgrid/helpers/stats/stats_response.rb +31 -0
  96. data/lib/sendgrid/version.rb +1 -1
  97. data/lib/sendgrid-ruby.rb +27 -6
  98. data/mail_helper_v3.md +390 -0
  99. data/sendgrid-ruby.gemspec +13 -17
  100. data/spec/sendgrid/helpers/ip_management/ip_management_spec.rb +12 -0
  101. data/spec/sendgrid/helpers/settings/mail_settings_dto_spec.rb +32 -0
  102. data/spec/sendgrid/helpers/settings/partner_settings_dto_spec.rb +24 -0
  103. data/spec/sendgrid/helpers/settings/settings_spec.rb +25 -0
  104. data/spec/sendgrid/helpers/settings/tracking_settings_dto_spec.rb +27 -0
  105. data/spec/sendgrid/helpers/settings/user_settings_dto_spec.rb +24 -0
  106. data/spec/sendgrid/helpers/stats/email_stats_spec.rb +112 -0
  107. data/spec/sendgrid/helpers/stats/metrics_spec.rb +46 -0
  108. data/spec/sendgrid/helpers/stats/stats_response_spec.rb +76 -0
  109. data/spec/spec_helper.rb +10 -1
  110. data/test/prism.sh +42 -0
  111. data/test/sendgrid/helpers/mail/test_attachment.rb +35 -0
  112. data/test/sendgrid/helpers/mail/test_category.rb +27 -0
  113. data/test/sendgrid/helpers/mail/test_email.rb +34 -0
  114. data/test/sendgrid/helpers/mail/test_mail.rb +261 -0
  115. data/test/sendgrid/helpers/mail/test_personalizations.rb +161 -0
  116. data/test/sendgrid/permissions/test_scopes.rb +38 -0
  117. data/test/sendgrid/test_sendgrid-ruby.rb +2751 -0
  118. metadata +149 -115
  119. data/.rspec +0 -2
  120. data/.rubocop.yml +0 -30
  121. data/FETCH_HEAD +0 -0
  122. data/Guardfile +0 -10
  123. data/LICENSE.txt +0 -22
  124. data/example.rb +0 -41
  125. data/lib/sendgrid/exceptions.rb +0 -7
  126. data/lib/sendgrid/mail.rb +0 -182
  127. data/lib/sendgrid/recipient.rb +0 -29
  128. data/lib/sendgrid/response.rb +0 -14
  129. data/lib/sendgrid/template.rb +0 -26
  130. data/lib/sendgrid/template_mailer.rb +0 -59
  131. data/spec/lib/sendgrid/client_spec.rb +0 -87
  132. data/spec/lib/sendgrid/mail_spec.rb +0 -151
  133. data/spec/lib/sendgrid/recipient_spec.rb +0 -91
  134. data/spec/lib/sendgrid/template_mailer_spec.rb +0 -86
  135. data/spec/lib/sendgrid/template_spec.rb +0 -61
  136. data/spec/lib/sendgrid_spec.rb +0 -7
@@ -0,0 +1,201 @@
1
+ require 'sendgrid-ruby'
2
+
3
+
4
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
5
+
6
+
7
+ ##################################################
8
+ # Retrieve all blocks #
9
+ # GET /suppression/blocks #
10
+
11
+ params = JSON.parse('{"start_time": 1, "limit": 1, "end_time": 1, "offset": 1}')
12
+ response = sg.client.suppression.blocks.get(query_params: params)
13
+ puts response.status_code
14
+ puts response.body
15
+ puts response.headers
16
+
17
+ ##################################################
18
+ # Delete blocks #
19
+ # DELETE /suppression/blocks #
20
+
21
+ data = JSON.parse('{
22
+ "delete_all": false,
23
+ "emails": [
24
+ "example1@example.com",
25
+ "example2@example.com"
26
+ ]
27
+ }')
28
+ response = sg.client.suppression.blocks.delete(request_body: data)
29
+ puts response.status_code
30
+ puts response.body
31
+ puts response.headers
32
+
33
+ ##################################################
34
+ # Retrieve a specific block #
35
+ # GET /suppression/blocks/{email} #
36
+
37
+ email = "test_url_param"
38
+ response = sg.client.suppression.blocks._(email).get()
39
+ puts response.status_code
40
+ puts response.body
41
+ puts response.headers
42
+
43
+ ##################################################
44
+ # Delete a specific block #
45
+ # DELETE /suppression/blocks/{email} #
46
+
47
+ email = "test_url_param"
48
+ response = sg.client.suppression.blocks._(email).delete()
49
+ puts response.status_code
50
+ puts response.body
51
+ puts response.headers
52
+
53
+ ##################################################
54
+ # Retrieve all bounces #
55
+ # GET /suppression/bounces #
56
+
57
+ params = JSON.parse('{"start_time": 1, "end_time": 1}')
58
+ response = sg.client.suppression.bounces.get(query_params: params)
59
+ puts response.status_code
60
+ puts response.body
61
+ puts response.headers
62
+
63
+ ##################################################
64
+ # Delete bounces #
65
+ # DELETE /suppression/bounces #
66
+
67
+ data = JSON.parse('{
68
+ "delete_all": true,
69
+ "emails": [
70
+ "example@example.com",
71
+ "example2@example.com"
72
+ ]
73
+ }')
74
+ response = sg.client.suppression.bounces.delete(request_body: data)
75
+ puts response.status_code
76
+ puts response.body
77
+ puts response.headers
78
+
79
+ ##################################################
80
+ # Retrieve a Bounce #
81
+ # GET /suppression/bounces/{email} #
82
+
83
+ email = "test_url_param"
84
+ response = sg.client.suppression.bounces._(email).get()
85
+ puts response.status_code
86
+ puts response.body
87
+ puts response.headers
88
+
89
+ ##################################################
90
+ # Delete a bounce #
91
+ # DELETE /suppression/bounces/{email} #
92
+
93
+ params = JSON.parse('{"email_address": "example@example.com"}')
94
+ email = "test_url_param"
95
+ response = sg.client.suppression.bounces._(email).delete(query_params: params)
96
+ puts response.status_code
97
+ puts response.body
98
+ puts response.headers
99
+
100
+ ##################################################
101
+ # Retrieve all invalid emails #
102
+ # GET /suppression/invalid_emails #
103
+
104
+ params = JSON.parse('{"start_time": 1, "limit": 1, "end_time": 1, "offset": 1}')
105
+ response = sg.client.suppression.invalid_emails.get(query_params: params)
106
+ puts response.status_code
107
+ puts response.body
108
+ puts response.headers
109
+
110
+ ##################################################
111
+ # Delete invalid emails #
112
+ # DELETE /suppression/invalid_emails #
113
+
114
+ data = JSON.parse('{
115
+ "delete_all": false,
116
+ "emails": [
117
+ "example1@example.com",
118
+ "example2@example.com"
119
+ ]
120
+ }')
121
+ response = sg.client.suppression.invalid_emails.delete(request_body: data)
122
+ puts response.status_code
123
+ puts response.body
124
+ puts response.headers
125
+
126
+ ##################################################
127
+ # Retrieve a specific invalid email #
128
+ # GET /suppression/invalid_emails/{email} #
129
+
130
+ email = "test_url_param"
131
+ response = sg.client.suppression.invalid_emails._(email).get()
132
+ puts response.status_code
133
+ puts response.body
134
+ puts response.headers
135
+
136
+ ##################################################
137
+ # Delete a specific invalid email #
138
+ # DELETE /suppression/invalid_emails/{email} #
139
+
140
+ email = "test_url_param"
141
+ response = sg.client.suppression.invalid_emails._(email).delete()
142
+ puts response.status_code
143
+ puts response.body
144
+ puts response.headers
145
+
146
+ ##################################################
147
+ # Retrieve a specific spam report #
148
+ # GET /suppression/spam_report/{email} #
149
+
150
+ email = "test_url_param"
151
+ response = sg.client.suppression.spam_reports._(email).get()
152
+ puts response.status_code
153
+ puts response.body
154
+ puts response.headers
155
+
156
+ ##################################################
157
+ # Delete a specific spam report #
158
+ # DELETE /suppression/spam_report/{email} #
159
+
160
+ email = "test_url_param"
161
+ response = sg.client.suppression.spam_reports._(email).delete()
162
+ puts response.status_code
163
+ puts response.body
164
+ puts response.headers
165
+
166
+ ##################################################
167
+ # Retrieve all spam reports #
168
+ # GET /suppression/spam_reports #
169
+
170
+ params = JSON.parse('{"start_time": 1, "limit": 1, "end_time": 1, "offset": 1}')
171
+ response = sg.client.suppression.spam_reports.get(query_params: params)
172
+ puts response.status_code
173
+ puts response.body
174
+ puts response.headers
175
+
176
+ ##################################################
177
+ # Delete spam reports #
178
+ # DELETE /suppression/spam_reports #
179
+
180
+ data = JSON.parse('{
181
+ "delete_all": false,
182
+ "emails": [
183
+ "example1@example.com",
184
+ "example2@example.com"
185
+ ]
186
+ }')
187
+ response = sg.client.suppression.spam_reports.delete(request_body: data)
188
+ puts response.status_code
189
+ puts response.body
190
+ puts response.headers
191
+
192
+ ##################################################
193
+ # Retrieve all global suppressions #
194
+ # GET /suppression/unsubscribes #
195
+
196
+ params = JSON.parse('{"start_time": 1, "limit": 1, "end_time": 1, "offset": 1}')
197
+ response = sg.client.suppression.unsubscribes.get(query_params: params)
198
+ puts response.status_code
199
+ puts response.body
200
+ puts response.headers
201
+
@@ -0,0 +1,129 @@
1
+ require 'sendgrid-ruby'
2
+
3
+
4
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
5
+
6
+
7
+ ##################################################
8
+ # Create a transactional template. #
9
+ # POST /templates #
10
+
11
+ data = JSON.parse('{
12
+ "name": "example_name"
13
+ }')
14
+ response = sg.client.templates.post(request_body: data)
15
+ puts response.status_code
16
+ puts response.body
17
+ puts response.headers
18
+
19
+ ##################################################
20
+ # Retrieve all transactional templates. #
21
+ # GET /templates #
22
+
23
+ response = sg.client.templates.get()
24
+ puts response.status_code
25
+ puts response.body
26
+ puts response.headers
27
+
28
+ ##################################################
29
+ # Edit a transactional template. #
30
+ # PATCH /templates/{template_id} #
31
+
32
+ data = JSON.parse('{
33
+ "name": "new_example_name"
34
+ }')
35
+ template_id = "test_url_param"
36
+ response = sg.client.templates._(template_id).patch(request_body: data)
37
+ puts response.status_code
38
+ puts response.body
39
+ puts response.headers
40
+
41
+ ##################################################
42
+ # Retrieve a single transactional template. #
43
+ # GET /templates/{template_id} #
44
+
45
+ template_id = "test_url_param"
46
+ response = sg.client.templates._(template_id).get()
47
+ puts response.status_code
48
+ puts response.body
49
+ puts response.headers
50
+
51
+ ##################################################
52
+ # Delete a template. #
53
+ # DELETE /templates/{template_id} #
54
+
55
+ template_id = "test_url_param"
56
+ response = sg.client.templates._(template_id).delete()
57
+ puts response.status_code
58
+ puts response.body
59
+ puts response.headers
60
+
61
+ ##################################################
62
+ # Create a new transactional template version. #
63
+ # POST /templates/{template_id}/versions #
64
+
65
+ data = JSON.parse('{
66
+ "active": 1,
67
+ "html_content": "<%body%>",
68
+ "name": "example_version_name",
69
+ "plain_content": "<%body%>",
70
+ "subject": "<%subject%>",
71
+ "template_id": "ddb96bbc-9b92-425e-8979-99464621b543"
72
+ }')
73
+ template_id = "test_url_param"
74
+ response = sg.client.templates._(template_id).versions.post(request_body: data)
75
+ puts response.status_code
76
+ puts response.body
77
+ puts response.headers
78
+
79
+ ##################################################
80
+ # Edit a transactional template version. #
81
+ # PATCH /templates/{template_id}/versions/{version_id} #
82
+
83
+ data = JSON.parse('{
84
+ "active": 1,
85
+ "html_content": "<%body%>",
86
+ "name": "updated_example_name",
87
+ "plain_content": "<%body%>",
88
+ "subject": "<%subject%>"
89
+ }')
90
+ template_id = "test_url_param"
91
+ version_id = "test_url_param"
92
+ response = sg.client.templates._(template_id).versions._(version_id).patch(request_body: data)
93
+ puts response.status_code
94
+ puts response.body
95
+ puts response.headers
96
+
97
+ ##################################################
98
+ # Retrieve a specific transactional template version. #
99
+ # GET /templates/{template_id}/versions/{version_id} #
100
+
101
+ template_id = "test_url_param"
102
+ version_id = "test_url_param"
103
+ response = sg.client.templates._(template_id).versions._(version_id).get()
104
+ puts response.status_code
105
+ puts response.body
106
+ puts response.headers
107
+
108
+ ##################################################
109
+ # Delete a transactional template version. #
110
+ # DELETE /templates/{template_id}/versions/{version_id} #
111
+
112
+ template_id = "test_url_param"
113
+ version_id = "test_url_param"
114
+ response = sg.client.templates._(template_id).versions._(version_id).delete()
115
+ puts response.status_code
116
+ puts response.body
117
+ puts response.headers
118
+
119
+ ##################################################
120
+ # Activate a transactional template version. #
121
+ # POST /templates/{template_id}/versions/{version_id}/activate #
122
+
123
+ template_id = "test_url_param"
124
+ version_id = "test_url_param"
125
+ response = sg.client.templates._(template_id).versions._(version_id).activate.post()
126
+ puts response.status_code
127
+ puts response.body
128
+ puts response.headers
129
+
@@ -0,0 +1,110 @@
1
+ require 'sendgrid-ruby'
2
+
3
+
4
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
5
+
6
+
7
+ ##################################################
8
+ # Retrieve Tracking Settings #
9
+ # GET /tracking_settings #
10
+
11
+ params = JSON.parse('{"limit": 1, "offset": 1}')
12
+ response = sg.client.tracking_settings.get(query_params: params)
13
+ puts response.status_code
14
+ puts response.body
15
+ puts response.headers
16
+
17
+ ##################################################
18
+ # Update Click Tracking Settings #
19
+ # PATCH /tracking_settings/click #
20
+
21
+ data = JSON.parse('{
22
+ "enabled": true
23
+ }')
24
+ response = sg.client.tracking_settings.click.patch(request_body: data)
25
+ puts response.status_code
26
+ puts response.body
27
+ puts response.headers
28
+
29
+ ##################################################
30
+ # Retrieve Click Track Settings #
31
+ # GET /tracking_settings/click #
32
+
33
+ response = sg.client.tracking_settings.click.get()
34
+ puts response.status_code
35
+ puts response.body
36
+ puts response.headers
37
+
38
+ ##################################################
39
+ # Update Google Analytics Settings #
40
+ # PATCH /tracking_settings/google_analytics #
41
+
42
+ data = JSON.parse('{
43
+ "enabled": true,
44
+ "utm_campaign": "website",
45
+ "utm_content": "",
46
+ "utm_medium": "email",
47
+ "utm_source": "sendgrid.com",
48
+ "utm_term": ""
49
+ }')
50
+ response = sg.client.tracking_settings.google_analytics.patch(request_body: data)
51
+ puts response.status_code
52
+ puts response.body
53
+ puts response.headers
54
+
55
+ ##################################################
56
+ # Retrieve Google Analytics Settings #
57
+ # GET /tracking_settings/google_analytics #
58
+
59
+ response = sg.client.tracking_settings.google_analytics.get()
60
+ puts response.status_code
61
+ puts response.body
62
+ puts response.headers
63
+
64
+ ##################################################
65
+ # Update Open Tracking Settings #
66
+ # PATCH /tracking_settings/open #
67
+
68
+ data = JSON.parse('{
69
+ "enabled": true
70
+ }')
71
+ response = sg.client.tracking_settings.open.patch(request_body: data)
72
+ puts response.status_code
73
+ puts response.body
74
+ puts response.headers
75
+
76
+ ##################################################
77
+ # Get Open Tracking Settings #
78
+ # GET /tracking_settings/open #
79
+
80
+ response = sg.client.tracking_settings.open.get()
81
+ puts response.status_code
82
+ puts response.body
83
+ puts response.headers
84
+
85
+ ##################################################
86
+ # Update Subscription Tracking Settings #
87
+ # PATCH /tracking_settings/subscription #
88
+
89
+ data = JSON.parse('{
90
+ "enabled": true,
91
+ "html_content": "html content",
92
+ "landing": "landing page html",
93
+ "plain_content": "text content",
94
+ "replace": "replacement tag",
95
+ "url": "url"
96
+ }')
97
+ response = sg.client.tracking_settings.subscription.patch(request_body: data)
98
+ puts response.status_code
99
+ puts response.body
100
+ puts response.headers
101
+
102
+ ##################################################
103
+ # Retrieve Subscription Tracking Settings #
104
+ # GET /tracking_settings/subscription #
105
+
106
+ response = sg.client.tracking_settings.subscription.get()
107
+ puts response.status_code
108
+ puts response.body
109
+ puts response.headers
110
+