sailthru-client 2.0.0 → 3.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 +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
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class HelpersTest < Minitest::Test
|
4
|
+
describe "Helper tests" do
|
5
|
+
it "converts simple hash to array" do
|
6
|
+
expected_array = ["xyz", "my_secret", "my template"].sort
|
7
|
+
simple_hash = {'api_key'=> expected_array[0], 'secret'=> expected_array[1], 'template'=> expected_array[2]}
|
8
|
+
converted_array = extract_param_values(simple_hash).sort
|
9
|
+
assert_equal converted_array[0], expected_array[0]
|
10
|
+
assert_equal converted_array[1], expected_array[1]
|
11
|
+
assert_equal converted_array[2], expected_array[2]
|
12
|
+
assert_equal converted_array.length, expected_array.length
|
13
|
+
end
|
14
|
+
|
15
|
+
it "converts nested hash to array" do
|
16
|
+
nested_hash = {"name" => "Unix", "myvar" => [1111, 2], "api_key" => "363636avdsfdfd", "myvar2" => {"myvar3" => "hello", "myvar4" => ["hello", "world"]}}
|
17
|
+
expected_array = ["Unix", "1111", "2", "363636avdsfdfd", "hello", "hello", "world"].sort
|
18
|
+
converted_array = extract_param_values(nested_hash).sort
|
19
|
+
assert((expected_array == converted_array))
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class ListTest < Minitest::Test
|
4
|
+
describe "API Call: list" do
|
5
|
+
before do
|
6
|
+
api_url = 'http://api.sailthru.com'
|
7
|
+
@secret = 'my_secret'
|
8
|
+
@api_key = 'my_api_key'
|
9
|
+
@sailthru_client = Sailthru::SailthruClient.new(@api_key, @secret, api_url)
|
10
|
+
@api_call_url = sailthru_api_call_url(api_url, 'list')
|
11
|
+
end
|
12
|
+
|
13
|
+
it "can get all lists meta data" do
|
14
|
+
query_string = create_json_payload(@api_key, @secret, {})
|
15
|
+
stub_get(@api_call_url + '?' + query_string, 'list_get_all.json')
|
16
|
+
response = @sailthru_client.get_lists()
|
17
|
+
assert_equal(response['lists'].length, 2)
|
18
|
+
refute_nil(response['lists'][0]['name'])
|
19
|
+
end
|
20
|
+
|
21
|
+
it "can get list information" do
|
22
|
+
list = 'list1'
|
23
|
+
query_string = create_json_payload(@api_key, @secret, {'list' => list})
|
24
|
+
stub_get(@api_call_url + '?' + query_string, 'list_get_valid.json')
|
25
|
+
response = @sailthru_client.get_list(list)
|
26
|
+
assert_equal(response['list'], list)
|
27
|
+
refute_nil response['type']
|
28
|
+
end
|
29
|
+
|
30
|
+
it "gets empty response for invalid list in json format" do
|
31
|
+
list = 'invalidlistname'
|
32
|
+
params = {:list => list}
|
33
|
+
query_string = create_json_payload(@api_key, @secret, params)
|
34
|
+
stub_get(@api_call_url + '?' + query_string, 'list_get_invalid.json')
|
35
|
+
response = @sailthru_client.get_list(list)
|
36
|
+
refute_nil response['errormsg']
|
37
|
+
refute_nil response['error']
|
38
|
+
end
|
39
|
+
|
40
|
+
it "can save list information" do
|
41
|
+
list = 'new-list2'
|
42
|
+
primary = 1
|
43
|
+
options = {
|
44
|
+
'primary' => primary
|
45
|
+
}
|
46
|
+
stub_post(@api_call_url, 'list_save_valid.json')
|
47
|
+
response = @sailthru_client.save_list(list, options)
|
48
|
+
assert_equal(response['list'], list)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "cannot delete invalid list" do
|
52
|
+
list = 'invalid-list'
|
53
|
+
params = {'list' => list}
|
54
|
+
query_string = create_json_payload(@api_key, @secret, params)
|
55
|
+
stub_delete(@api_call_url + '?' + query_string, 'list_delete_invalid.json')
|
56
|
+
response = @sailthru_client.delete_list(list)
|
57
|
+
refute_nil response['error']
|
58
|
+
end
|
59
|
+
|
60
|
+
it "can delete valid list" do
|
61
|
+
list = 'my-list'
|
62
|
+
params = {:list => list}
|
63
|
+
query_string = create_json_payload(@api_key, @secret, params)
|
64
|
+
stub_delete(@api_call_url + '?' + query_string, 'list_delete_valid.json')
|
65
|
+
response = @sailthru_client.delete_list(list)
|
66
|
+
assert_equal(list, response['list'])
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class PurchaseTest < Minitest::Test
|
4
|
+
describe "API Call: purchase" do
|
5
|
+
before do
|
6
|
+
api_url = 'http://api.sailthru.com'
|
7
|
+
@sailthru_client = Sailthru::SailthruClient.new("my_api_key", "my_secret", api_url)
|
8
|
+
@api_call_url = sailthru_api_call_url(api_url, 'purchase')
|
9
|
+
end
|
10
|
+
|
11
|
+
it "can post purchase items with valid email and single items array" do
|
12
|
+
email = 'praj@sailthru.com'
|
13
|
+
item_price1 = 1099
|
14
|
+
item_qty1 = 22
|
15
|
+
total_price = item_price1 * item_qty1
|
16
|
+
total_qty = 22
|
17
|
+
items = [{'qty' => item_qty1, 'title' => 'High-Impact Water Bottle', 'price' => item_price1, 'id' => '234', 'url' => 'http://example.com/234/high-impact-water-bottle'}]
|
18
|
+
stub_post(@api_call_url, 'purchase_post_valid_single_item.json')
|
19
|
+
response = @sailthru_client.purchase(email, items)
|
20
|
+
assert_equal total_price, response['purchase']['price']
|
21
|
+
assert_equal total_qty, response['purchase']['qty']
|
22
|
+
end
|
23
|
+
|
24
|
+
it "can post purchase items with valid email and multiple items array" do
|
25
|
+
email = 'praj@sailthru.com'
|
26
|
+
items = []
|
27
|
+
|
28
|
+
item_price1 = 1099
|
29
|
+
item_qty1 = 22
|
30
|
+
items.push({'qty' => item_qty1, 'title' => 'High-Impact Water Bottle', 'price' => item_price1, 'id' => '234', 'url' => 'http://example.com/234/high-impact-water-bottle'})
|
31
|
+
|
32
|
+
item_price2 = 500
|
33
|
+
item_qty2 = 2
|
34
|
+
items.push({'qty' => item_qty2, 'title' => 'Lorem Ispum', 'price' => item_price2, 'id' => '2304', 'url' => 'http://example.com/2304/lorem-ispum'})
|
35
|
+
|
36
|
+
total_qty = 0
|
37
|
+
total_price = 0
|
38
|
+
items.each do |v|
|
39
|
+
total_price += v['price'] * v['qty']
|
40
|
+
total_qty += v['qty']
|
41
|
+
end
|
42
|
+
|
43
|
+
stub_post(@api_call_url, 'purchase_post_valid_multiple_items.json')
|
44
|
+
response = @sailthru_client.purchase(email, items)
|
45
|
+
assert_equal total_price, response['purchase']['price']
|
46
|
+
assert_equal total_qty, response['purchase']['qty']
|
47
|
+
end
|
48
|
+
|
49
|
+
it "cannot post purchase items with empty items array" do
|
50
|
+
email = 'praj@sailthru.com'
|
51
|
+
items = [{'qty' => '22', 'title' => 'High-Impact Water Bottle', 'price' => '1099', 'id' => '234', 'url' => 'http://example.com/234/high-impact-water-bottle'}]
|
52
|
+
stub_post(@api_call_url, 'purchase_post_invalid_empty_items.json')
|
53
|
+
response = @sailthru_client.purchase(email, items)
|
54
|
+
refute_nil response['errormsg']
|
55
|
+
refute_nil response['error']
|
56
|
+
end
|
57
|
+
|
58
|
+
it "cannot post purchase items with invalid email" do
|
59
|
+
invalid_email = 'prajsailthru.com'
|
60
|
+
items = [{'qty' => '22', 'title' => 'High-Impact Water Bottle', 'price' => '1099', 'id' => '234', 'url' => 'http://example.com/234/high-impact-water-bottle'}]
|
61
|
+
stub_post(@api_call_url, 'purchase_post_invalid_email.json')
|
62
|
+
response = @sailthru_client.purchase(invalid_email, items)
|
63
|
+
refute_nil response['errormsg']
|
64
|
+
refute_nil response['error']
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class SendTest < Minitest::Test
|
4
|
+
describe "API Call: send" do
|
5
|
+
before do
|
6
|
+
api_url = 'http://api.sailthru.com'
|
7
|
+
@secret = 'my_secret'
|
8
|
+
@api_key = 'my_api_key'
|
9
|
+
@sailthru_client = Sailthru::SailthruClient.new("my_api_key", "my_secret", api_url)
|
10
|
+
@api_call_url = sailthru_api_call_url(api_url, 'send')
|
11
|
+
end
|
12
|
+
|
13
|
+
it "can get the status of a send when send_id is valid" do
|
14
|
+
valid_send_id = "TT1ClGdj2bRHAAP6"
|
15
|
+
#query_string = create_json_payload(@api_key, @secret, {:send_id => valid_send_id})
|
16
|
+
params = {
|
17
|
+
'send_id' => valid_send_id
|
18
|
+
}
|
19
|
+
query_string = create_json_payload(@api_key, @secret, params)
|
20
|
+
stub_get(@api_call_url + '?' + query_string , 'send_get_valid.json')
|
21
|
+
response = @sailthru_client.get_send(valid_send_id)
|
22
|
+
assert_equal valid_send_id, response['send_id']
|
23
|
+
end
|
24
|
+
|
25
|
+
it "can get send error message when send_id is invalid" do
|
26
|
+
invalid_send_id = "aaaaTT1ClGdj2bRHAAP6"
|
27
|
+
query_string = create_json_payload(@api_key, @secret, {'send_id' => invalid_send_id})
|
28
|
+
stub_get(@api_call_url + '?' + query_string, 'send_get_invalid.json')
|
29
|
+
response = @sailthru_client.get_send(invalid_send_id)
|
30
|
+
assert_equal 12, response['error']
|
31
|
+
end
|
32
|
+
|
33
|
+
it "can post send with valid template name and email using deprecated 'send' method" do
|
34
|
+
template_name = 'default'
|
35
|
+
email = 'example@example.com'
|
36
|
+
stub_post(@api_call_url, 'send_get_valid.json')
|
37
|
+
response = @sailthru_client.send template_name, email, {"name" => "Unix", "myvar" => [1111,2,3], "mycomplexvar" => {"tags" => ["obama", "aaa", "c"]}}
|
38
|
+
assert_equal template_name, response['template']
|
39
|
+
end
|
40
|
+
|
41
|
+
it "cannot post send with invalid template name and/or email using deprecated 'send' method" do
|
42
|
+
template_name = 'invalid-template'
|
43
|
+
email = 'example@example.com'
|
44
|
+
stub_post(@api_call_url, 'send_post_invalid.json')
|
45
|
+
response = @sailthru_client.send template_name, email, {"name" => "Unix", "myvar" => [1111,2,3], "mycomplexvar" => {"tags" => ["obama", "aaa", "c"]}}
|
46
|
+
assert_equal 14, response['error']
|
47
|
+
end
|
48
|
+
|
49
|
+
it "can post send with valid template name and email" do
|
50
|
+
template_name = 'default'
|
51
|
+
email = 'example@example.com'
|
52
|
+
stub_post(@api_call_url, 'send_get_valid.json')
|
53
|
+
response = @sailthru_client.send_email template_name, email, {"name" => "Unix", "myvar" => [1111,2,3], "mycomplexvar" => {"tags" => ["obama", "aaa", "c"]}}
|
54
|
+
assert_equal template_name, response['template']
|
55
|
+
end
|
56
|
+
|
57
|
+
it "cannot post send with invalid template name and/or email" do
|
58
|
+
template_name = 'invalid-template'
|
59
|
+
email = 'example@example.com'
|
60
|
+
stub_post(@api_call_url, 'send_post_invalid.json')
|
61
|
+
response = @sailthru_client.send_email template_name, email, {"name" => "Unix", "myvar" => [1111,2,3], "mycomplexvar" => {"tags" => ["obama", "aaa", "c"]}}
|
62
|
+
assert_equal 14, response['error']
|
63
|
+
end
|
64
|
+
|
65
|
+
it "can send multiple emails with valid template" do
|
66
|
+
template_name = 'default'
|
67
|
+
emails = 'example@example.com, example3@example.com'
|
68
|
+
stub_post(@api_call_url, 'send_post_multiple_valid.json')
|
69
|
+
response = @sailthru_client.multi_send(template_name, emails)
|
70
|
+
assert_equal 2, response['sent_count']
|
71
|
+
end
|
72
|
+
|
73
|
+
it "can cancel scheduled send" do
|
74
|
+
send_id = 'TT4gSGdj2Z17AAGb'
|
75
|
+
query_string = create_json_payload(@api_key, @secret, {'send_id' => send_id})
|
76
|
+
stub_delete(@api_call_url + '?' + query_string, 'send_cancel.json')
|
77
|
+
response = @sailthru_client.cancel_send(send_id)
|
78
|
+
assert_equal response['send_id'], send_id
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class StatsTest < Minitest::Test
|
4
|
+
describe "API Call: stats" do
|
5
|
+
before do
|
6
|
+
api_url = 'http://api.sailthru.com'
|
7
|
+
@secret = 'my_secret'
|
8
|
+
@api_key = 'my_api_key'
|
9
|
+
@sailthru_client = Sailthru::SailthruClient.new(@api_key, @secret, api_url)
|
10
|
+
@api_call_url = sailthru_api_call_url(api_url, 'stats')
|
11
|
+
end
|
12
|
+
|
13
|
+
it "can get information about given valid field" do
|
14
|
+
stat_field = 'list'
|
15
|
+
params = {'stat' => stat_field}
|
16
|
+
query_string = create_json_payload(@api_key, @secret, params)
|
17
|
+
stub_get(@api_call_url + '?' + query_string, 'stat_get_valid.json')
|
18
|
+
response = @sailthru_client.get_stats(stat_field)
|
19
|
+
assert_nil response['error']
|
20
|
+
assert_nil response['errormsg']
|
21
|
+
end
|
22
|
+
|
23
|
+
it "cannot get information about given field when it's invalid" do
|
24
|
+
stat_field = 'invalid_field'
|
25
|
+
params = {'stat' => stat_field}
|
26
|
+
query_string = create_json_payload(@api_key, @secret, params)
|
27
|
+
stub_get(@api_call_url + '?' + query_string, 'stat_get_invalid.json')
|
28
|
+
response = @sailthru_client.get_stats(stat_field)
|
29
|
+
refute_nil response['error']
|
30
|
+
refute_nil response['errormsg']
|
31
|
+
end
|
32
|
+
|
33
|
+
it "can get stats list data when list and date are not null" do
|
34
|
+
params = {'stat' => 'list'}
|
35
|
+
query_string = create_json_payload(@api_key, @secret, params)
|
36
|
+
stub_get(@api_call_url + '?' + query_string, 'stats_lists_valid.json')
|
37
|
+
response = @sailthru_client.stats_list()
|
38
|
+
refute_nil response['lists_signup_count']
|
39
|
+
end
|
40
|
+
|
41
|
+
it "cannot stats list data when list is given and invalid" do
|
42
|
+
list = 'not-listed'
|
43
|
+
params = {}
|
44
|
+
params[:list] = list
|
45
|
+
params[:stat] = 'list'
|
46
|
+
query_string = create_json_payload(@api_key, @secret, params)
|
47
|
+
stub_get(@api_call_url + '?' + query_string, 'stats_lists_invalid.json')
|
48
|
+
response = @sailthru_client.stats_list(list)
|
49
|
+
refute_nil response['error']
|
50
|
+
refute_nil response['errormsg']
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TemplateTest < Minitest::Test
|
4
|
+
describe "API Call: template" do
|
5
|
+
before do
|
6
|
+
api_url = 'http://api.sailthru.com'
|
7
|
+
@secret = 'my_secret'
|
8
|
+
@api_key = 'my_api_key'
|
9
|
+
@sailthru_client = Sailthru::SailthruClient.new(@api_key, @secret, api_url)
|
10
|
+
@api_call_url = sailthru_api_call_url(api_url, 'template')
|
11
|
+
end
|
12
|
+
|
13
|
+
it "can get template information when template name is valid" do
|
14
|
+
valid_template_name = 'default'
|
15
|
+
params = {'template' => valid_template_name}
|
16
|
+
query_string = create_json_payload(@api_key, @secret, params)
|
17
|
+
stub_get(@api_call_url + '?' + query_string, 'template_valid_get.json')
|
18
|
+
response = @sailthru_client.get_template(valid_template_name)
|
19
|
+
assert_equal valid_template_name, response['name']
|
20
|
+
end
|
21
|
+
|
22
|
+
it "can get error message when template name is invalid" do
|
23
|
+
invalid_template_name = 'invalid_template'
|
24
|
+
params = {'template' => invalid_template_name}
|
25
|
+
query_string = create_json_payload(@api_key, @secret, params)
|
26
|
+
stub_get(@api_call_url + '?' + query_string, 'template_invalid_get.json')
|
27
|
+
response = @sailthru_client.get_template(invalid_template_name)
|
28
|
+
assert_equal 14, response['error']
|
29
|
+
end
|
30
|
+
|
31
|
+
it "can save template with given template name" do
|
32
|
+
valid_template_name = 'my-template-new'
|
33
|
+
from_email = 'praj@sailthru.com'
|
34
|
+
from_name = 'prajwal tuladhar'
|
35
|
+
stub_post(@api_call_url, 'template_save.json')
|
36
|
+
response = @sailthru_client.save_template(valid_template_name, {'from_email'=> 'praj@sailthru.com', 'from_name'=> from_name})
|
37
|
+
assert_equal valid_template_name, response['name']
|
38
|
+
assert_equal from_email, response['from_email']
|
39
|
+
assert_equal from_name, response['from_name']
|
40
|
+
end
|
41
|
+
|
42
|
+
it "can delete a template with valid template name" do
|
43
|
+
template_name = 'my-template'
|
44
|
+
params = {'template' => template_name}
|
45
|
+
query_string = create_json_payload(@api_key, @secret, params)
|
46
|
+
stub_delete(@api_call_url + '?' + query_string, 'template_delete_valid.json')
|
47
|
+
response = @sailthru_client.delete_template(template_name)
|
48
|
+
assert_equal template_name, response['template']
|
49
|
+
end
|
50
|
+
|
51
|
+
it "cannot delete a template with invalid template name" do
|
52
|
+
template_name = 'my-template'
|
53
|
+
params = {'template' => template_name}
|
54
|
+
query_string = create_json_payload(@api_key, @secret, params)
|
55
|
+
stub_delete(@api_call_url + '?' + query_string, 'blast_delete_invalid.json')
|
56
|
+
response = @sailthru_client.delete_template(template_name)
|
57
|
+
refute_nil response['error']
|
58
|
+
refute_nil response['errormsg']
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'minitest/pride'
|
3
|
+
require 'uri'
|
4
|
+
require 'json'
|
5
|
+
require 'fakeweb'
|
6
|
+
|
7
|
+
require 'sailthru'
|
8
|
+
|
9
|
+
FakeWeb.allow_net_connect = false
|
10
|
+
|
11
|
+
class Minitest::Test
|
12
|
+
|
13
|
+
include Sailthru::Helpers
|
14
|
+
|
15
|
+
def setup
|
16
|
+
FakeWeb.clean_registry
|
17
|
+
end
|
18
|
+
|
19
|
+
def fixture_file(filename)
|
20
|
+
return '' if filename == ''
|
21
|
+
File.read(fixture_file_path(filename))
|
22
|
+
end
|
23
|
+
|
24
|
+
def fixture_file_path(filename)
|
25
|
+
File.expand_path(File.dirname(__FILE__) + '/fixtures/' + filename)
|
26
|
+
end
|
27
|
+
|
28
|
+
def sailthru_api_base_url(url)
|
29
|
+
url
|
30
|
+
end
|
31
|
+
|
32
|
+
def sailthru_api_call_url(url, action)
|
33
|
+
url += '/' if !url.end_with?('/')
|
34
|
+
sailthru_api_base_url(url + action)
|
35
|
+
end
|
36
|
+
|
37
|
+
def stub_get(url, filename)
|
38
|
+
options = { :body => fixture_file(filename), :content_type => 'application/json' }
|
39
|
+
FakeWeb.register_uri(:get, URI.parse(url), options)
|
40
|
+
end
|
41
|
+
|
42
|
+
def stub_delete(url, filename)
|
43
|
+
options = { :body => fixture_file(filename), :content_type => 'application/json' }
|
44
|
+
FakeWeb.register_uri(:delete, URI.parse(url), options)
|
45
|
+
end
|
46
|
+
|
47
|
+
def stub_post(url, filename)
|
48
|
+
FakeWeb.register_uri(:post, URI.parse(url), :body => fixture_file(filename), :content_type => 'application/json')
|
49
|
+
end
|
50
|
+
|
51
|
+
def stub_exception(url, filename)
|
52
|
+
FakeWeb.register_uri(:any, URI.parse(url), :exception => Exception)
|
53
|
+
end
|
54
|
+
|
55
|
+
def create_query_string(secret, params)
|
56
|
+
params['sig'] = get_signature_hash(params, secret)
|
57
|
+
params.map{ |key, value| "#{CGI::escape(key.to_s)}=#{CGI::escape(value.to_s)}" }.join("&")
|
58
|
+
end
|
59
|
+
|
60
|
+
def create_json_payload(api_key, secret, params)
|
61
|
+
data = {}
|
62
|
+
data['api_key'] = api_key
|
63
|
+
data['format'] = 'json'
|
64
|
+
data['json'] = params.to_json
|
65
|
+
data['sig'] = get_signature_hash(data, secret)
|
66
|
+
data.map{ |key, value| "#{CGI::escape(key.to_s)}=#{CGI::escape(value.to_s)}" }.join("&")
|
67
|
+
end
|
68
|
+
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sailthru-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 3.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Prajwal Tuladhar
|
@@ -10,12 +9,11 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 2014-06-16 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: json
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
18
|
- - ! '>='
|
21
19
|
- !ruby/object:Gem::Version
|
@@ -23,7 +21,6 @@ dependencies:
|
|
23
21
|
type: :runtime
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
25
|
- - ! '>='
|
29
26
|
- !ruby/object:Gem::Version
|
@@ -31,7 +28,6 @@ dependencies:
|
|
31
28
|
- !ruby/object:Gem::Dependency
|
32
29
|
name: multipart-post
|
33
30
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
31
|
requirements:
|
36
32
|
- - ! '>='
|
37
33
|
- !ruby/object:Gem::Version
|
@@ -39,7 +35,6 @@ dependencies:
|
|
39
35
|
type: :runtime
|
40
36
|
prerelease: false
|
41
37
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
38
|
requirements:
|
44
39
|
- - ! '>='
|
45
40
|
- !ruby/object:Gem::Version
|
@@ -47,7 +42,6 @@ dependencies:
|
|
47
42
|
- !ruby/object:Gem::Dependency
|
48
43
|
name: fakeweb
|
49
44
|
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
45
|
requirements:
|
52
46
|
- - ! '>='
|
53
47
|
- !ruby/object:Gem::Version
|
@@ -55,7 +49,6 @@ dependencies:
|
|
55
49
|
type: :development
|
56
50
|
prerelease: false
|
57
51
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
52
|
requirements:
|
60
53
|
- - ! '>='
|
61
54
|
- !ruby/object:Gem::Version
|
@@ -63,7 +56,6 @@ dependencies:
|
|
63
56
|
- !ruby/object:Gem::Dependency
|
64
57
|
name: shoulda
|
65
58
|
requirement: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
59
|
requirements:
|
68
60
|
- - ! '>='
|
69
61
|
- !ruby/object:Gem::Version
|
@@ -71,7 +63,6 @@ dependencies:
|
|
71
63
|
type: :development
|
72
64
|
prerelease: false
|
73
65
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
66
|
requirements:
|
76
67
|
- - ! '>='
|
77
68
|
- !ruby/object:Gem::Version
|
@@ -79,7 +70,6 @@ dependencies:
|
|
79
70
|
- !ruby/object:Gem::Dependency
|
80
71
|
name: mocha
|
81
72
|
requirement: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
73
|
requirements:
|
84
74
|
- - ! '>='
|
85
75
|
- !ruby/object:Gem::Version
|
@@ -87,7 +77,6 @@ dependencies:
|
|
87
77
|
type: :development
|
88
78
|
prerelease: false
|
89
79
|
version_requirements: !ruby/object:Gem::Requirement
|
90
|
-
none: false
|
91
80
|
requirements:
|
92
81
|
- - ! '>='
|
93
82
|
- !ruby/object:Gem::Version
|
@@ -99,10 +88,70 @@ extensions: []
|
|
99
88
|
extra_rdoc_files:
|
100
89
|
- README.md
|
101
90
|
files:
|
91
|
+
- .gitignore
|
92
|
+
- CHANGELOG.md
|
93
|
+
- Gemfile
|
94
|
+
- Gemfile.lock
|
95
|
+
- MIT-LICENSE
|
102
96
|
- README.md
|
97
|
+
- Rakefile
|
103
98
|
- lib/sailthru.rb
|
99
|
+
- sailthru-client.gemspec
|
100
|
+
- test/fixtures/blast_delete_invalid.json
|
101
|
+
- test/fixtures/blast_delete_valid.json
|
102
|
+
- test/fixtures/blast_get_invalid.json
|
103
|
+
- test/fixtures/blast_get_valid.json
|
104
|
+
- test/fixtures/blast_post_invalid_email.json
|
105
|
+
- test/fixtures/blast_post_invalid_list.json
|
106
|
+
- test/fixtures/blast_post_update_valid.json
|
107
|
+
- test/fixtures/blast_post_valid.json
|
108
|
+
- test/fixtures/content_valid.json
|
109
|
+
- test/fixtures/email_get_listed_email.json
|
110
|
+
- test/fixtures/email_get_not_listed_email.json
|
111
|
+
- test/fixtures/list_delete_invalid.json
|
112
|
+
- test/fixtures/list_delete_valid.json
|
113
|
+
- test/fixtures/list_get_all.json
|
114
|
+
- test/fixtures/list_get_invalid.json
|
115
|
+
- test/fixtures/list_get_invalid.txt
|
116
|
+
- test/fixtures/list_get_valid.json
|
117
|
+
- test/fixtures/list_get_valid.txt
|
118
|
+
- test/fixtures/list_save_valid.json
|
119
|
+
- test/fixtures/purchase_post_invalid_email.json
|
120
|
+
- test/fixtures/purchase_post_invalid_empty_items.json
|
121
|
+
- test/fixtures/purchase_post_valid_multiple_items.json
|
122
|
+
- test/fixtures/purchase_post_valid_single_item.json
|
123
|
+
- test/fixtures/send_cancel.json
|
124
|
+
- test/fixtures/send_get_invalid.json
|
125
|
+
- test/fixtures/send_get_valid.json
|
126
|
+
- test/fixtures/send_post_invalid.json
|
127
|
+
- test/fixtures/send_post_multiple_valid.json
|
128
|
+
- test/fixtures/stat_get_invalid.json
|
129
|
+
- test/fixtures/stat_get_valid.json
|
130
|
+
- test/fixtures/stats_lists_invalid.json
|
131
|
+
- test/fixtures/stats_lists_valid.json
|
132
|
+
- test/fixtures/template_delete_invalid.json
|
133
|
+
- test/fixtures/template_delete_valid.json
|
134
|
+
- test/fixtures/template_invalid_get.json
|
135
|
+
- test/fixtures/template_save.json
|
136
|
+
- test/fixtures/template_valid_get.json
|
137
|
+
- test/fixtures/user_update_post_valid.json
|
138
|
+
- test/fixtures/user_update_valid.json
|
139
|
+
- test/sailthru/blast_test.rb
|
140
|
+
- test/sailthru/content_test.rb
|
141
|
+
- test/sailthru/email_test.rb
|
142
|
+
- test/sailthru/error_test.rb
|
143
|
+
- test/sailthru/file_upload_test.rb
|
144
|
+
- test/sailthru/helpers_test.rb
|
145
|
+
- test/sailthru/list_test.rb
|
146
|
+
- test/sailthru/purchase_test.rb
|
147
|
+
- test/sailthru/send_test.rb
|
148
|
+
- test/sailthru/stats_test.rb
|
149
|
+
- test/sailthru/template_test.rb
|
150
|
+
- test/test_helper.rb
|
104
151
|
homepage: http://docs.sailthru.com
|
105
|
-
licenses:
|
152
|
+
licenses:
|
153
|
+
- MIT
|
154
|
+
metadata: {}
|
106
155
|
post_install_message:
|
107
156
|
rdoc_options:
|
108
157
|
- --main
|
@@ -110,21 +159,70 @@ rdoc_options:
|
|
110
159
|
require_paths:
|
111
160
|
- lib
|
112
161
|
required_ruby_version: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
162
|
requirements:
|
115
163
|
- - ! '>='
|
116
164
|
- !ruby/object:Gem::Version
|
117
165
|
version: '0'
|
118
166
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
|
-
none: false
|
120
167
|
requirements:
|
121
168
|
- - ! '>='
|
122
169
|
- !ruby/object:Gem::Version
|
123
170
|
version: '0'
|
124
171
|
requirements: []
|
125
172
|
rubyforge_project:
|
126
|
-
rubygems_version:
|
173
|
+
rubygems_version: 2.2.2
|
127
174
|
signing_key:
|
128
|
-
specification_version:
|
175
|
+
specification_version: 4
|
129
176
|
summary: A simple client library to remotely access the Sailthru REST API.
|
130
|
-
test_files:
|
177
|
+
test_files:
|
178
|
+
- test/fixtures/blast_delete_invalid.json
|
179
|
+
- test/fixtures/blast_delete_valid.json
|
180
|
+
- test/fixtures/blast_get_invalid.json
|
181
|
+
- test/fixtures/blast_get_valid.json
|
182
|
+
- test/fixtures/blast_post_invalid_email.json
|
183
|
+
- test/fixtures/blast_post_invalid_list.json
|
184
|
+
- test/fixtures/blast_post_update_valid.json
|
185
|
+
- test/fixtures/blast_post_valid.json
|
186
|
+
- test/fixtures/content_valid.json
|
187
|
+
- test/fixtures/email_get_listed_email.json
|
188
|
+
- test/fixtures/email_get_not_listed_email.json
|
189
|
+
- test/fixtures/list_delete_invalid.json
|
190
|
+
- test/fixtures/list_delete_valid.json
|
191
|
+
- test/fixtures/list_get_all.json
|
192
|
+
- test/fixtures/list_get_invalid.json
|
193
|
+
- test/fixtures/list_get_invalid.txt
|
194
|
+
- test/fixtures/list_get_valid.json
|
195
|
+
- test/fixtures/list_get_valid.txt
|
196
|
+
- test/fixtures/list_save_valid.json
|
197
|
+
- test/fixtures/purchase_post_invalid_email.json
|
198
|
+
- test/fixtures/purchase_post_invalid_empty_items.json
|
199
|
+
- test/fixtures/purchase_post_valid_multiple_items.json
|
200
|
+
- test/fixtures/purchase_post_valid_single_item.json
|
201
|
+
- test/fixtures/send_cancel.json
|
202
|
+
- test/fixtures/send_get_invalid.json
|
203
|
+
- test/fixtures/send_get_valid.json
|
204
|
+
- test/fixtures/send_post_invalid.json
|
205
|
+
- test/fixtures/send_post_multiple_valid.json
|
206
|
+
- test/fixtures/stat_get_invalid.json
|
207
|
+
- test/fixtures/stat_get_valid.json
|
208
|
+
- test/fixtures/stats_lists_invalid.json
|
209
|
+
- test/fixtures/stats_lists_valid.json
|
210
|
+
- test/fixtures/template_delete_invalid.json
|
211
|
+
- test/fixtures/template_delete_valid.json
|
212
|
+
- test/fixtures/template_invalid_get.json
|
213
|
+
- test/fixtures/template_save.json
|
214
|
+
- test/fixtures/template_valid_get.json
|
215
|
+
- test/fixtures/user_update_post_valid.json
|
216
|
+
- test/fixtures/user_update_valid.json
|
217
|
+
- test/sailthru/blast_test.rb
|
218
|
+
- test/sailthru/content_test.rb
|
219
|
+
- test/sailthru/email_test.rb
|
220
|
+
- test/sailthru/error_test.rb
|
221
|
+
- test/sailthru/file_upload_test.rb
|
222
|
+
- test/sailthru/helpers_test.rb
|
223
|
+
- test/sailthru/list_test.rb
|
224
|
+
- test/sailthru/purchase_test.rb
|
225
|
+
- test/sailthru/send_test.rb
|
226
|
+
- test/sailthru/stats_test.rb
|
227
|
+
- test/sailthru/template_test.rb
|
228
|
+
- test/test_helper.rb
|