sendgrid-ruby 1.1.6 → 6.0.4

Sign up to get free protection for your applications and to get access to all the features.
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
+