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,173 @@
1
+ require 'sendgrid-ruby'
2
+
3
+
4
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
5
+
6
+
7
+ ##################################################
8
+ # Create a new suppression group #
9
+ # POST /asm/groups #
10
+
11
+ data = JSON.parse('{
12
+ "description": "Suggestions for products our users might like.",
13
+ "is_default": true,
14
+ "name": "Product Suggestions"
15
+ }')
16
+ response = sg.client.asm.groups.post(request_body: data)
17
+ puts response.status_code
18
+ puts response.body
19
+ puts response.headers
20
+
21
+ ##################################################
22
+ # Retrieve information about multiple suppression groups #
23
+ # GET /asm/groups #
24
+
25
+ params = JSON.parse('{"id": 1}')
26
+ response = sg.client.asm.groups.get(query_params: params)
27
+ puts response.status_code
28
+ puts response.body
29
+ puts response.headers
30
+
31
+ ##################################################
32
+ # Update a suppression group. #
33
+ # PATCH /asm/groups/{group_id} #
34
+
35
+ data = JSON.parse('{
36
+ "description": "Suggestions for items our users might like.",
37
+ "id": 103,
38
+ "name": "Item Suggestions"
39
+ }')
40
+ group_id = "test_url_param"
41
+ response = sg.client.asm.groups._(group_id).patch(request_body: data)
42
+ puts response.status_code
43
+ puts response.body
44
+ puts response.headers
45
+
46
+ ##################################################
47
+ # Get information on a single suppression group. #
48
+ # GET /asm/groups/{group_id} #
49
+
50
+ group_id = "test_url_param"
51
+ response = sg.client.asm.groups._(group_id).get()
52
+ puts response.status_code
53
+ puts response.body
54
+ puts response.headers
55
+
56
+ ##################################################
57
+ # Delete a suppression group. #
58
+ # DELETE /asm/groups/{group_id} #
59
+
60
+ group_id = "test_url_param"
61
+ response = sg.client.asm.groups._(group_id).delete()
62
+ puts response.status_code
63
+ puts response.body
64
+ puts response.headers
65
+
66
+ ##################################################
67
+ # Add suppressions to a suppression group #
68
+ # POST /asm/groups/{group_id}/suppressions #
69
+
70
+ data = JSON.parse('{
71
+ "recipient_emails": [
72
+ "test1@example.com",
73
+ "test2@example.com"
74
+ ]
75
+ }')
76
+ group_id = "test_url_param"
77
+ response = sg.client.asm.groups._(group_id).suppressions.post(request_body: data)
78
+ puts response.status_code
79
+ puts response.body
80
+ puts response.headers
81
+
82
+ ##################################################
83
+ # Retrieve all suppressions for a suppression group #
84
+ # GET /asm/groups/{group_id}/suppressions #
85
+
86
+ group_id = "test_url_param"
87
+ response = sg.client.asm.groups._(group_id).suppressions.get()
88
+ puts response.status_code
89
+ puts response.body
90
+ puts response.headers
91
+
92
+ ##################################################
93
+ # Search for suppressions within a group #
94
+ # POST /asm/groups/{group_id}/suppressions/search #
95
+
96
+ data = JSON.parse('{
97
+ "recipient_emails": [
98
+ "exists1@example.com",
99
+ "exists2@example.com",
100
+ "doesnotexists@example.com"
101
+ ]
102
+ }')
103
+ group_id = "test_url_param"
104
+ response = sg.client.asm.groups._(group_id).suppressions.search.post(request_body: data)
105
+ puts response.status_code
106
+ puts response.body
107
+ puts response.headers
108
+
109
+ ##################################################
110
+ # Delete a suppression from a suppression group #
111
+ # DELETE /asm/groups/{group_id}/suppressions/{email} #
112
+
113
+ group_id = "test_url_param"
114
+ email = "test_url_param"
115
+ response = sg.client.asm.groups._(group_id).suppressions._(email).delete()
116
+ puts response.status_code
117
+ puts response.body
118
+ puts response.headers
119
+
120
+ ##################################################
121
+ # Retrieve all suppressions #
122
+ # GET /asm/suppressions #
123
+
124
+ response = sg.client.asm.suppressions.get()
125
+ puts response.status_code
126
+ puts response.body
127
+ puts response.headers
128
+
129
+ ##################################################
130
+ # Add recipient addresses to the global suppression group. #
131
+ # POST /asm/suppressions/global #
132
+
133
+ data = JSON.parse('{
134
+ "recipient_emails": [
135
+ "test1@example.com",
136
+ "test2@example.com"
137
+ ]
138
+ }')
139
+ response = sg.client.asm.suppressions.global.post(request_body: data)
140
+ puts response.status_code
141
+ puts response.body
142
+ puts response.headers
143
+
144
+ ##################################################
145
+ # Retrieve a Global Suppression #
146
+ # GET /asm/suppressions/global/{email} #
147
+
148
+ email = "test_url_param"
149
+ response = sg.client.asm.suppressions.global._(email).get()
150
+ puts response.status_code
151
+ puts response.body
152
+ puts response.headers
153
+
154
+ ##################################################
155
+ # Delete a Global Suppression #
156
+ # DELETE /asm/suppressions/global/{email} #
157
+
158
+ email = "test_url_param"
159
+ response = sg.client.asm.suppressions.global._(email).delete()
160
+ puts response.status_code
161
+ puts response.body
162
+ puts response.headers
163
+
164
+ ##################################################
165
+ # Retrieve all suppression groups for an email address #
166
+ # GET /asm/suppressions/{email} #
167
+
168
+ email = "test_url_param"
169
+ response = sg.client.asm.suppressions._(email).get()
170
+ puts response.status_code
171
+ puts response.body
172
+ puts response.headers
173
+
@@ -0,0 +1,16 @@
1
+ require 'sendgrid-ruby'
2
+
3
+
4
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
5
+
6
+
7
+ ##################################################
8
+ # Retrieve email statistics by browser. #
9
+ # GET /browsers/stats #
10
+
11
+ 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"}')
12
+ response = sg.client.browsers.stats.get(query_params: params)
13
+ puts response.status_code
14
+ puts response.body
15
+ puts response.headers
16
+
@@ -0,0 +1,153 @@
1
+ require 'sendgrid-ruby'
2
+
3
+
4
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
5
+
6
+
7
+ ##################################################
8
+ # Create a Campaign #
9
+ # POST /campaigns #
10
+
11
+ data = JSON.parse('{
12
+ "categories": [
13
+ "spring line"
14
+ ],
15
+ "custom_unsubscribe_url": "",
16
+ "html_content": "<html><head><title></title></head><body><p>Check out our spring line!</p></body></html>",
17
+ "ip_pool": "marketing",
18
+ "list_ids": [
19
+ 110,
20
+ 124
21
+ ],
22
+ "plain_content": "Check out our spring line!",
23
+ "segment_ids": [
24
+ 110
25
+ ],
26
+ "sender_id": 124451,
27
+ "subject": "New Products for Spring!",
28
+ "suppression_group_id": 42,
29
+ "title": "March Newsletter"
30
+ }')
31
+ response = sg.client.campaigns.post(request_body: data)
32
+ puts response.status_code
33
+ puts response.body
34
+ puts response.headers
35
+
36
+ ##################################################
37
+ # Retrieve all Campaigns #
38
+ # GET /campaigns #
39
+
40
+ params = JSON.parse('{"limit": 1, "offset": 1}')
41
+ response = sg.client.campaigns.get(query_params: params)
42
+ puts response.status_code
43
+ puts response.body
44
+ puts response.headers
45
+
46
+ ##################################################
47
+ # Update a Campaign #
48
+ # PATCH /campaigns/{campaign_id} #
49
+
50
+ data = JSON.parse('{
51
+ "categories": [
52
+ "summer line"
53
+ ],
54
+ "html_content": "<html><head><title></title></head><body><p>Check out our summer line!</p></body></html>",
55
+ "plain_content": "Check out our summer line!",
56
+ "subject": "New Products for Summer!",
57
+ "title": "May Newsletter"
58
+ }')
59
+ campaign_id = "test_url_param"
60
+ response = sg.client.campaigns._(campaign_id).patch(request_body: data)
61
+ puts response.status_code
62
+ puts response.body
63
+ puts response.headers
64
+
65
+ ##################################################
66
+ # Retrieve a single campaign #
67
+ # GET /campaigns/{campaign_id} #
68
+
69
+ campaign_id = "test_url_param"
70
+ response = sg.client.campaigns._(campaign_id).get()
71
+ puts response.status_code
72
+ puts response.body
73
+ puts response.headers
74
+
75
+ ##################################################
76
+ # Delete a Campaign #
77
+ # DELETE /campaigns/{campaign_id} #
78
+
79
+ campaign_id = "test_url_param"
80
+ response = sg.client.campaigns._(campaign_id).delete()
81
+ puts response.status_code
82
+ puts response.body
83
+ puts response.headers
84
+
85
+ ##################################################
86
+ # Update a Scheduled Campaign #
87
+ # PATCH /campaigns/{campaign_id}/schedules #
88
+
89
+ data = JSON.parse('{
90
+ "send_at": 1489451436
91
+ }')
92
+ campaign_id = "test_url_param"
93
+ response = sg.client.campaigns._(campaign_id).schedules.patch(request_body: data)
94
+ puts response.status_code
95
+ puts response.body
96
+ puts response.headers
97
+
98
+ ##################################################
99
+ # Schedule a Campaign #
100
+ # POST /campaigns/{campaign_id}/schedules #
101
+
102
+ data = JSON.parse('{
103
+ "send_at": 1489771528
104
+ }')
105
+ campaign_id = "test_url_param"
106
+ response = sg.client.campaigns._(campaign_id).schedules.post(request_body: data)
107
+ puts response.status_code
108
+ puts response.body
109
+ puts response.headers
110
+
111
+ ##################################################
112
+ # View Scheduled Time of a Campaign #
113
+ # GET /campaigns/{campaign_id}/schedules #
114
+
115
+ campaign_id = "test_url_param"
116
+ response = sg.client.campaigns._(campaign_id).schedules.get()
117
+ puts response.status_code
118
+ puts response.body
119
+ puts response.headers
120
+
121
+ ##################################################
122
+ # Unschedule a Scheduled Campaign #
123
+ # DELETE /campaigns/{campaign_id}/schedules #
124
+
125
+ campaign_id = "test_url_param"
126
+ response = sg.client.campaigns._(campaign_id).schedules.delete()
127
+ puts response.status_code
128
+ puts response.body
129
+ puts response.headers
130
+
131
+ ##################################################
132
+ # Send a Campaign #
133
+ # POST /campaigns/{campaign_id}/schedules/now #
134
+
135
+ campaign_id = "test_url_param"
136
+ response = sg.client.campaigns._(campaign_id).schedules.now.post()
137
+ puts response.status_code
138
+ puts response.body
139
+ puts response.headers
140
+
141
+ ##################################################
142
+ # Send a Test Campaign #
143
+ # POST /campaigns/{campaign_id}/schedules/test #
144
+
145
+ data = JSON.parse('{
146
+ "to": "your.email@example.com"
147
+ }')
148
+ campaign_id = "test_url_param"
149
+ response = sg.client.campaigns._(campaign_id).schedules.test.post(request_body: data)
150
+ puts response.status_code
151
+ puts response.body
152
+ puts response.headers
153
+
@@ -0,0 +1,36 @@
1
+ require 'sendgrid-ruby'
2
+
3
+
4
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
5
+
6
+
7
+ ##################################################
8
+ # Retrieve all categories #
9
+ # GET /categories #
10
+
11
+ params = JSON.parse('{"category": "test_string", "limit": 1, "offset": 1}')
12
+ response = sg.client.categories.get(query_params: params)
13
+ puts response.status_code
14
+ puts response.body
15
+ puts response.headers
16
+
17
+ ##################################################
18
+ # Retrieve Email Statistics for Categories #
19
+ # GET /categories/stats #
20
+
21
+ params = JSON.parse('{"end_date": "2016-04-01", "aggregated_by": "day", "limit": 1, "offset": 1, "start_date": "2016-01-01", "categories": "test_string"}')
22
+ response = sg.client.categories.stats.get(query_params: params)
23
+ puts response.status_code
24
+ puts response.body
25
+ puts response.headers
26
+
27
+ ##################################################
28
+ # Retrieve sums of email stats for each category [Needs: Stats object defined, has category ID?] #
29
+ # GET /categories/stats/sums #
30
+
31
+ 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"}')
32
+ response = sg.client.categories.stats.sums.get(query_params: params)
33
+ puts response.status_code
34
+ puts response.body
35
+ puts response.headers
36
+
@@ -0,0 +1,27 @@
1
+ require 'sendgrid-ruby'
2
+
3
+
4
+ sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
5
+
6
+
7
+ ##################################################
8
+ # Retrieve email statistics by client type. #
9
+ # GET /clients/stats #
10
+
11
+ params = JSON.parse('{"aggregated_by": "day", "start_date": "2016-01-01", "end_date": "2016-04-01"}')
12
+ response = sg.client.clients.stats.get(query_params: params)
13
+ puts response.status_code
14
+ puts response.body
15
+ puts response.headers
16
+
17
+ ##################################################
18
+ # Retrieve stats by a specific client type. #
19
+ # GET /clients/{client_type}/stats #
20
+
21
+ params = JSON.parse('{"aggregated_by": "day", "start_date": "2016-01-01", "end_date": "2016-04-01"}')
22
+ client_type = "test_url_param"
23
+ response = sg.client.clients._(client_type).stats.get(query_params: params)
24
+ puts response.status_code
25
+ puts response.body
26
+ puts response.headers
27
+