sailthru 1.1.0 → 1.1.1

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.
@@ -11,7 +11,7 @@
11
11
  #
12
12
  # Special thanks to the iminlikewithyou.com team for the development
13
13
  # of this library.
14
- #
14
+ #
15
15
  # Redistribution and use in source and binary forms, with or without
16
16
  # modification, are permitted provided that the following conditions
17
17
  # are met:
@@ -34,12 +34,12 @@
34
34
  # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35
35
  #
36
36
  ################################################################################
37
-
37
+
38
38
  require 'net/http'
39
39
  require 'uri'
40
40
  require 'rubygems'
41
41
  require 'json'
42
- require 'md5'
42
+ require 'digest/md5'
43
43
 
44
44
  module Sailthru
45
45
 
@@ -48,21 +48,21 @@ module Sailthru
48
48
 
49
49
  class TriggermailClient
50
50
  attr_accessor :api_uri, :api_key, :secret, :version, :last_request
51
-
51
+
52
52
  VERSION = '1.0'
53
53
 
54
54
  # params:
55
55
  # api_key, String
56
56
  # secret, String
57
57
  # api_uri, String
58
- #
58
+ #
59
59
  # Instantiate a new client; constructor optionally takes overrides for key/secret/uri.
60
60
  def initialize(api_key, secret, api_uri)
61
61
  @api_key = api_key
62
62
  @secret = secret
63
63
  @api_uri = api_uri
64
64
  end
65
-
65
+
66
66
  # params:
67
67
  # template_name, String
68
68
  # email, String
@@ -83,17 +83,17 @@ module Sailthru
83
83
  result = self.api_post(:send, post)
84
84
  end
85
85
 
86
-
86
+
87
87
  # params:
88
88
  # send_id, Fixnum
89
89
  # returns:
90
90
  # Hash, response data from server
91
- #
91
+ #
92
92
  # Get the status of a send.
93
93
  def get_send(send_id)
94
- self.api_get(:send, {:send_id => send_id.to_s})
94
+ self.api_get(:send, {:send_id => send_id.to_s})
95
95
  end
96
-
96
+
97
97
  # params:
98
98
  # name, String
99
99
  # list, String
@@ -120,8 +120,8 @@ module Sailthru
120
120
  post[:content_text] = content_text
121
121
  self.api_post(:blast, post)
122
122
  end
123
-
124
-
123
+
124
+
125
125
  # params:
126
126
  # blast_id, Fixnum
127
127
  # returns:
@@ -131,24 +131,24 @@ module Sailthru
131
131
  def get_blast(blast_id)
132
132
  self.api_get(:blast, {:blast_id => blast_id.to_s})
133
133
  end
134
-
134
+
135
135
  # params:
136
136
  # email, String
137
137
  # returns:
138
138
  # Hash, response data from server
139
- #
139
+ #
140
140
  # Return information about an email address, including replacement vars and lists.
141
141
  def get_email(email)
142
142
  self.api_get(:email, {:email => email})
143
143
  end
144
-
144
+
145
145
  # params:
146
146
  # email, String
147
147
  # vars, Hash
148
148
  # lists, Hash mapping list name => 1 for subscribed, 0 for unsubscribed
149
149
  # returns:
150
150
  # Hash, response data from server
151
- #
151
+ #
152
152
  # Set replacement vars and/or list subscriptions for an email address.
153
153
  def set_email(email, vars = {}, lists = {}, templates = {})
154
154
  data = {:email => email}
@@ -157,7 +157,7 @@ module Sailthru
157
157
  data[:templates] = templates unless templates.empty?
158
158
  self.api_post(:email, data)
159
159
  end
160
-
160
+
161
161
  # params:
162
162
  # email, String
163
163
  # password, String
@@ -172,33 +172,33 @@ module Sailthru
172
172
  data[:names] = 1 if with_names
173
173
  self.api_post(:contacts, data)
174
174
  end
175
-
176
-
175
+
176
+
177
177
  # params:
178
178
  # template_name, String
179
179
  # returns:
180
180
  # Hash of response data.
181
- #
181
+ #
182
182
  # Get a template.
183
183
  def get_template(template_name)
184
184
  self.api_get(:template, {:template => template_name})
185
185
  end
186
-
187
-
186
+
187
+
188
188
  # params:
189
189
  # template_name, String
190
190
  # template_fields, Hash
191
191
  # returns:
192
192
  # Hash containg response from the server.
193
- #
193
+ #
194
194
  # Save a template.
195
195
  def save_template(template_name, template_fields)
196
196
  data = template_fields
197
197
  data[:template] = template_name
198
198
  self.api_post(:template, data)
199
199
  end
200
-
201
-
200
+
201
+
202
202
  # params:
203
203
  # params, Hash
204
204
  # request, String
@@ -207,57 +207,57 @@ module Sailthru
207
207
  def receive_verify_post(params, request)
208
208
  if request.post?
209
209
  [:action, :email, :send_id, :sig].each { |key| return false unless params.has_key?(key) }
210
-
210
+
211
211
  return false unless params[:action] == :verify
212
-
212
+
213
213
  sig = params[:sig]
214
214
  params.delete(:sig)
215
215
  return false unless sig == TriggermailClient.get_signature_hash(params, @secret)
216
-
216
+
217
217
  _send = self.get_send(params[:send_id])
218
218
  return false unless _send.has_key?(:email)
219
-
219
+
220
220
  return false unless _send[:email] == params[:email]
221
-
221
+
222
222
  return true
223
223
  else
224
224
  return false
225
225
  end
226
226
  end
227
-
228
-
227
+
228
+
229
229
  # Perform API GET request
230
230
  def api_get(action, data)
231
231
  api_request(action, data, 'GET')
232
232
  end
233
-
233
+
234
234
  # Perform API POST request
235
235
  def api_post(action, data)
236
236
  api_request(action, data, 'POST')
237
237
  end
238
-
238
+
239
239
  # params:
240
240
  # action, String
241
241
  # data, Hash
242
242
  # request, String "GET" or "POST"
243
243
  # returns:
244
244
  # Hash
245
- #
245
+ #
246
246
  # Perform an API request, using the shared-secret auth hash.
247
- #
247
+ #
248
248
  def api_request(action, data, request_type)
249
249
  data[:api_key] = @api_key
250
250
  data[:format] ||= 'json'
251
251
  data[:sig] = Sailthru::TriggermailClient.get_signature_hash(data, @secret)
252
252
  _result = self.http_request("#{@api_uri}/#{action}", data, request_type)
253
-
254
-
253
+
254
+
255
255
  # NOTE: don't do the unserialize here
256
256
  unserialized = JSON.parse(_result)
257
257
  return unserialized ? unserialized : _result
258
258
  end
259
-
260
-
259
+
260
+
261
261
  # params:
262
262
  # uri, String
263
263
  # data, Hash
@@ -272,10 +272,10 @@ module Sailthru
272
272
  else
273
273
  uri += "?" + data.map{ |key, value| "#{key}=#{value}" }.join("&")
274
274
  end
275
-
275
+
276
276
  req = nil
277
277
  headers = {"User-Agent" => "Triggermail API Ruby Client #{VERSION}"}
278
-
278
+
279
279
  _uri = URI.parse(uri)
280
280
  if method == 'POST'
281
281
  req = Net::HTTP::Post.new(_uri.path, headers)
@@ -283,7 +283,7 @@ module Sailthru
283
283
  else
284
284
  req = Net::HTTP::Get.new("#{_uri.path}?#{_uri.query}", headers)
285
285
  end
286
-
286
+
287
287
  @last_request = req
288
288
  begin
289
289
  response = Net::HTTP.start(_uri.host, _uri.port) {|http|
@@ -292,15 +292,15 @@ module Sailthru
292
292
  rescue Exception => e
293
293
  raise Sailthru::TriggermailClientException.new("Unable to open stream: #{_uri.to_s}");
294
294
  end
295
-
295
+
296
296
  if response.body
297
297
  return response.body
298
298
  else
299
299
  raise Sailthru::TriggermailClientException.new("No response received from stream: #{_uri.to_s}")
300
300
  end
301
-
301
+
302
302
  end
303
-
303
+
304
304
  # Flatten nested hash for GET / POST request.
305
305
  def flatten_nested_hash(hash, brackets = true)
306
306
  f = {}
@@ -335,8 +335,8 @@ module Sailthru
335
335
  end
336
336
  return values
337
337
  end
338
-
339
-
338
+
339
+
340
340
  # params:
341
341
  # params, Hash
342
342
  # secret, String
@@ -346,6 +346,6 @@ module Sailthru
346
346
  string = secret + self.extract_param_values(params).sort_by{|x| x.to_s}.join("")
347
347
  MD5.md5(string) # debuggin
348
348
  end
349
-
349
+
350
350
  end
351
- end
351
+ end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{sailthru}
3
- s.version = "1.1.0"
3
+ s.version = "1.1.1"
4
4
 
5
5
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
6
  s.authors = ["Ian Enders"]
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sailthru
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 17
5
+ prerelease:
5
6
  segments:
6
7
  - 1
7
8
  - 1
8
- - 0
9
- version: 1.1.0
9
+ - 1
10
+ version: 1.1.1
10
11
  platform: ruby
11
12
  authors:
12
13
  - Ian Enders
@@ -43,23 +44,27 @@ rdoc_options:
43
44
  require_paths:
44
45
  - lib
45
46
  required_ruby_version: !ruby/object:Gem::Requirement
47
+ none: false
46
48
  requirements:
47
49
  - - ">="
48
50
  - !ruby/object:Gem::Version
51
+ hash: 3
49
52
  segments:
50
53
  - 0
51
54
  version: "0"
52
55
  required_rubygems_version: !ruby/object:Gem::Requirement
56
+ none: false
53
57
  requirements:
54
58
  - - ">="
55
59
  - !ruby/object:Gem::Version
60
+ hash: 3
56
61
  segments:
57
62
  - 0
58
63
  version: "0"
59
64
  requirements: []
60
65
 
61
66
  rubyforge_project:
62
- rubygems_version: 1.3.6
67
+ rubygems_version: 1.4.2
63
68
  signing_key:
64
69
  specification_version: 3
65
70
  summary: Gemified Sailthru Client Library