Module: SendGrid4r::REST::Request
- Included in:
- ApiKeysManagement, ApiKeysManagement::Permissions, Blocks, Bounces, CancelScheduledSends, Categories, EmailActivity, InvalidEmails, IpAccessManagement, Ips::Addresses, Ips::Pools, Ips::Warmup, Mail, MarketingCampaigns, MarketingCampaigns::Contacts::CustomFields, MarketingCampaigns::Contacts::Lists, MarketingCampaigns::Contacts::Recipients, MarketingCampaigns::Contacts::ReservedFields, MarketingCampaigns::Contacts::Segments, Settings::EnforcedTls, Settings::Mail, Settings::Partner, Settings::Tracking, Sm, Sm::GlobalUnsubscribes, Sm::Groups, Sm::Suppressions, SpamReports, Stats::Advanced, Stats::Category, Stats::Global, Stats::Parse, Stats::Subuser, Subusers, TransactionalTemplates, TransactionalTemplates::Versions, Users, Webhooks::Event, Webhooks::Parse, Whitelabel::Domains, Whitelabel::Ips, Whitelabel::Links
- Defined in:
- lib/sendgrid4r/rest/request.rb
Overview
SendGrid Web API v3 Request
Constant Summary collapse
- BASE_URL =
'https://api.sendgrid.com/v3'
Instance Method Summary collapse
- #create_args(method, auth, endpoint, params, payload) ⇒ Object
- #delete(auth, endpoint, params = nil, payload = nil, &block) ⇒ Object
- #execute(method, auth, endpoint, params, payload, &block) ⇒ Object
- #finish(resp, raw_resp = false) {|JSON.parse(resp)| ... } ⇒ Object
- #get(auth, endpoint, params = nil, payload = nil, &block) ⇒ Object
- #patch(auth, endpoint, payload, &block) ⇒ Object
- #post(auth, endpoint, payload = nil, &block) ⇒ Object
- #process_array_params(v) ⇒ Object
- #process_url_params(endpoint, params) ⇒ Object
- #put(auth, endpoint, payload, &block) ⇒ Object
Instance Method Details
#create_args(method, auth, endpoint, params, payload) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/sendgrid4r/rest/request.rb', line 43 def create_args(method, auth, endpoint, params, payload) args = {} args[:method] = method args[:url] = process_url_params(endpoint, params) headers = {} headers[:content_type] = :json # Added for Campaign API headers['Accept-Encoding'] = 'plain' # if !auth.api_key.nil? headers[:authorization] = "Bearer #{auth.api_key}" else args[:user] = auth.username args[:password] = auth.password end args[:headers] = headers args[:payload] = payload.to_json unless payload.nil? args end |
#delete(auth, endpoint, params = nil, payload = nil, &block) ⇒ Object
30 31 32 |
# File 'lib/sendgrid4r/rest/request.rb', line 30 def delete(auth, endpoint, params = nil, payload = nil, &block) execute(:delete, auth, endpoint, params, payload, &block) end |
#execute(method, auth, endpoint, params, payload, &block) ⇒ Object
34 35 36 37 38 39 40 41 |
# File 'lib/sendgrid4r/rest/request.rb', line 34 def execute(method, auth, endpoint, params, payload, &block) args = create_args(method, auth, endpoint, params, payload) RestClient::Request.execute(args, &block) rescue RestClient::TooManyRequests => e duration = e.response.headers[:x_ratelimit_remaining].to_i sleep duration if duration > 0 retry end |
#finish(resp, raw_resp = false) {|JSON.parse(resp)| ... } ⇒ Object
78 79 80 81 |
# File 'lib/sendgrid4r/rest/request.rb', line 78 def finish(resp, raw_resp = false) return resp if raw_resp || resp.nil? || resp.length < 2 yield(JSON.parse(resp)) end |
#get(auth, endpoint, params = nil, payload = nil, &block) ⇒ Object
14 15 16 |
# File 'lib/sendgrid4r/rest/request.rb', line 14 def get(auth, endpoint, params = nil, payload = nil, &block) execute(:get, auth, endpoint, params, payload, &block) end |
#patch(auth, endpoint, payload, &block) ⇒ Object
22 23 24 |
# File 'lib/sendgrid4r/rest/request.rb', line 22 def patch(auth, endpoint, payload, &block) execute(:patch, auth, endpoint, nil, payload, &block) end |
#post(auth, endpoint, payload = nil, &block) ⇒ Object
18 19 20 |
# File 'lib/sendgrid4r/rest/request.rb', line 18 def post(auth, endpoint, payload = nil, &block) execute(:post, auth, endpoint, nil, payload, &block) end |
#process_array_params(v) ⇒ Object
74 75 76 |
# File 'lib/sendgrid4r/rest/request.rb', line 74 def process_array_params(v) v.is_a?(Array) ? v.join(',') : v.to_s end |
#process_url_params(endpoint, params) ⇒ Object
63 64 65 66 67 68 69 70 71 72 |
# File 'lib/sendgrid4r/rest/request.rb', line 63 def process_url_params(endpoint, params) if params.nil? || params.empty? endpoint else query_string = params.collect do |k, v| "#{k}=#{CGI.escape(process_array_params(v))}" end.join('&') endpoint + "?#{query_string}" end end |
#put(auth, endpoint, payload, &block) ⇒ Object
26 27 28 |
# File 'lib/sendgrid4r/rest/request.rb', line 26 def put(auth, endpoint, payload, &block) execute(:put, auth, endpoint, nil, payload, &block) end |