sailthru-client 4.1.0 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 861a575aa56944d027c0cc7e3fbd52a9c266abc0
4
- data.tar.gz: 55d80097eb3dc65651a27c90e27d2a481f113019
3
+ metadata.gz: 4cdd3ac1402c2254ff33c683caca69b2d8b6b0de
4
+ data.tar.gz: 53c72b791956befc9626a4c9ce7cbe3a817ccca2
5
5
  SHA512:
6
- metadata.gz: a4d39c922e39970f6bcf10063efdf015b513da719fef606092e69e594603d3a3e83f2631a2b491b7bcd463bd50867b23200c9f87b7ded646b1dc8b969f832f90
7
- data.tar.gz: 7b30e7fc8563837c3176de48bc6edc2674d21b240085a6314510a3138811dab377e6e8a0fa6b7b135239a78a3f53a6281f652604c81b9ecda7f8f04cebdf627c
6
+ metadata.gz: 9570a75d2271b75789efafa77c8a61b4baa7028ed7541dcabb9d660671ecce031808454df337660772d9eeb087a9061b2d676176fd04c9dd37b4941b737fdac6
7
+ data.tar.gz: 6c38603b1bd381729b0913571e20d5c873c7e4f7c9fec0eaa3c5d6ff0d944b2752db651a41c58f0c004fa2b0242e1c87da31293455c8884286fe9fbb6f0e120f
data/.gitignore CHANGED
@@ -5,3 +5,4 @@
5
5
  .loadpath
6
6
  rdoc
7
7
  Gemfile.lock
8
+ .idea
@@ -1,3 +1,7 @@
1
+ ## 4.2.0
2
+ - added save_content supporting all fields from updated api
3
+ - push_content is now deprecated in favour of save_content
4
+
1
5
  ## 4.1.0
2
6
  - added get_last_rate_limit_info method call
3
7
 
data/README.md CHANGED
@@ -1,51 +1,11 @@
1
- # sailthru-ruby-client
1
+ # Sailthru Ruby Library
2
2
 
3
- For installation instructions, documentation, and examples please visit:
4
- [http://getstarted.sailthru.com/new-for-developers-overview/api-client-library/ruby-gem](http://getstarted.sailthru.com/new-for-developers-overview/api-client-library/ruby-gem/)
5
-
6
- A simple client library to remotely access the `Sailthru REST API` as per [http://getstarted.sailthru.com/api](http://getstarted.sailthru.com/api)
7
-
8
- By default, it will make requests in `JSON` format.
9
-
10
- ## Installation
11
-
12
- $ gem install sailthru-client
13
-
14
- ## Requirements
15
-
16
- This gem supports Ruby 1.9.3 and up.
17
-
18
- ## Optional parameters for connection/read timeout settings
3
+ An [API client library](https://getstarted.sailthru.com/developers/api-client/libraries-overview/) that enables you to access the `Sailthru API` using Ruby.
19
4
 
20
- Increase timeout from 10 (default) to 30 seconds.
21
-
22
- ```ruby
23
- sailthru = Sailthru::Client.new("api-key", "api-secret", "https://api.sailthru.com", nil, nil,
24
- {:http_read_timeout => 30, :http_ssl_timeout => 30, :http_open_timeout => 30})
25
- ```
26
-
27
- ## Rate Limit Information
28
-
29
- The library allows inspection of the 'X-Rate-Limit-*' headers returned by the Sailthru API. The `get_last_rate_limit_info(endpoint, method)` function allows you to retrieve the last known rate limit information for the given endpoint / method combination. It must follow an API call. For example, if you do a `/send POST`, you can follow up with a call to `get_last_rate_limit_info(:send, :post)` as shown below:
30
-
31
- ``` ruby
32
- # make API call as normal
33
- response = sailthru.send_email template_name, email, {foo: "bar"}
34
-
35
- # check rate limit information
36
- rate_limit_info = sailthru.get_last_rate_limit_info :send, :post
37
- ```
38
-
39
- The return type will be `nil` if there is no rate limit information for the given endpoint / method combination (e.g. if you have not yet made a request to that endpoint). Otherwise, it will be a hash in the following format:
40
-
41
- ``` ruby
42
- {
43
- limit: 1234, # <Number representing the limit of requests/minute for this action / method combination>
44
- remaining: 1230, # <Number representing how many requests remain in the current minute>
45
- reset: 1459381680 # <Number representing the UNIX epoch timestamp of when the next minute starts, and when the rate limit resets>
46
- }
47
- ```
5
+ For installation instructions, documentation, and examples please visit:
6
+ [https://getstarted.sailthru.com/developers/api-client/ruby/](https://getstarted.sailthru.com/developers/api-client/ruby/)
48
7
 
49
- ## License
8
+ ## Running tests
50
9
 
51
- Please see MIT-LICENSE for license.
10
+ 1. `bundle install`
11
+ 2. `bundle exec rake test`
@@ -235,10 +235,10 @@ module Sailthru
235
235
  data[:change_email] = old_email
236
236
  api_post(:email, data)
237
237
  end
238
-
238
+
239
239
  # returns:
240
240
  # Hash of response data.
241
- #
241
+ #
242
242
  # Get all templates
243
243
  def get_templates(templates = {})
244
244
  api_get(:template, templates)
@@ -366,7 +366,7 @@ module Sailthru
366
366
 
367
367
  # params:
368
368
  # email, String
369
- # items, String
369
+ # items, Array of Hashes
370
370
  # incomplete, Integer
371
371
  # message_id, String
372
372
  # options, Hash
@@ -468,6 +468,7 @@ module Sailthru
468
468
  api_get(:stats, data)
469
469
  end
470
470
 
471
+ # <b>DEPRECATED:</b> Please use save_content
471
472
  # params
472
473
  # title, String
473
474
  # url, String
@@ -497,6 +498,21 @@ module Sailthru
497
498
  api_post(:content, data)
498
499
  end
499
500
 
501
+ # params
502
+ # id, String – An identifier for the item (by default, the item’s URL).
503
+ # options, Hash - Containing any of the parameters described on
504
+ # https://getstarted.sailthru.com/developers/api/content/#POST_Mode
505
+ #
506
+ # Push a new piece of content to Sailthru, triggering any applicable alerts.
507
+ # http://docs.sailthru.com/api/content
508
+ def save_content(id, options)
509
+ data = options
510
+ data[:id] = id
511
+ data[:tags] = data[:tags].join(',') if data[:tags].respond_to?(:join)
512
+
513
+ api_post(:content, data)
514
+ end
515
+
500
516
  # params
501
517
  # list, String
502
518
  #
@@ -1,3 +1,3 @@
1
1
  module Sailthru
2
- VERSION = '4.1.0'
2
+ VERSION = '4.2.0'
3
3
  end
@@ -10,27 +10,167 @@ class ContentTest < Minitest::Test
10
10
  @api_call_url = sailthru_api_call_url(api_url, 'content')
11
11
  end
12
12
 
13
- it "can push content with title, url, *array* tags and vars" do
14
- title = 'unix is awesome'
15
- url = 'http://example.com/hello-world'
16
- date = nil
17
- tags = ['unix', 'linux']
18
- vars = {:price => 55, :description => 'Hello World'}
19
- stub_post(@api_call_url, 'content_valid.json')
20
- response = @sailthru_client.push_content(title, url, date = nil, tags = tags, vars = vars)
21
- refute_nil response['content']
22
- end
13
+ describe '#save_content' do
14
+ describe 'creating a content' do
15
+ before do
16
+ id = 'http://example.com/hello-world'
17
+ options = {
18
+ keys: {
19
+ sku: "123abc"
20
+ },
21
+ title: "Product Name Here",
22
+ description: "Product info text goes here.",
23
+ price: 2099,
24
+ inventory: 42,
25
+ date: "2016-06-20 14:30:00 -0400",
26
+ tags: "blue, jeans, size-m",
27
+ vars: {
28
+ var1: "var 1 value"
29
+ },
30
+ images: {
31
+ full: {
32
+ url: "http://example.com/images/product.jpg"
33
+ }
34
+ },
35
+ site_name: "Store"
36
+ }
37
+
38
+ stub_post(@api_call_url, 'content_valid.json')
39
+
40
+ @response = @sailthru_client.save_content(id, options)
41
+ @last_request_params = CGI::parse(FakeWeb.last_request.body)
42
+ @expected_form_params = options.merge({id: id})
43
+ end
44
+
45
+ it 'POST to the correct url' do
46
+ refute_nil @response['content']
47
+ end
48
+
49
+ it 'POST with the correct parameters' do
50
+ form_data = JSON.parse(@last_request_params["json"][0], symbolize_names: true)
51
+ assert_equal(form_data, @expected_form_params)
52
+ end
53
+ end
54
+
55
+ describe 'updating content by url and sending tags as array' do
56
+ before do
57
+ id = 'http://example.com/hello-world'
58
+ options = {
59
+ tags: ['tag1', 'tag2'],
60
+ }
61
+
62
+ stub_post(@api_call_url, 'content_valid.json')
63
+
64
+ @response = @sailthru_client.save_content(id, options)
65
+ @last_request_params = CGI::parse(FakeWeb.last_request.body)
66
+ @expected_form_params = options.merge({id: id})
67
+ end
68
+
69
+ it 'POST to the correct url' do
70
+ refute_nil @response['content']
71
+ end
72
+
73
+ it 'POST form_data tags as string separated by ","' do
74
+ form_data = JSON.parse(@last_request_params["json"][0], symbolize_names: true)
75
+ assert_equal(form_data[:tags], 'tag1,tag2')
76
+ end
77
+ end
78
+
79
+ describe 'updating content searching by sku key instead of url' do
80
+ before do
81
+ id = '123abc'
82
+ options = {
83
+ key: 'sku',
84
+ title: "New Product Name Here",
85
+ }
86
+
87
+ stub_post(@api_call_url, 'content_valid.json')
88
+
89
+ @response = @sailthru_client.save_content(id, options)
90
+ @last_request_params = CGI::parse(FakeWeb.last_request.body)
91
+ @expected_form_params = options.merge({id: id})
92
+ end
23
93
 
24
- it "can push content with title, url, *string* tags and vars" do
25
- title = 'unix is awesome'
26
- url = 'http://example.com/hello-world'
27
- date = nil
28
- tags = 'unix, linux'
29
- vars = {:price => 55, :description => 'Hello World'}
30
- stub_post(@api_call_url, 'content_valid.json')
31
- response = @sailthru_client.push_content(title, url, date = nil, tags = tags, vars = vars)
32
- refute_nil response['content']
94
+ it 'POST to the correct url' do
95
+ refute_nil @response['content']
96
+ end
97
+
98
+ it 'POST with the correct parameters' do
99
+ form_data = JSON.parse(@last_request_params["json"][0], symbolize_names: true)
100
+ assert_equal(form_data, @expected_form_params)
101
+ end
102
+ end
33
103
  end
34
104
 
105
+ describe '#push_content: DEPRECATED IN FAVOUR OF save_content' do
106
+ describe 'create content item' do
107
+ before do
108
+ title = 'Product Name here'
109
+ url = "http://example.com/product"
110
+ tags = "blue, jeans, size-m"
111
+ date = nil
112
+ vars = {
113
+ var1: 'var 1 value'
114
+ }
115
+ options = {
116
+ keys: {
117
+ sku: "123abc"
118
+ },
119
+ description: "Product info text goes here.",
120
+ price: 2099,
121
+ inventory: 42,
122
+ images: {
123
+ full: {
124
+ url: "http://example.com/images/product.jpg"
125
+ }
126
+ },
127
+ site_name: "Store"
128
+ }
129
+
130
+ stub_post(@api_call_url, 'content_valid.json')
131
+ @response = @sailthru_client.push_content(title, url, date, tags, vars, options)
132
+
133
+ @last_request_params = CGI::parse(FakeWeb.last_request.body)
134
+
135
+ @expected_form_params = options.merge({
136
+ title: title,
137
+ url: url,
138
+ vars: vars,
139
+ tags: tags,
140
+ })
141
+ end
142
+
143
+ it 'POST to the correct url' do
144
+ refute_nil @response['content']
145
+ end
146
+
147
+ it 'POST with the correct parameters' do
148
+ form_data = JSON.parse(@last_request_params["json"][0], symbolize_names: true)
149
+ assert_equal(form_data, @expected_form_params)
150
+ end
151
+ end
152
+
153
+ describe 'create content item with tags as array' do
154
+ before do
155
+ title = 'Product Name here'
156
+ url = "http://example.com/product"
157
+ tags = ['blue', 'jeans', 'size-m']
158
+
159
+ stub_post(@api_call_url, 'content_valid.json')
160
+ @response = @sailthru_client.push_content(title, url, nil, tags)
161
+
162
+ @last_request_params = CGI::parse(FakeWeb.last_request.body)
163
+ end
164
+
165
+ it 'POST to the correct url' do
166
+ refute_nil @response['content']
167
+ end
168
+
169
+ it 'POST form_data tags as string separated by ","' do
170
+ form_data = JSON.parse(@last_request_params["json"][0], symbolize_names: true)
171
+ assert_equal(form_data[:tags], 'blue,jeans,size-m')
172
+ end
173
+ end
174
+ end
35
175
  end
36
176
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sailthru-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Prajwal Tuladhar
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-05-05 00:00:00.000000000 Z
13
+ date: 2018-06-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: json