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