sailthru-client 2.0.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.gitignore +6 -0
- data/CHANGELOG.md +31 -0
- data/Gemfile +11 -0
- data/Gemfile.lock +22 -0
- data/MIT-LICENSE +20 -0
- data/README.md +11 -4
- data/Rakefile +19 -0
- data/lib/sailthru.rb +115 -101
- data/sailthru-client.gemspec +26 -0
- data/test/fixtures/blast_delete_invalid.json +1 -0
- data/test/fixtures/blast_delete_valid.json +1 -0
- data/test/fixtures/blast_get_invalid.json +1 -0
- data/test/fixtures/blast_get_valid.json +1 -0
- data/test/fixtures/blast_post_invalid_email.json +1 -0
- data/test/fixtures/blast_post_invalid_list.json +1 -0
- data/test/fixtures/blast_post_update_valid.json +1 -0
- data/test/fixtures/blast_post_valid.json +1 -0
- data/test/fixtures/content_valid.json +1 -0
- data/test/fixtures/email_get_listed_email.json +1 -0
- data/test/fixtures/email_get_not_listed_email.json +1 -0
- data/test/fixtures/list_delete_invalid.json +1 -0
- data/test/fixtures/list_delete_valid.json +1 -0
- data/test/fixtures/list_get_all.json +14 -0
- data/test/fixtures/list_get_invalid.json +1 -0
- data/test/fixtures/list_get_invalid.txt +4 -0
- data/test/fixtures/list_get_valid.json +8 -0
- data/test/fixtures/list_get_valid.txt +3 -0
- data/test/fixtures/list_save_valid.json +8 -0
- data/test/fixtures/purchase_post_invalid_email.json +1 -0
- data/test/fixtures/purchase_post_invalid_empty_items.json +1 -0
- data/test/fixtures/purchase_post_valid_multiple_items.json +1 -0
- data/test/fixtures/purchase_post_valid_single_item.json +1 -0
- data/test/fixtures/send_cancel.json +1 -0
- data/test/fixtures/send_get_invalid.json +1 -0
- data/test/fixtures/send_get_valid.json +1 -0
- data/test/fixtures/send_post_invalid.json +1 -0
- data/test/fixtures/send_post_multiple_valid.json +1 -0
- data/test/fixtures/stat_get_invalid.json +1 -0
- data/test/fixtures/stat_get_valid.json +1 -0
- data/test/fixtures/stats_lists_invalid.json +1 -0
- data/test/fixtures/stats_lists_valid.json +1 -0
- data/test/fixtures/template_delete_invalid.json +1 -0
- data/test/fixtures/template_delete_valid.json +1 -0
- data/test/fixtures/template_invalid_get.json +1 -0
- data/test/fixtures/template_save.json +1 -0
- data/test/fixtures/template_valid_get.json +1 -0
- data/test/fixtures/user_update_post_valid.json +3 -0
- data/test/fixtures/user_update_valid.json +1 -0
- data/test/sailthru/blast_test.rb +116 -0
- data/test/sailthru/content_test.rb +36 -0
- data/test/sailthru/email_test.rb +23 -0
- data/test/sailthru/error_test.rb +30 -0
- data/test/sailthru/file_upload_test.rb +75 -0
- data/test/sailthru/helpers_test.rb +23 -0
- data/test/sailthru/list_test.rb +69 -0
- data/test/sailthru/purchase_test.rb +67 -0
- data/test/sailthru/send_test.rb +81 -0
- data/test/sailthru/stats_test.rb +53 -0
- data/test/sailthru/template_test.rb +61 -0
- data/test/test_helper.rb +68 -0
- metadata +117 -19
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ODBmMmIwZjBhOTdlZTdmZjEzMDFjZmEzYWVmYzM1MTZiZmI2N2FhOA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZjhhMTg5ZDBmNTlhODU1ZmJiZGZlYmExOGM0YWViNDk3ZjBjZDEzNg==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MWFkZmE3MzMyNWFlNzk1NTc0ZGViNmNlYzI1YjVkZjdjNTAwYzc0MzRlNmJi
|
10
|
+
ZDljM2MxMzQyYjRjOWIzMDQxYjkwZTU4NjdjYWRjZmM0ODVlNjA3OWE5OGRh
|
11
|
+
NGUxNDI2NzY0MDBhOWIzMGE4Mjg1OWJmYWI3YjVhNjFkN2ZkZjc=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NjY4NGRhMDNjMGIwYWE0NmU4MzgwM2QyYzFhNDUwMmIzNDNlZDc3MjNmYWNm
|
14
|
+
ZjQ2YjNjNTEzYzZiZjQ5MTg1YzExN2ZjMGM1YjU1OWYxNDAyMjYyYzA2MTk5
|
15
|
+
ZjYwOTA2YzUwYjQwMGQyNjhjZDhlMTYyZWUyNjBlZDI0NTg5YzU=
|
data/.gitignore
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
## 2.0.0 (Sep 6, 2013)
|
2
|
+
- Added triggers and events
|
3
|
+
- Changed push_content to handle additional parameters
|
4
|
+
- Added verification for postbacks
|
5
|
+
- Removed Horizon calls
|
6
|
+
- Remvoed create_new_user method
|
7
|
+
- Added change_email method
|
8
|
+
- Added stats_send method
|
9
|
+
|
10
|
+
## 1.14 (Feb 10, 2012)
|
11
|
+
- Remove contact API call
|
12
|
+
- Update list API call: save_list() cannot be used for saving emails
|
13
|
+
- Added get_lists() for retrieving all available lists information
|
14
|
+
|
15
|
+
## 1.13 (September 8, 2011)
|
16
|
+
- Explicitly convert Exception to string for Ruby 1.9 (Robert Coker)
|
17
|
+
- Update purchase() call
|
18
|
+
|
19
|
+
|
20
|
+
## 1.12 (July 22, 2011)
|
21
|
+
- Fix send / multisend api call bug
|
22
|
+
|
23
|
+
## 1.11 (June 15, 2011)
|
24
|
+
- Job API docs
|
25
|
+
- SSL verification disabled
|
26
|
+
- Typed variable values can be passed now
|
27
|
+
|
28
|
+
## 1.10 (May 14, 2011)
|
29
|
+
- Support for Job API call
|
30
|
+
- Support for typed parameters
|
31
|
+
- By default, make request to https://api.sailthru.com so, default constructor call would be Sailthru::SailthruClient.new("api-key", "api_secret")
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
fakeweb (1.3.0)
|
5
|
+
json (1.8.1)
|
6
|
+
metaclass (0.0.4)
|
7
|
+
minitest (5.3.4)
|
8
|
+
mocha (0.14.0)
|
9
|
+
metaclass (~> 0.0.1)
|
10
|
+
multipart-post (2.0.0)
|
11
|
+
rake (10.3.2)
|
12
|
+
|
13
|
+
PLATFORMS
|
14
|
+
ruby
|
15
|
+
|
16
|
+
DEPENDENCIES
|
17
|
+
fakeweb
|
18
|
+
json
|
19
|
+
minitest
|
20
|
+
mocha
|
21
|
+
multipart-post
|
22
|
+
rake
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 Sailthru, Inc., http://www.sailthru.com/
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,13 +1,20 @@
|
|
1
|
-
sailthru-ruby-client
|
2
|
-
====================
|
1
|
+
# sailthru-ruby-client
|
3
2
|
|
4
3
|
For installation instructions, documentation, and examples please visit:
|
5
4
|
[http://getstarted.sailthru.com/developers/api-libraries/ruby](http://getstarted.sailthru.com/developers/api-libraries/ruby)
|
6
5
|
|
7
6
|
A simple client library to remotely access the `Sailthru REST API` as per [http://getstarted.sailthru.com/api](http://getstarted.sailthru.com/developers/api)
|
8
7
|
|
9
|
-
By default, it will make
|
8
|
+
By default, it will make requests in `JSON` format.
|
9
|
+
|
10
|
+
## Installation
|
10
11
|
|
11
|
-
### Installing from rubygems.org (Tested with Ruby 1.8.7)
|
12
12
|
$ gem install sailthru-client
|
13
13
|
|
14
|
+
## Requirements
|
15
|
+
|
16
|
+
This gem supports Ruby 1.9.3 and up.
|
17
|
+
|
18
|
+
## License
|
19
|
+
|
20
|
+
Please see MIT-LICENSE for license.
|
data/Rakefile
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/clean'
|
4
|
+
require 'rdoc/task'
|
5
|
+
|
6
|
+
CLOBBER.include 'pkg'
|
7
|
+
|
8
|
+
task :default => :test
|
9
|
+
|
10
|
+
Rake::TestTask.new do |t|
|
11
|
+
t.libs = %w(lib test)
|
12
|
+
t.test_files = FileList["test/**/*_test.rb"]
|
13
|
+
end
|
14
|
+
|
15
|
+
Rake::RDocTask.new do |rd|
|
16
|
+
rd.main = "README.md"
|
17
|
+
rd.rdoc_files.include("README.md", "lib/**/*.rb")
|
18
|
+
rd.rdoc_dir = "rdoc"
|
19
|
+
end
|
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 = '3.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:
|
@@ -138,13 +142,14 @@ module Sailthru
|
|
138
142
|
# test: send as test email (subject line will be marked, will not count towards stats)
|
139
143
|
# returns:
|
140
144
|
# Hash, response data from server
|
141
|
-
def send_email(template_name, email, vars={}, options = {}, schedule_time = nil)
|
145
|
+
def send_email(template_name, email, vars={}, options = {}, schedule_time = nil, limit = {})
|
142
146
|
post = {}
|
143
147
|
post[:template] = template_name
|
144
148
|
post[:email] = email
|
145
149
|
post[:vars] = vars if vars.length >= 1
|
146
150
|
post[:options] = options if options.length >= 1
|
147
151
|
post[:schedule_time] = schedule_time if !schedule_time.nil?
|
152
|
+
post[:limit] = limit if limit.length >= 1
|
148
153
|
return self.api_post(:send, post)
|
149
154
|
end
|
150
155
|
|
@@ -321,7 +326,7 @@ module Sailthru
|
|
321
326
|
data[:templates] = templates unless templates.empty?
|
322
327
|
self.api_post(:email, data)
|
323
328
|
end
|
324
|
-
|
329
|
+
|
325
330
|
# params:
|
326
331
|
# new_email, String
|
327
332
|
# old_email, String
|
@@ -336,7 +341,7 @@ module Sailthru
|
|
336
341
|
data[:change_email] = old_email
|
337
342
|
self.api_post(:email, data)
|
338
343
|
end
|
339
|
-
|
344
|
+
|
340
345
|
# params:
|
341
346
|
# template_name, String
|
342
347
|
# returns:
|
@@ -384,6 +389,7 @@ module Sailthru
|
|
384
389
|
return false unless params[:action] == :verify
|
385
390
|
|
386
391
|
sig = params.delete(:sig)
|
392
|
+
sig = sig.delete_if {|key, value| key == :controller}
|
387
393
|
return false unless sig == get_signature_hash(params, @secret)
|
388
394
|
|
389
395
|
_send = self.get_send(params[:send_id])
|
@@ -409,13 +415,14 @@ module Sailthru
|
|
409
415
|
return false unless params[:action] == 'optout'
|
410
416
|
|
411
417
|
sig = params.delete(:sig)
|
418
|
+
sig = sig.delete_if {|key, value| key == :controller}
|
412
419
|
return false unless sig == get_signature_hash(params, @secret)
|
413
420
|
return true
|
414
421
|
else
|
415
422
|
return false
|
416
423
|
end
|
417
424
|
end
|
418
|
-
|
425
|
+
|
419
426
|
# params:
|
420
427
|
# params, Hash
|
421
428
|
# request, String
|
@@ -428,6 +435,7 @@ module Sailthru
|
|
428
435
|
return false unless params[:action] == 'hardbounce'
|
429
436
|
|
430
437
|
sig = params.delete(:sig)
|
438
|
+
sig = sig.delete_if {|key, value| key == :controller}
|
431
439
|
return false unless sig == get_signature_hash(params, @secret)
|
432
440
|
return true
|
433
441
|
else
|
@@ -575,16 +583,16 @@ module Sailthru
|
|
575
583
|
# params
|
576
584
|
# list, String
|
577
585
|
#
|
578
|
-
# Get information about a list.
|
586
|
+
# Get information about a list.
|
579
587
|
def get_list(list)
|
580
588
|
return api_get(:list, {:list => list})
|
581
589
|
end
|
582
590
|
|
583
591
|
# params
|
584
592
|
#
|
585
|
-
# Get information about all lists
|
593
|
+
# Get information about all lists
|
586
594
|
def get_lists()
|
587
|
-
|
595
|
+
return api_get(:list, {})
|
588
596
|
end
|
589
597
|
|
590
598
|
# params
|
@@ -594,7 +602,7 @@ module Sailthru
|
|
594
602
|
def save_list(list, options = {})
|
595
603
|
data = options
|
596
604
|
data[:list] = list
|
597
|
-
|
605
|
+
return api_post(:list, data)
|
598
606
|
end
|
599
607
|
|
600
608
|
# params
|
@@ -669,42 +677,42 @@ module Sailthru
|
|
669
677
|
end
|
670
678
|
api_post(:job, data, binary_key)
|
671
679
|
end
|
672
|
-
|
680
|
+
|
673
681
|
# params
|
674
682
|
# emails, String | Array
|
675
|
-
# implementation for import_job
|
676
|
-
def process_import_job(list, emails, report_email = nil, postback_url = nil)
|
677
|
-
data =
|
683
|
+
# implementation for import_job
|
684
|
+
def process_import_job(list, emails, report_email = nil, postback_url = nil, options = {})
|
685
|
+
data = options
|
678
686
|
data['list'] = list
|
679
687
|
data['emails'] = Array(emails).join(',')
|
680
688
|
process_job(:import, data, report_email, postback_url)
|
681
689
|
end
|
682
|
-
|
690
|
+
|
683
691
|
# implementation for import job using file upload
|
684
|
-
def process_import_job_from_file(list, file_path, report_email = nil, postback_url = nil)
|
685
|
-
data =
|
692
|
+
def process_import_job_from_file(list, file_path, report_email = nil, postback_url = nil, options = {})
|
693
|
+
data = options
|
686
694
|
data['list'] = list
|
687
695
|
data['file'] = file_path
|
688
696
|
process_job(:import, data, report_email, postback_url, 'file')
|
689
697
|
end
|
690
698
|
|
691
699
|
# implementation for update job using file upload
|
692
|
-
def process_update_job_from_file(file_path, report_email = nil, postback_url = nil)
|
693
|
-
data =
|
700
|
+
def process_update_job_from_file(file_path, report_email = nil, postback_url = nil, options = {})
|
701
|
+
data = options
|
694
702
|
data['file'] = file_path
|
695
703
|
process_job(:update, data, report_email, postback_url, 'file')
|
696
704
|
end
|
697
705
|
|
698
706
|
# implementation for snapshot job
|
699
|
-
def process_snapshot_job(query = {}, report_email = nil, postback_url = nil)
|
700
|
-
data =
|
707
|
+
def process_snapshot_job(query = {}, report_email = nil, postback_url = nil, options = {})
|
708
|
+
data = options
|
701
709
|
data['query'] = query
|
702
710
|
process_job(:snapshot, data, report_email, postback_url)
|
703
711
|
end
|
704
712
|
|
705
713
|
# implementation for export list job
|
706
|
-
def process_export_list_job(list, report_email = nil, postback_url = nil)
|
707
|
-
data =
|
714
|
+
def process_export_list_job(list, report_email = nil, postback_url = nil, options = {})
|
715
|
+
data = options
|
708
716
|
data['list'] = list
|
709
717
|
process_job(:export_list_data, data, report_email, postback_url)
|
710
718
|
end
|
@@ -716,94 +724,94 @@ module Sailthru
|
|
716
724
|
|
717
725
|
# Get user by Sailthru ID
|
718
726
|
def get_user_by_sid(id, fields = {})
|
719
|
-
|
727
|
+
api_get(:user, {'id' => id, 'fields' => fields})
|
720
728
|
end
|
721
729
|
|
722
730
|
# Get user by specified key
|
723
731
|
def get_user_by_key(id, key, fields = {})
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
732
|
+
data = {
|
733
|
+
'id' => id,
|
734
|
+
'key' => key,
|
735
|
+
'fields' => fields
|
736
|
+
}
|
737
|
+
api_get(:user, data)
|
730
738
|
end
|
731
739
|
|
732
740
|
# Create new user, or update existing user
|
733
741
|
def save_user(id, options = {})
|
734
|
-
|
735
|
-
|
736
|
-
|
742
|
+
data = options
|
743
|
+
data['id'] = id
|
744
|
+
api_post(:user, data)
|
737
745
|
end
|
738
746
|
|
739
|
-
|
740
|
-
|
747
|
+
# params
|
748
|
+
# Get an existing trigger
|
741
749
|
def get_triggers()
|
742
|
-
|
750
|
+
api_get(:trigger, {})
|
743
751
|
end
|
744
752
|
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
753
|
+
# params
|
754
|
+
# template, String
|
755
|
+
# trigger_id, String
|
756
|
+
# Get an existing trigger
|
749
757
|
def get_trigger_by_template(template, trigger_id = nil)
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
|
758
|
+
data = {}
|
759
|
+
data['template'] = template
|
760
|
+
if trigger_id != nil then data['trigger_id'] = trigger_id end
|
761
|
+
api_get(:trigger, data)
|
754
762
|
end
|
755
763
|
|
756
|
-
|
757
|
-
|
758
|
-
|
764
|
+
# params
|
765
|
+
# event, String
|
766
|
+
# Get an existing trigger
|
759
767
|
def get_trigger_by_event(event)
|
760
|
-
|
761
|
-
|
762
|
-
|
763
|
-
end
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
|
769
|
-
|
770
|
-
|
771
|
-
|
768
|
+
data = {}
|
769
|
+
data['event'] = event
|
770
|
+
api_get(:trigger, data)
|
771
|
+
end
|
772
|
+
|
773
|
+
# params
|
774
|
+
# template, String
|
775
|
+
# time, String
|
776
|
+
# time_unit, String
|
777
|
+
# event, String
|
778
|
+
# zephyr, String
|
779
|
+
# Create or update a trigger
|
772
780
|
def post_template_trigger(template, time, time_unit, event, zephyr)
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
-
|
780
|
-
end
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
781
|
+
data = {}
|
782
|
+
data['template'] = template
|
783
|
+
data['time'] = time
|
784
|
+
data['time_unit'] = time_unit
|
785
|
+
data['event'] = event
|
786
|
+
data['zephyr'] = zephyr
|
787
|
+
api_post(:trigger, data)
|
788
|
+
end
|
789
|
+
|
790
|
+
# params
|
791
|
+
# template, String
|
792
|
+
# time, String
|
793
|
+
# time_unit, String
|
794
|
+
# zephyr, String
|
795
|
+
# Create or update a trigger
|
788
796
|
def post_event_trigger(event, time, time_unit, zephyr)
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
end
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
797
|
+
data = {}
|
798
|
+
data['time'] = time
|
799
|
+
data['time_unit'] = time_unit
|
800
|
+
data['event'] = event
|
801
|
+
data['zephyr'] = zephyr
|
802
|
+
api_post(:trigger, data)
|
803
|
+
end
|
804
|
+
|
805
|
+
# params
|
806
|
+
# id, String
|
807
|
+
# event, String
|
808
|
+
# options, Hash (Can contain vars, Hash and/or key)
|
809
|
+
# Notify Sailthru of an Event
|
802
810
|
def post_event(id, event, options = {})
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
811
|
+
data = options
|
812
|
+
data['id'] = id
|
813
|
+
data['event'] = event
|
814
|
+
api_post(:event, data)
|
807
815
|
end
|
808
816
|
|
809
817
|
# Perform API GET request
|
@@ -870,7 +878,7 @@ module Sailthru
|
|
870
878
|
|
871
879
|
if binary_data.is_a?(StringIO)
|
872
880
|
data[binary_key] = UploadIO.new(
|
873
|
-
binary_data, "text/plain"
|
881
|
+
binary_data, "text/plain", "local.path"
|
874
882
|
)
|
875
883
|
else
|
876
884
|
data[binary_key] = UploadIO.new(
|
@@ -924,12 +932,18 @@ module Sailthru
|
|
924
932
|
if _uri.scheme == 'https'
|
925
933
|
http.use_ssl = true
|
926
934
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE if @verify_ssl != true # some openSSL client doesn't work without doing this
|
935
|
+
http.ssl_timeout = @opts[:http_ssl_timeout] || 5
|
927
936
|
end
|
937
|
+
http.open_timeout = @opts[:http_open_timeout] || 5
|
938
|
+
http.read_timeout = @opts[:http_read_timeout] || 10
|
939
|
+
http.close_on_empty_response = @opts[:http_close_on_empty_response] || true
|
928
940
|
|
929
941
|
response = http.start {
|
930
942
|
http.request(req)
|
931
943
|
}
|
932
944
|
|
945
|
+
rescue Timeout::Error, Errno::ETIMEDOUT => e
|
946
|
+
raise SailthruUnavailableException.new(["Timed out: #{_uri}", e.inspect, e.backtrace].join("\n"));
|
933
947
|
rescue Exception => e
|
934
948
|
raise SailthruClientException.new(["Unable to open stream: #{_uri}", e.inspect, e.backtrace].join("\n"));
|
935
949
|
end
|
@@ -942,18 +956,18 @@ module Sailthru
|
|
942
956
|
end
|
943
957
|
|
944
958
|
def http_multipart_request(uri, data)
|
945
|
-
|
959
|
+
Net::HTTP::Post::Multipart.new url.path,
|
946
960
|
"file" => UploadIO.new(data['file'], "application/octet-stream")
|
947
961
|
end
|
948
962
|
|
949
963
|
def prepare_json_payload(data)
|
950
|
-
|
951
|
-
|
952
|
-
|
953
|
-
|
954
|
-
|
955
|
-
|
956
|
-
|
964
|
+
payload = {
|
965
|
+
:api_key => @api_key,
|
966
|
+
:format => 'json', #<3 XML
|
967
|
+
:json => data.to_json
|
968
|
+
}
|
969
|
+
payload[:sig] = get_signature_hash(payload, @secret)
|
970
|
+
payload
|
957
971
|
end
|
958
972
|
end
|
959
973
|
end
|