lib/sailthru.rb in sailthru-client-notest-1.2 vs lib/sailthru.rb in sailthru-client-notest-2.0.0
- old
+ new
@@ -7,11 +7,11 @@
require 'digest/md5'
require 'net/http/post/multipart'
module Sailthru
- Version = VERSION = '1.15'
+ Version = VERSION = '2.0.0'
class SailthruClientException < Exception
end
module Helpers
@@ -404,20 +404,39 @@
# TrueClass or FalseClass, Returns true if the incoming request is an authenticated optout post.
def receive_optout_post(params, request)
if request.post?
[:action, :email, :sig].each { |key| return false unless params.has_key?(key) }
- return false unless params[:action] == :optout
+ return false unless params[:action] == 'optout'
sig = params.delete(:sig)
return false unless sig == get_signature_hash(params, @secret)
return true
else
return false
end
end
+
+ # params:
+ # params, Hash
+ # request, String
+ # returns:
+ # TrueClass or FalseClass, Returns true if the incoming request is an authenticated hardbounce post.
+ def receive_hardbounce_post(params, request)
+ if request.post?
+ [:action, :email, :sig].each { |key| return false unless params.has_key?(key) }
+ return false unless params[:action] == 'hardbounce'
+
+ sig = params.delete(:sig)
+ return false unless sig == get_signature_hash(params, @secret)
+ return true
+ else
+ return false
+ end
+ end
+
# params:
# email, String
# items, String
# incomplete, Integer
# message_id, String
@@ -528,10 +547,11 @@
# title, String
# url, String
# date, String
# tags, Array or Comma separated string
# vars, Hash
+ # options, Hash
#
# Push a new piece of content to Sailthru, triggering any applicable alerts.
# http://docs.sailthru.com/api/content
def push_content(title, url, date = nil, tags = nil, vars = {}, options = {})
data = options
@@ -714,10 +734,80 @@
data = options
data['id'] = id
api_post(:user, data)
end
+ # params
+ # Get an existing trigger
+ def get_triggers()
+ api_get(:trigger, {})
+ end
+
+ # params
+ # template, String
+ # trigger_id, String
+ # Get an existing trigger
+ def get_trigger_by_template(template, trigger_id = nil)
+ data = {}
+ data['template'] = template
+ if trigger_id != nil then data['trigger_id'] = trigger_id end
+ api_get(:trigger, data)
+ end
+
+ # params
+ # event, String
+ # Get an existing trigger
+ def get_trigger_by_event(event)
+ data = {}
+ data['event'] = event
+ api_get(:trigger, data)
+ end
+
+ # params
+ # template, String
+ # time, String
+ # time_unit, String
+ # event, String
+ # zephyr, String
+ # Create or update a trigger
+ def post_template_trigger(template, time, time_unit, event, zephyr)
+ data = {}
+ data['template'] = template
+ data['time'] = time
+ data['time_unit'] = time_unit
+ data['event'] = event
+ data['zephyr'] = zephyr
+ api_post(:trigger, data)
+ end
+
+ # params
+ # template, String
+ # time, String
+ # time_unit, String
+ # zephyr, String
+ # Create or update a trigger
+ def post_event_trigger(event, time, time_unit, zephyr)
+ data = {}
+ data['time'] = time
+ data['time_unit'] = time_unit
+ data['event'] = event
+ data['zephyr'] = zephyr
+ api_post(:trigger, data)
+ end
+
+ # params
+ # id, String
+ # event, String
+ # options, Hash (Can contain vars, Hash and/or key)
+ # Notify Sailthru of an Event
+ def post_event(id, event, options = {})
+ data = options
+ data['id'] = id
+ data['event'] = event
+ api_post(:event, data)
+ end
+
# Perform API GET request
def api_get(action, data)
api_request(action, data, 'GET')
end
@@ -839,10 +929,10 @@
response = http.start {
http.request(req)
}
rescue Exception => e
- raise SailthruClientException.new("Unable to open stream: #{_uri}\n#{e}");
+ raise SailthruClientException.new(["Unable to open stream: #{_uri}", e.inspect, e.backtrace].join("\n"));
end
if response.body
return response.body
else