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.
Files changed (62) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +6 -0
  3. data/CHANGELOG.md +31 -0
  4. data/Gemfile +11 -0
  5. data/Gemfile.lock +22 -0
  6. data/MIT-LICENSE +20 -0
  7. data/README.md +11 -4
  8. data/Rakefile +19 -0
  9. data/lib/sailthru.rb +115 -101
  10. data/sailthru-client.gemspec +26 -0
  11. data/test/fixtures/blast_delete_invalid.json +1 -0
  12. data/test/fixtures/blast_delete_valid.json +1 -0
  13. data/test/fixtures/blast_get_invalid.json +1 -0
  14. data/test/fixtures/blast_get_valid.json +1 -0
  15. data/test/fixtures/blast_post_invalid_email.json +1 -0
  16. data/test/fixtures/blast_post_invalid_list.json +1 -0
  17. data/test/fixtures/blast_post_update_valid.json +1 -0
  18. data/test/fixtures/blast_post_valid.json +1 -0
  19. data/test/fixtures/content_valid.json +1 -0
  20. data/test/fixtures/email_get_listed_email.json +1 -0
  21. data/test/fixtures/email_get_not_listed_email.json +1 -0
  22. data/test/fixtures/list_delete_invalid.json +1 -0
  23. data/test/fixtures/list_delete_valid.json +1 -0
  24. data/test/fixtures/list_get_all.json +14 -0
  25. data/test/fixtures/list_get_invalid.json +1 -0
  26. data/test/fixtures/list_get_invalid.txt +4 -0
  27. data/test/fixtures/list_get_valid.json +8 -0
  28. data/test/fixtures/list_get_valid.txt +3 -0
  29. data/test/fixtures/list_save_valid.json +8 -0
  30. data/test/fixtures/purchase_post_invalid_email.json +1 -0
  31. data/test/fixtures/purchase_post_invalid_empty_items.json +1 -0
  32. data/test/fixtures/purchase_post_valid_multiple_items.json +1 -0
  33. data/test/fixtures/purchase_post_valid_single_item.json +1 -0
  34. data/test/fixtures/send_cancel.json +1 -0
  35. data/test/fixtures/send_get_invalid.json +1 -0
  36. data/test/fixtures/send_get_valid.json +1 -0
  37. data/test/fixtures/send_post_invalid.json +1 -0
  38. data/test/fixtures/send_post_multiple_valid.json +1 -0
  39. data/test/fixtures/stat_get_invalid.json +1 -0
  40. data/test/fixtures/stat_get_valid.json +1 -0
  41. data/test/fixtures/stats_lists_invalid.json +1 -0
  42. data/test/fixtures/stats_lists_valid.json +1 -0
  43. data/test/fixtures/template_delete_invalid.json +1 -0
  44. data/test/fixtures/template_delete_valid.json +1 -0
  45. data/test/fixtures/template_invalid_get.json +1 -0
  46. data/test/fixtures/template_save.json +1 -0
  47. data/test/fixtures/template_valid_get.json +1 -0
  48. data/test/fixtures/user_update_post_valid.json +3 -0
  49. data/test/fixtures/user_update_valid.json +1 -0
  50. data/test/sailthru/blast_test.rb +116 -0
  51. data/test/sailthru/content_test.rb +36 -0
  52. data/test/sailthru/email_test.rb +23 -0
  53. data/test/sailthru/error_test.rb +30 -0
  54. data/test/sailthru/file_upload_test.rb +75 -0
  55. data/test/sailthru/helpers_test.rb +23 -0
  56. data/test/sailthru/list_test.rb +69 -0
  57. data/test/sailthru/purchase_test.rb +67 -0
  58. data/test/sailthru/send_test.rb +81 -0
  59. data/test/sailthru/stats_test.rb +53 -0
  60. data/test/sailthru/template_test.rb +61 -0
  61. data/test/test_helper.rb +68 -0
  62. 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
@@ -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: 2.0.0
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: 2013-09-06 00:00:00.000000000 Z
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: 1.8.25
173
+ rubygems_version: 2.2.2
127
174
  signing_key:
128
- specification_version: 3
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