module FuelSDK module ET_SoapGet def get client.soap_get id, properties, filter end def info client.soap_describe id end end module ET_SoapCUD #create, update, delete def post client.soap_post id, properties end def patch client.soap_patch id, properties end def delete client.soap_delete id, properties end end module ET_RestGet def get client.rest_get id, properties end end module ET_RestCUD def post client.rest_post id, properties end def patch client.rest_patch id, properties end def delete client.rest_delete id, properties end end class ET_Base attr_accessor :filter, :properties, :client attr_reader :id alias props= properties= # backward compatibility alias authStub= client= # backward compatibility def id self.class.name.split('::').pop.split('_').pop end end class ET_BounceEvent < ET_Base include ET_SoapGet end class ET_ClickEvent < ET_Base include ET_SoapGet end class ET_ContentArea < ET_Base include ET_SoapGet include ET_SoapCUD end class ET_Folder < ET_Base include ET_SoapGet include ET_SoapCUD def id 'DataFolder' end end class ET_Email < ET_Base include ET_SoapGet include ET_SoapCUD end class ET_List < ET_Base include ET_SoapGet include ET_SoapCUD class Subscriber < ET_Base include ET_SoapGet def id 'ListSubscriber' end end end class ET_OpenEvent < ET_Base include ET_SoapGet end class ET_SentEvent < ET_Base include ET_SoapGet end class ET_Subscriber < ET_Base include ET_SoapGet include ET_SoapCUD end class ET_UnsubEvent < ET_Base include ET_SoapGet end class ET_TriggeredSend < ET_Base attr_accessor :subscribers include ET_SoapGet include ET_SoapCUD def id 'TriggeredSendDefinition' end def send client.soap_post 'TriggeredSend', 'TriggeredSendDefinition' => properties, 'Subscribers' => subscribers end end class ET_Campaign < ET_Base include ET_RestGet include ET_RestCUD def properties @properties ||= {} @properties.merge! 'id' => '' unless @properties.include? 'id' @properties end def id "https://www.exacttargetapis.com/hub/v1/campaigns/%{id}" end class Asset < ET_Base include ET_RestGet include ET_RestCUD def properties @properties ||= {} @properties.merge! 'assetId' => '' unless @properties.include? 'assetId' @properties end def id 'https://www.exacttargetapis.com/hub/v1/campaigns/%{id}/assets/%{assetId}' end end end end