#!/usr/bin/ruby# Version 1.0# Last Updated 6/22/2009require'json'classSmtpApiHeaderdefinitialize()@data={}enddefaddTo(to)@data['to']||=[]@data['to']+=to.kind_of?(Array)?to:[to]enddefaddSubVal(var,val)ifnot@data['sub']@data['sub']={}endifval.instance_of?(Array)@data['sub'][var]=valelse@data['sub'][var]=[val]endenddefsetUniqueArgs(val)ifval.instance_of?(Hash)@data['unique_args']=valendenddefsetCategory(cat)@data['category']=catenddefaddFilterSetting(fltr,setting,val)ifnot@data['filters']@data['filters']={}endifnot@data['filters'][fltr]@data['filters'][fltr]={}endifnot@data['filters'][fltr]['settings']@data['filters'][fltr]['settings']={}end@data['filters'][fltr]['settings'][setting]=valenddefasJSON()json=JSON.generate@datareturnjson.gsub(/(["\]}])([,:])(["\[{])/,'\\1\\2 \\3')enddefas_string()json=asJSON()str='X-SMTPAPI: %s'%json.gsub(/(.{1,72})( +|$\n?)|(.{1,72})/,"\\1\\3\n")returnstrendend
#!/usr/bin/rubyrequire'SmtpApiHeader.rb'hdr=SmtpApiHeader.newreceiver=['kyle','bob','someguy']time='1pm'name='kyle'hdr.addTo(receiver)hdr.addTo('kyle2')hdr.addSubVal('-time-',time)hdr.addSubVal('-name-',name)hdr.addFilterSetting('subscriptiontrack','enable',1)hdr.addFilterSetting('twitter','enable',1)#please check the apps available for your current package at www.sendgrid.com/pricing.htmlhdr.setUniqueArgs({'test'=>1,'foo'=>2})a=hdr.asJSON()a=hdr.as_string()printaprint"\n"