danest-sailthru-client 1.16 → 2.0.0
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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/sailthru.rb +35 -22
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 22e99cd96c83b06498bd6bdb4e872178927fb480
|
4
|
+
data.tar.gz: f96e18491e65d1f290b24705e129599f0ce6b6c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db9bddf036e7faf8ae917a812ca24d57689723825bf7572c9ba7d1322c4d4e2a5cd02e828b4060bbe8a35e8c882591237e165d23057a4d9cb8fe7e49bca7be99
|
7
|
+
data.tar.gz: f00b3c0aad2636a4be59d5d3f20e287f4191507a6e6d297f5cbe65d466594fc505fa71d92a449f2dcc33eba35b3bbd0820d3ccd544d65a9f2e6b46570af02481
|
data/README.md
CHANGED
@@ -6,7 +6,7 @@ sailthru-ruby-client
|
|
6
6
|
For installation instructions, documentation, and examples please visit:
|
7
7
|
[http://getstarted.sailthru.com/developers/api-libraries/ruby](http://getstarted.sailthru.com/developers/api-libraries/ruby)
|
8
8
|
|
9
|
-
A simple client library to remotely access the `Sailthru REST API` as per [http://getstarted.sailthru.com/
|
9
|
+
A simple client library to remotely access the `Sailthru REST API` as per [http://getstarted.sailthru.com/api](http://getstarted.sailthru.com/developers/api)
|
10
10
|
|
11
11
|
By default, it will make request in `JSON` format.
|
12
12
|
|
data/lib/sailthru.rb
CHANGED
@@ -9,11 +9,14 @@ require 'net/http/post/multipart'
|
|
9
9
|
|
10
10
|
module Sailthru
|
11
11
|
|
12
|
-
Version = VERSION = '
|
12
|
+
Version = VERSION = '2.0.0'
|
13
13
|
|
14
14
|
class SailthruClientException < Exception
|
15
15
|
end
|
16
16
|
|
17
|
+
class SailthruUnavailableException < Exception
|
18
|
+
end
|
19
|
+
|
17
20
|
module Helpers
|
18
21
|
# params:
|
19
22
|
# params, Hash
|
@@ -102,13 +105,14 @@ module Sailthru
|
|
102
105
|
# api_uri, String
|
103
106
|
#
|
104
107
|
# Instantiate a new client; constructor optionally takes overrides for key/secret/uri and proxy server settings.
|
105
|
-
def initialize(api_key, secret, api_uri=nil, proxy_host=nil, proxy_port=nil)
|
108
|
+
def initialize(api_key, secret, api_uri=nil, proxy_host=nil, proxy_port=nil, opts={})
|
106
109
|
@api_key = api_key
|
107
110
|
@secret = secret
|
108
111
|
@api_uri = if api_uri.nil? then 'https://api.sailthru.com' else api_uri end
|
109
112
|
@proxy_host = proxy_host
|
110
113
|
@proxy_port = proxy_port
|
111
114
|
@verify_ssl = true
|
115
|
+
@opts = opts
|
112
116
|
end
|
113
117
|
|
114
118
|
# params:
|
@@ -126,7 +130,7 @@ module Sailthru
|
|
126
130
|
# http://docs.sailthru.com/api/send
|
127
131
|
def send(template_name, email, vars={}, options = {}, schedule_time = nil)
|
128
132
|
warn "[DEPRECATION] `send` is deprecated. Please use `send_email` instead."
|
129
|
-
send_email(template_name, email, vars
|
133
|
+
send_email(template_name, email, vars, options, schedule_time)
|
130
134
|
end
|
131
135
|
|
132
136
|
# params:
|
@@ -321,7 +325,7 @@ module Sailthru
|
|
321
325
|
data[:templates] = templates unless templates.empty?
|
322
326
|
self.api_post(:email, data)
|
323
327
|
end
|
324
|
-
|
328
|
+
|
325
329
|
# params:
|
326
330
|
# new_email, String
|
327
331
|
# old_email, String
|
@@ -336,7 +340,7 @@ module Sailthru
|
|
336
340
|
data[:change_email] = old_email
|
337
341
|
self.api_post(:email, data)
|
338
342
|
end
|
339
|
-
|
343
|
+
|
340
344
|
# params:
|
341
345
|
# template_name, String
|
342
346
|
# returns:
|
@@ -384,6 +388,7 @@ module Sailthru
|
|
384
388
|
return false unless params[:action] == :verify
|
385
389
|
|
386
390
|
sig = params.delete(:sig)
|
391
|
+
sig = sig.delete_if {|key, value| key == :controller}
|
387
392
|
return false unless sig == get_signature_hash(params, @secret)
|
388
393
|
|
389
394
|
_send = self.get_send(params[:send_id])
|
@@ -406,16 +411,17 @@ module Sailthru
|
|
406
411
|
if request.post?
|
407
412
|
[:action, :email, :sig].each { |key| return false unless params.has_key?(key) }
|
408
413
|
|
409
|
-
return false unless params[:action] ==
|
414
|
+
return false unless params[:action] == 'optout'
|
410
415
|
|
411
416
|
sig = params.delete(:sig)
|
417
|
+
sig = sig.delete_if {|key, value| key == :controller}
|
412
418
|
return false unless sig == get_signature_hash(params, @secret)
|
413
419
|
return true
|
414
420
|
else
|
415
421
|
return false
|
416
422
|
end
|
417
423
|
end
|
418
|
-
|
424
|
+
|
419
425
|
# params:
|
420
426
|
# params, Hash
|
421
427
|
# request, String
|
@@ -425,9 +431,10 @@ module Sailthru
|
|
425
431
|
if request.post?
|
426
432
|
[:action, :email, :sig].each { |key| return false unless params.has_key?(key) }
|
427
433
|
|
428
|
-
return false unless params[:action] ==
|
434
|
+
return false unless params[:action] == 'hardbounce'
|
429
435
|
|
430
436
|
sig = params.delete(:sig)
|
437
|
+
sig = sig.delete_if {|key, value| key == :controller}
|
431
438
|
return false unless sig == get_signature_hash(params, @secret)
|
432
439
|
return true
|
433
440
|
else
|
@@ -586,14 +593,14 @@ module Sailthru
|
|
586
593
|
# params
|
587
594
|
# list, String
|
588
595
|
#
|
589
|
-
# Get information about a list.
|
596
|
+
# Get information about a list.
|
590
597
|
def get_list(list)
|
591
598
|
return api_get(:list, {:list => list})
|
592
599
|
end
|
593
600
|
|
594
601
|
# params
|
595
602
|
#
|
596
|
-
# Get information about all lists
|
603
|
+
# Get information about all lists
|
597
604
|
def get_lists()
|
598
605
|
return api_get(:list, {})
|
599
606
|
end
|
@@ -680,42 +687,42 @@ module Sailthru
|
|
680
687
|
end
|
681
688
|
api_post(:job, data, binary_key)
|
682
689
|
end
|
683
|
-
|
690
|
+
|
684
691
|
# params
|
685
692
|
# emails, String | Array
|
686
|
-
# implementation for import_job
|
687
|
-
def process_import_job(list, emails, report_email = nil, postback_url = nil)
|
688
|
-
data =
|
693
|
+
# implementation for import_job
|
694
|
+
def process_import_job(list, emails, report_email = nil, postback_url = nil, options = {})
|
695
|
+
data = options
|
689
696
|
data['list'] = list
|
690
697
|
data['emails'] = Array(emails).join(',')
|
691
698
|
process_job(:import, data, report_email, postback_url)
|
692
699
|
end
|
693
700
|
|
694
701
|
# implementation for import job using file upload
|
695
|
-
def process_import_job_from_file(list, file_path, report_email = nil, postback_url = nil)
|
696
|
-
data =
|
702
|
+
def process_import_job_from_file(list, file_path, report_email = nil, postback_url = nil, options = {})
|
703
|
+
data = options
|
697
704
|
data['list'] = list
|
698
705
|
data['file'] = file_path
|
699
706
|
process_job(:import, data, report_email, postback_url, 'file')
|
700
707
|
end
|
701
708
|
|
702
709
|
# implementation for update job using file upload
|
703
|
-
def process_update_job_from_file(file_path, report_email = nil, postback_url = nil)
|
704
|
-
data =
|
710
|
+
def process_update_job_from_file(file_path, report_email = nil, postback_url = nil, options = {})
|
711
|
+
data = options
|
705
712
|
data['file'] = file_path
|
706
713
|
process_job(:update, data, report_email, postback_url, 'file')
|
707
714
|
end
|
708
715
|
|
709
716
|
# implementation for snapshot job
|
710
|
-
def process_snapshot_job(query = {}, report_email = nil, postback_url = nil)
|
711
|
-
data =
|
717
|
+
def process_snapshot_job(query = {}, report_email = nil, postback_url = nil, options = {})
|
718
|
+
data = options
|
712
719
|
data['query'] = query
|
713
720
|
process_job(:snapshot, data, report_email, postback_url)
|
714
721
|
end
|
715
722
|
|
716
723
|
# implementation for export list job
|
717
|
-
def process_export_list_job(list, report_email = nil, postback_url = nil)
|
718
|
-
data =
|
724
|
+
def process_export_list_job(list, report_email = nil, postback_url = nil, options = {})
|
725
|
+
data = options
|
719
726
|
data['list'] = list
|
720
727
|
process_job(:export_list_data, data, report_email, postback_url)
|
721
728
|
end
|
@@ -935,12 +942,18 @@ module Sailthru
|
|
935
942
|
if _uri.scheme == 'https'
|
936
943
|
http.use_ssl = true
|
937
944
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE if @verify_ssl != true # some openSSL client doesn't work without doing this
|
945
|
+
http.ssl_timeout = @opts[:http_ssl_timeout] || 5
|
938
946
|
end
|
947
|
+
http.open_timeout = @opts[:http_open_timeout] || 5
|
948
|
+
http.read_timeout = @opts[:http_read_timeout] || 10
|
949
|
+
http.close_on_empty_response = @opts[:http_close_on_empty_response] || true
|
939
950
|
|
940
951
|
response = http.start {
|
941
952
|
http.request(req)
|
942
953
|
}
|
943
954
|
|
955
|
+
rescue Timeout::Error, Errno::ETIMEDOUT => e
|
956
|
+
raise SailthruUnavailableException.new(["Timed out: #{_uri}", e.inspect, e.backtrace].join("\n"));
|
944
957
|
rescue Exception => e
|
945
958
|
raise SailthruClientException.new(["Unable to open stream: #{_uri}", e.inspect, e.backtrace].join("\n"));
|
946
959
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: danest-sailthru-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Urrutia
|
@@ -110,9 +110,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
110
|
version: '0'
|
111
111
|
requirements: []
|
112
112
|
rubyforge_project:
|
113
|
-
rubygems_version: 2.
|
113
|
+
rubygems_version: 2.1.3
|
114
114
|
signing_key:
|
115
115
|
specification_version: 3
|
116
116
|
summary: A simple client library to remotely access the Sailthru REST API. Updated
|
117
117
|
with latest git master.
|
118
118
|
test_files: []
|
119
|
+
has_rdoc:
|