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