sendgrid_webapi 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. data/.gitignore +5 -0
  2. data/.rspec +2 -0
  3. data/.travis.yml +5 -0
  4. data/Gemfile +4 -0
  5. data/README.rdoc +389 -0
  6. data/Rakefile +5 -0
  7. data/lib/base.rb +41 -0
  8. data/lib/helper.rb +36 -0
  9. data/lib/middlewares/sendgrid_response.rb +42 -0
  10. data/lib/sendgrid_webapi.rb +5 -0
  11. data/lib/sub_user/apps.rb +31 -0
  12. data/lib/sub_user/auth.rb +10 -0
  13. data/lib/sub_user/bounces.rb +15 -0
  14. data/lib/sub_user/event_notification.rb +20 -0
  15. data/lib/sub_user/iframe.rb +8 -0
  16. data/lib/sub_user/invalid_emails.rb +15 -0
  17. data/lib/sub_user/ip_management.rb +23 -0
  18. data/lib/sub_user/limits.rb +35 -0
  19. data/lib/sub_user/management.rb +57 -0
  20. data/lib/sub_user/modules.rb +68 -0
  21. data/lib/sub_user/monitor_records.rb +35 -0
  22. data/lib/sub_user/parse.rb +20 -0
  23. data/lib/sub_user/spam.rb +15 -0
  24. data/lib/sub_user/stats.rb +8 -0
  25. data/lib/sub_user/unsubscribes.rb +21 -0
  26. data/lib/sub_user/white_label.rb +16 -0
  27. data/lib/subuser_client.rb +11 -0
  28. data/lib/web_api/blocks.rb +13 -0
  29. data/lib/web_api/bounces.rb +13 -0
  30. data/lib/web_api/event_notification.rb +18 -0
  31. data/lib/web_api/invalid_emails.rb +13 -0
  32. data/lib/web_api/mail.rb +8 -0
  33. data/lib/web_api/modules.rb +50 -0
  34. data/lib/web_api/parse.rb +18 -0
  35. data/lib/web_api/profile.rb +29 -0
  36. data/lib/web_api/spam.rb +13 -0
  37. data/lib/web_api/stats.rb +8 -0
  38. data/lib/web_api/unsubscribes.rb +18 -0
  39. data/lib/web_api/version.rb +3 -0
  40. data/lib/webapi_client.rb +12 -0
  41. data/sendgrid_webapi.gemspec +27 -0
  42. data/spec/cassettes/client/_modules/_block/should_get_block_emails.yml +48 -0
  43. data/spec/cassettes/client/_modules/_block/should_try_delete_not_existing_block_email.yml +49 -0
  44. data/spec/cassettes/client/_modules/_bounce/should_get_bounce_emails.yml +40 -0
  45. data/spec/cassettes/client/_modules/_bounce/should_try_delete_not_existing_bounce_email.yml +41 -0
  46. data/spec/cassettes/client/_modules/_event_notification/should_delete_event_notification_url.yml +49 -0
  47. data/spec/cassettes/client/_modules/_event_notification/should_get_event_notification_url.yml +49 -0
  48. data/spec/cassettes/client/_modules/_event_notification/should_set_event_notification_url.yml +49 -0
  49. data/spec/cassettes/client/_modules/_invalid_email/should_get_invalid_emails.yml +40 -0
  50. data/spec/cassettes/client/_modules/_invalid_email/should_try_delete_not_existing_invalid_emails.yml +41 -0
  51. data/spec/cassettes/client/_modules/_parse_email/should_delete_parse_email.yml +94 -0
  52. data/spec/cassettes/client/_modules/_parse_email/should_get_parse_email.yml +50 -0
  53. data/spec/cassettes/client/_modules/_parse_email/should_set_parse_email.yml +49 -0
  54. data/spec/cassettes/client/_modules/_profile/should_get_profile.yml +52 -0
  55. data/spec/cassettes/client/_modules/_profile/should_set_first_name.yml +144 -0
  56. data/spec/cassettes/client/_modules/_spam/should_get_spam_emails.yml +40 -0
  57. data/spec/cassettes/client/_modules/_spam/should_try_delete_not_existing_spam_emails.yml +41 -0
  58. data/spec/cassettes/client/_modules/_unsubscribe/should_add_unsubscribe_emails.yml +40 -0
  59. data/spec/cassettes/client/_modules/_unsubscribe/should_delete_unsubscribe_email.yml +40 -0
  60. data/spec/cassettes/client/_modules/_unsubscribe/should_get_unsubscribe_emails.yml +41 -0
  61. data/spec/cassettes/client/_modules/_unsubscribe/should_try_delete_not_existing_unsubscribe_emails.yml +41 -0
  62. data/spec/cassettes/helper/_create_sub_user_account/should_create_sub_user_account.yml +318 -0
  63. data/spec/cassettes/helper/_run_sendgrid_query/should_raise_with_unsucessfull_request.yml +46 -0
  64. data/spec/cassettes/helper/_run_sendgrid_query/should_run_sendgrid_request.yml +49 -0
  65. data/spec/cassettes/sub_user/_apps/should_activate_app.yml +49 -0
  66. data/spec/cassettes/sub_user/_apps/should_deactivate_app.yml +49 -0
  67. data/spec/cassettes/sub_user/_apps/should_get_current_setting_from_one_app.yml +50 -0
  68. data/spec/cassettes/sub_user/_apps/should_return_available_apps.yml +64 -0
  69. data/spec/cassettes/sub_user/_apps/should_set_current_app.yml +90 -0
  70. data/spec/cassettes/sub_user/_authentication/should_auth_a_sub_user.yml +49 -0
  71. data/spec/cassettes/sub_user/_authentication/should_return_error_with_a_bad_sub_user.yml +49 -0
  72. data/spec/cassettes/sub_user/_bounces/should_returns_bounce_emails.yml +48 -0
  73. data/spec/cassettes/sub_user/_bounces/should_tries_to_delete_unexisting_bounce_emails.yml +49 -0
  74. data/spec/cassettes/sub_user/_event_notification/should_add_event_notification_url.yml +49 -0
  75. data/spec/cassettes/sub_user/_event_notification/should_delete_event_notification_url.yml +49 -0
  76. data/spec/cassettes/sub_user/_event_notification/should_get_event_notification_url.yml +49 -0
  77. data/spec/cassettes/sub_user/_invalid_emails/should_return_invalid_emails.yml +48 -0
  78. data/spec/cassettes/sub_user/_invalid_emails/should_tries_to_delete_unexisting_invalid_mail.yml +49 -0
  79. data/spec/cassettes/sub_user/_ip_management/should_return_all_ips_available.yml +49 -0
  80. data/spec/cassettes/sub_user/_ip_management/should_show_ip_subuser.yml +49 -0
  81. data/spec/cassettes/sub_user/_limits/should_decrements_credits_for_a_sub_user.yml +95 -0
  82. data/spec/cassettes/sub_user/_limits/should_delete_all_limits_for_a_sub_user.yml +94 -0
  83. data/spec/cassettes/sub_user/_limits/should_increments_credits_for_a_sub_user.yml +95 -0
  84. data/spec/cassettes/sub_user/_limits/should_list_the_limits_for_a_sub_user.yml +49 -0
  85. data/spec/cassettes/sub_user/_limits/should_reset_all_limits_for_a_sub_user.yml +95 -0
  86. data/spec/cassettes/sub_user/_limits/should_returns_limits_for_a_sub_user.yml +49 -0
  87. data/spec/cassettes/sub_user/_limits/should_set_total_credits.yml +49 -0
  88. data/spec/cassettes/sub_user/_management/should_add_new_subuser.yml +49 -0
  89. data/spec/cassettes/sub_user/_management/should_disable_sub_user_for_send_email.yml +49 -0
  90. data/spec/cassettes/sub_user/_management/should_enable_sub_user_for_access_to_website.yml +49 -0
  91. data/spec/cassettes/sub_user/_management/should_enable_sub_user_for_send_email.yml +49 -0
  92. data/spec/cassettes/sub_user/_management/should_get_all_subusers.yml +54 -0
  93. data/spec/cassettes/sub_user/_management/should_update_sub_user.yml +49 -0
  94. data/spec/cassettes/sub_user/_monitor_records/should_add_existing_sub_user_to_monitor_record.yml +96 -0
  95. data/spec/cassettes/sub_user/_monitor_records/should_create_a_new_monitor_record.yml +96 -0
  96. data/spec/cassettes/sub_user/_monitor_records/should_delete_a_monitor_record.yml +94 -0
  97. data/spec/cassettes/sub_user/_monitor_records/should_edit_a_monitor_record.yml +96 -0
  98. data/spec/cassettes/sub_user/_monitor_records/should_remove_existing_sub_user_from_monitor_record.yml +96 -0
  99. data/spec/cassettes/sub_user/_parse_email/should_delete_parse_email.yml +94 -0
  100. data/spec/cassettes/sub_user/_parse_email/should_get_parse_email.yml +50 -0
  101. data/spec/cassettes/sub_user/_parse_email/should_set_parse_email.yml +49 -0
  102. data/spec/cassettes/sub_user/_spam/should_return_spam_mails.yml +48 -0
  103. data/spec/cassettes/sub_user/_spam/should_tries_to_delete_unexisting_spam_mail.yml +49 -0
  104. data/spec/cassettes/sub_user/_unsubscribes/should_add_bounce_email.yml +49 -0
  105. data/spec/cassettes/sub_user/_unsubscribes/should_delete_existing_bounce_email.yml +49 -0
  106. data/spec/cassettes/sub_user/_unsubscribes/should_delete_unexisting_bounce_email.yml +49 -0
  107. data/spec/cassettes/sub_user/_unsubscribes/should_returns_bounce_emails.yml +49 -0
  108. data/spec/client_spec.rb +132 -0
  109. data/spec/helper_spec.rb +47 -0
  110. data/spec/spec_helper.rb +13 -0
  111. data/spec/sub_user_spec.rb +270 -0
  112. metadata +290 -0
@@ -0,0 +1,35 @@
1
+ module SendGridWebApi::SubUserModules
2
+ class Limit < SendGridWebApi::SubUser
3
+ LIMIT_URL = "apiv2/customer.limit.json"
4
+
5
+ def get options = {}
6
+ options.merge!({:task => "retrieve"}) unless options[:task]
7
+ query_api(LIMIT_URL, options)
8
+ end
9
+
10
+ def delete options = {}
11
+ options.merge!({:task => "none"}) unless options[:task]
12
+ query_api(LIMIT_URL, options)
13
+ end
14
+
15
+ def reset options = {}
16
+ options.merge!({:task => "recurring"}) unless options[:task]
17
+ query_api(LIMIT_URL, options)
18
+ end
19
+
20
+ def set_credits options = {}
21
+ options.merge!({:task => "total"}) unless options[:task]
22
+ query_api(LIMIT_URL, options)
23
+ end
24
+
25
+ def increment_credits options = {}
26
+ options.merge!({:task => "increment"}) unless options[:task]
27
+ query_api(LIMIT_URL, options)
28
+ end
29
+
30
+ def decrement_credits options = {}
31
+ options.merge!({:task => "decrement"}) unless options[:task]
32
+ query_api(LIMIT_URL, options)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,57 @@
1
+ module SendGridWebApi::SubUserModules
2
+ class Management < SendGridWebApi::SubUser
3
+ def get options = {}
4
+ options.merge!({:task => "get"}) unless options[:task]
5
+ management_get_url = "apiv2/customer.profile.json"
6
+ query_api(management_get_url, options)
7
+ end
8
+
9
+ def add options = {}
10
+ management_add_url = "apiv2/customer.add.json"
11
+ query_api(management_add_url, options)
12
+ end
13
+
14
+ def enable options = {}
15
+ management_enable_url = "apiv2/customer.enable.json"
16
+ query_api(management_enable_url, options)
17
+ end
18
+
19
+ def disable options = {}
20
+ management_disable_url = "apiv2/customer.disable.json"
21
+ query_api(management_disable_url, options)
22
+ end
23
+
24
+ def website_enable options = {}
25
+ management_website_enable_url = "apiv2/customer.website_enable.json"
26
+ query_api(management_website_enable_url, options)
27
+ end
28
+
29
+ def website_disable options = {}
30
+ management_website_disable_url = "apiv2/customer.website_disable.json"
31
+ query_api(management_website_disable_url, options)
32
+ end
33
+
34
+ def update options = {}
35
+ options.merge!(:task => "set") unless options[:task]
36
+ management_update_url = "apiv2/customer.profile.json"
37
+ query_api(management_update_url, options)
38
+ end
39
+
40
+ def update_password options = {}
41
+ management_set_password_url = "apiv2/customer.password.json"
42
+ query_api(management_set_password_url, options)
43
+ end
44
+
45
+ def update_username options = {}
46
+ options.merge!({:task => "setUsername"}) unless options[:task]
47
+ management_update_url = "apiv2/customer.profile.json"
48
+ query_api(management_update_url, options)
49
+ end
50
+
51
+ def update_email options = {}
52
+ options.merge!({:task => "setEmail"}) unless options[:task]
53
+ management_update_url = "apiv2/customer.profile.json"
54
+ query_api(management_update_url, options)
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,68 @@
1
+ #loading modules
2
+ %w(management bounces unsubscribes spam invalid_emails event_notification parse
3
+ limits stats ip_management monitor_records white_label iframe auth apps).each do |mod|
4
+ require "sub_user/" + mod
5
+ end
6
+
7
+ module SendGridWebApi::SubUserModules
8
+ def management
9
+ @management_instance ||= Management.new(@api_user, @api_key)
10
+ end
11
+
12
+ def bounces
13
+ @bounce_instance ||= Bounce.new(@api_user, @api_key)
14
+ end
15
+
16
+ def unsubscribes
17
+ @unsubscribe_instance ||= Unsubscribe.new(@api_user, @api_key)
18
+ end
19
+
20
+ def spam
21
+ @spam_instance ||= Spam.new(@api_user, @api_key)
22
+ end
23
+
24
+ def invalid_emails
25
+ @invalid_email_instance ||= InvalidEmail.new(@api_user, @api_key)
26
+ end
27
+
28
+ def event_notification
29
+ @event_notification_instance ||= EventNotification.new(@api_user, @api_key)
30
+ end
31
+
32
+ def parse_email
33
+ @parse_instance ||= ParseEmail.new(@api_user, @api_key)
34
+ end
35
+
36
+ def limits
37
+ @limit_instance ||= Limit.new(@api_user, @api_key)
38
+ end
39
+
40
+ def stats
41
+ @stats_instance ||= Stats.new(@api_user, @api_key)
42
+ end
43
+
44
+ def ip_management
45
+ @ip_management_instance ||= IpManagement.new(@api_user, @api_key)
46
+ end
47
+
48
+ def monitor_records
49
+ @monitor_record_instance ||= MonitorRecord.new(@api_user, @api_key)
50
+ end
51
+
52
+ def white_label
53
+ @white_label_instance ||= WhiteLabel.new(@api_user, @api_key)
54
+ end
55
+
56
+ def iframe
57
+ @iframe_instance ||= Iframe.new(@api_user, @api_key)
58
+ end
59
+
60
+ def auth
61
+ @auth_instance ||= Auth.new(@api_user, @api_key)
62
+ end
63
+
64
+ def apps
65
+ @app_instance ||= App.new(@api_user, @api_key)
66
+ end
67
+
68
+ end
@@ -0,0 +1,35 @@
1
+ module SendGridWebApi::SubUserModules
2
+ class MonitorRecord < SendGridWebApi::SubUser
3
+ MONITOR_RECORD_URL = "apiv2/customer.monitor.json"
4
+
5
+ def get options = {}
6
+ options.merge!({:task => "list"}) unless options[:task]
7
+ query_api(MONITOR_RECORD_URL, options)
8
+ end
9
+
10
+ def create options = {}
11
+ options.merge!({:task => "create"}) unless options[:task]
12
+ query_api(MONITOR_RECORD_URL, options)
13
+ end
14
+
15
+ def edit options = {}
16
+ options.merge!({:task => "edit"}) unless options[:task]
17
+ query_api(MONITOR_RECORD_URL, options)
18
+ end
19
+
20
+ def delete options = {}
21
+ options.merge!({:task => "delete"}) unless options[:task]
22
+ query_api(MONITOR_RECORD_URL, options)
23
+ end
24
+
25
+ def add_user options = {}
26
+ options.merge!({:task => "append"}) unless options[:task]
27
+ query_api(MONITOR_RECORD_URL, options)
28
+ end
29
+
30
+ def remove_user options = {}
31
+ options.merge!({:task => "detach"}) unless options[:task]
32
+ query_api(MONITOR_RECORD_URL, options)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,20 @@
1
+ module SendGridWebApi::SubUserModules
2
+ class ParseEmail < SendGridWebApi::SubUser
3
+ PARSE_URL = "apiv2/customer.parse.json"
4
+
5
+ def get options = {}
6
+ options.merge!({:task => "get"}) unless options[:task]
7
+ query_api(PARSE_URL, options)
8
+ end
9
+
10
+ def set options = {}
11
+ options.merge!({:task => "set"}) unless options[:task]
12
+ query_api(PARSE_URL, options)
13
+ end
14
+
15
+ def delete options = {}
16
+ options.merge!({:task => "delete"}) unless options[:task]
17
+ query_api(PARSE_URL, options)
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,15 @@
1
+ module SendGridWebApi::SubUserModules
2
+ class Spam < SendGridWebApi::SubUser
3
+ SPAM_URL = "api/user.spamreports.json"
4
+
5
+ def get options = {}
6
+ options.merge!({:task => "get"}) unless options[:task]
7
+ query_api(SPAM_URL, options)
8
+ end
9
+
10
+ def delete options = {}
11
+ options.merge!({:task => "delete"}) unless options[:task]
12
+ query_api(SPAM_URL, options)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,8 @@
1
+ module SendGridWebApi::SubUserModules
2
+ class Stats < SendGridWebApi::SubUser
3
+ def get options = {}
4
+ stats_get_url = "apiv2/customer.stats.json"
5
+ query_api(stats_get_url, options)
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,21 @@
1
+ module SendGridWebApi::SubUserModules
2
+ class Unsubscribe < SendGridWebApi::SubUser
3
+ UNSUBSCRIBE_URL = "api/user.unsubscribes.json"
4
+
5
+ def get options = {}
6
+ options.merge!({:task => "get"}) unless options[:task]
7
+ query_api(UNSUBSCRIBE_URL, options)
8
+ end
9
+
10
+ def add options = {}
11
+ options.merge!({:task => "add"}) unless options[:task]
12
+ query_api(UNSUBSCRIBE_URL, options)
13
+ end
14
+
15
+
16
+ def delete options = {}
17
+ options.merge!({:task => "delete"}) unless options[:task]
18
+ query_api(UNSUBSCRIBE_URL, options)
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,16 @@
1
+ module SendGridWebApi::SubUserModules
2
+ class WhiteLabel < SendGridWebApi::SubUser
3
+ WHITE_LABEL_URL = "apiv2/customer.whitelabel.json"
4
+
5
+ def get options = {}
6
+ options.merge!({:task => "list"}) unless options[:task]
7
+ query_api(WHITE_LABEL_URL, options)
8
+ end
9
+
10
+ def add options = {}
11
+ options.merge!({:task => "append"}) unless options[:task]
12
+ query_api(WHITE_LABEL_URL, options)
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,11 @@
1
+ module SendGridWebApi
2
+ autoload :SubUserModules, 'sub_user/modules'
3
+
4
+ class SubUser < Base
5
+ include SendGridWebApi::SubUserModules
6
+
7
+ def base_url
8
+ "https://sendgrid.com/"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ module SendGridWebApi::Modules
2
+ class Block < SendGridWebApi::Client
3
+ def get options = {}
4
+ block_get_url = "blocks.get.json"
5
+ query_api(block_get_url, options)
6
+ end
7
+
8
+ def delete options = {}
9
+ block_delete_url = "blocks.delete.json"
10
+ query_api(block_delete_url, options)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module SendGridWebApi::Modules
2
+ class Bounce < SendGridWebApi::Client
3
+ def get options = {}
4
+ bounce_get_url = "bounces.get.json"
5
+ query_api(bounce_get_url, options)
6
+ end
7
+
8
+ def delete options = {}
9
+ bounce_delete_url = "bounces.delete.json"
10
+ query_api(bounce_delete_url, options)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,18 @@
1
+ module SendGridWebApi::Modules
2
+ class EventNotification < SendGridWebApi::Client
3
+ def get options = {}
4
+ event_get_url = "eventposturl.get.json"
5
+ query_api(event_get_url, options)
6
+ end
7
+
8
+ def set options = {}
9
+ event_set_url = "eventposturl.set.json"
10
+ query_api(event_set_url, options)
11
+ end
12
+
13
+ def delete options = {}
14
+ event_delete_url = "eventposturl.delete.json"
15
+ query_api(event_delete_url, options)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,13 @@
1
+ module SendGridWebApi::Modules
2
+ class InvalidEmail < SendGridWebApi::Client
3
+ def get options = {}
4
+ invalid_email_get_url = "invalidemails.get.json"
5
+ query_api(invalid_email_get_url, options)
6
+ end
7
+
8
+ def delete options = {}
9
+ invalid_email_delete_url = "invalidemails.delete.json"
10
+ query_api(invalid_email_delete_url, options)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,8 @@
1
+ module SendGridWebApi::Modules
2
+ class Mail < SendGridWebApi::Client
3
+ def send options = {}
4
+ mail_send_url = "mail.send.json"
5
+ query_post_api(mail_send_url, options)
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,50 @@
1
+ #loading modules
2
+ %w(bounces spam blocks invalid_emails unsubscribes parse event_notification stats profile mail).each do |mod|
3
+ require "web_api/" + mod
4
+ end
5
+
6
+ module SendGridWebApi::Modules
7
+ def bounces
8
+ @bounce_instance ||= Bounce.new(@api_user, @api_key)
9
+ end
10
+
11
+ def blocks
12
+ @block_instance ||= Block.new(@api_user, @api_key)
13
+ end
14
+
15
+ def spam
16
+ @spam_instance ||= Spam.new(@api_user, @api_key)
17
+ end
18
+
19
+ def invalid_emails
20
+ @invalid_email_instance ||= InvalidEmail.new(@api_user, @api_key)
21
+ end
22
+
23
+ def unsubscribes
24
+ @unsubscribe_instance ||= Unsubscribe.new(@api_user, @api_key)
25
+ end
26
+
27
+ def parse_email
28
+ @parse_email_instance ||= ParseEmail.new(@api_user, @api_key)
29
+ end
30
+
31
+ def event_notification
32
+ @event_notification_instance ||= EventNotification.new(@api_user, @api_key)
33
+ end
34
+
35
+ def stats
36
+ @stats_instance ||= Stats.new(@api_user, @api_key)
37
+ end
38
+
39
+ def profile
40
+ @profile_instance ||= Profile.new(@api_user, @api_key)
41
+ end
42
+
43
+ def mail
44
+ @mail_instance ||= Mail.new(@api_user, @api_key)
45
+ end
46
+
47
+ def sub_user
48
+ @sub_user ||= SendGridWebApi::SubUser.new(@api_user, @api_key)
49
+ end
50
+ end
@@ -0,0 +1,18 @@
1
+ module SendGridWebApi::Modules
2
+ class ParseEmail < SendGridWebApi::Client
3
+ def get options = {}
4
+ parse_email_get_url = "parse.get.json"
5
+ query_api(parse_email_get_url, options)
6
+ end
7
+
8
+ def set options = {}
9
+ parse_email_set_url = "parse.set.json"
10
+ query_api(parse_email_set_url, options)
11
+ end
12
+
13
+ def delete options = {}
14
+ parse_email_delete_url = "parse.delete.json"
15
+ query_api(parse_email_delete_url, options)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,29 @@
1
+ module SendGridWebApi::Modules
2
+ class Profile < SendGridWebApi::Client
3
+ def get options = {}
4
+ profile_get_url = "profile.get.json"
5
+ query_api(profile_get_url, options)
6
+ end
7
+
8
+ def set options = {}
9
+ profile_set_url = "profile.set.json"
10
+ query_api(profile_set_url, options)
11
+ end
12
+
13
+ def set_password options = {}
14
+ profile_set_password_url = "password.set.json"
15
+ query_api(profile_set_password_url, options)
16
+ end
17
+
18
+ def set_username options = {}
19
+ profile_set_username_url = "profile.setUsername.json"
20
+ query_api(profile_set_username_url, options)
21
+ end
22
+
23
+ def set_email options = {}
24
+ profile_set_email_url = "profile.setEmail.json"
25
+ query_api(profile_set_email_url, options)
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,13 @@
1
+ module SendGridWebApi::Modules
2
+ class Spam < SendGridWebApi::Client
3
+ def get options = {}
4
+ spam_get_url = "spamreports.get.json"
5
+ query_api(spam_get_url, options)
6
+ end
7
+
8
+ def delete options = {}
9
+ spam_delete_url = "spamreports.delete.json"
10
+ query_api(spam_delete_url, options)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,8 @@
1
+ module SendGridWebApi::Modules
2
+ class Stats < SendGridWebApi::Client
3
+ def get options = {}
4
+ stats_get_url = "stats.get.json"
5
+ query_api(stats_get_url, options)
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,18 @@
1
+ module SendGridWebApi::Modules
2
+ class Unsubscribe < SendGridWebApi::Client
3
+ def get options = {}
4
+ unsubscribe_get_url = "unsubscribes.get.json"
5
+ query_api(unsubscribe_get_url, options)
6
+ end
7
+
8
+ def add options = {}
9
+ unsubscribe_add_url = "unsubscribes.add.json"
10
+ query_api(unsubscribe_add_url, options)
11
+ end
12
+
13
+ def delete options = {}
14
+ unsubscribe_delete_url = "unsubscribes.delete.json"
15
+ query_api(unsubscribe_delete_url, options)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,3 @@
1
+ module SendGridWebApi
2
+ VERSION = "0.0.3"
3
+ end
@@ -0,0 +1,12 @@
1
+ module SendGridWebApi
2
+ autoload :Modules, 'web_api/modules'
3
+
4
+ class Client < Base
5
+ include SendGridWebApi::Modules
6
+
7
+ def base_url
8
+ "https://sendgrid.com/api/"
9
+ end
10
+
11
+ end
12
+ end
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require 'version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "sendgrid_webapi"
7
+ s.version = SendGridWebApi::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["kylejginavan", "chebyte"]
10
+ s.email = ["kylejginavan@gmail.com", "maurotorres@gmail.com"]
11
+ s.homepage = "https://github.com/kylejginavan/sendgrid_smtpapi"
12
+ s.summary = %q{SendGrid WEB API gem fo Rails}
13
+ s.description = %q{Gem for access to SendGrid WEB API from rails}
14
+
15
+ s.rubyforge_project = "sendgrid_webapi"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+ s.add_development_dependency "rspec", "~> 2.10.0"
22
+ s.add_development_dependency "webmock", "~> 1.8.7"
23
+ s.add_development_dependency "vcr", "~> 2.1.1"
24
+ s.add_dependency "faraday", "~> 0.8.0"
25
+ s.add_dependency "json", "~> 1.7.3"
26
+
27
+ end
@@ -0,0 +1,48 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://sendgrid.com/api/blocks.get.json?api_key=pass&api_user=user
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ""
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Server:
22
+ - nginx/0.7.65
23
+ Date:
24
+ - Mon, 02 Jul 2012 14:42:51 GMT
25
+ Content-Type:
26
+ - application/json
27
+ Connection:
28
+ - keep-alive
29
+ X-Powered-By:
30
+ - PHP/5.3.2-1ubuntu4.14
31
+ Cache-Control:
32
+ - private
33
+ Set-Cookie:
34
+ - sendgrid_frontend=f0e7344786a2d782f7bab47e30ecf283:de5a5348f999469fb4a7e2216d67fa03459c9f52; expires=Wed, 01-Aug-2012 14:42:27 GMT; path=/; httponly
35
+ Content-Encoding:
36
+ - gzip
37
+ Vary:
38
+ - Accept-Encoding
39
+ Content-Length:
40
+ - "28"
41
+ body:
42
+ encoding: ASCII-8BIT
43
+ string: !binary |
44
+ H4sIAAAAAAAAA4qOBQAAAP//AwApu0wNAgAAAA==
45
+
46
+ http_version:
47
+ recorded_at: Mon, 02 Jul 2012 14:42:51 GMT
48
+ recorded_with: VCR 2.1.1
@@ -0,0 +1,49 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://sendgrid.com/api/blocks.delete.json?api_key=pass&api_user=user&email=test@example.com
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ""
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Server:
22
+ - nginx/0.7.65
23
+ Date:
24
+ - Mon, 02 Jul 2012 14:42:53 GMT
25
+ Content-Type:
26
+ - application/json
27
+ Connection:
28
+ - keep-alive
29
+ X-Powered-By:
30
+ - PHP/5.3.2-1ubuntu4.14
31
+ Cache-Control:
32
+ - private
33
+ Set-Cookie:
34
+ - sendgrid_frontend=b1552d80418879e57ecce9ff13f7e16c:60b4e990d7fa4abbf759b653ee408ab726e8db97; expires=Wed, 01-Aug-2012 14:42:29 GMT; path=/; httponly
35
+ Content-Encoding:
36
+ - gzip
37
+ Vary:
38
+ - Accept-Encoding
39
+ Content-Length:
40
+ - "60"
41
+ body:
42
+ encoding: ASCII-8BIT
43
+ string: !binary |
44
+ H4sIAAAAAAAAA6pWyk0tLk5MT1WyUnLNTczMUUjJTy1WyMsvUUityCwuUaoF
45
+ AAAA//8DACrxmdciAAAA
46
+
47
+ http_version:
48
+ recorded_at: Mon, 02 Jul 2012 14:42:53 GMT
49
+ recorded_with: VCR 2.1.1