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
@@ -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
|