Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,16 @@ Add a require statement to reference the Fuel SDK's functionality:
Next, create an instance of the Client class:
> myClient = FuelSDK::Client.new {'client' => { 'id' => CLIENTID, 'secret' => SECRET }}

https://developer.salesforce.com/docs/atlas.en-us.mc-getting-started.meta/mc-getting-started/requestToken.htm

Note: Added new option to client initilizer 'refresh_token_url' (changes depending on ET environment)
> myClient = FuelSDK::Client.new { 'client' => {...}, 'refresh_token_url' => 'https://auth-test.exacttargetapis.com/v1/requestToken', 'defaultwsdl' => 'https://webservice.test.exacttarget.com/etframework.wsdl' }

https://developer.salesforce.com/docs/atlas.en-us.noversion.mc-apis.meta/mc-apis/getting_started_developers_and_the_exacttarget_api.htm

Note: Added 'endpoint_service_url' accessor to Targeting to allow specifying different soap endpoint
> myClient.endpoint_service_url = 'https://webservice.test.exacttarget.com/Service.asmx' # depending on ET instance

Create an instance of the object type we want to work with:
> list = FuelSDK::List.new

Expand Down
11 changes: 8 additions & 3 deletions lib/fuelsdk/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def unpack raw

class Client
attr_accessor :debug, :auth_token, :internal_token, :refresh_token,
:id, :secret, :signature
:id, :secret, :signature, :refresh_token_url, :targeting_endpoint

include FuelSDK::Soap
include FuelSDK::Rest
Expand Down Expand Up @@ -75,8 +75,12 @@ def initialize(params={}, debug=false)

self.jwt = params['jwt'] if params['jwt']
self.refresh_token = params['refresh_token'] if params['refresh_token']
# https://developer.salesforce.com/docs/atlas.en-us.mc-getting-started.meta/mc-getting-started/requestToken.htm
# Allow different request token urls to be used to specify sandbox / production environment
self.refresh_token_url = params['refresh_token_url'] if params['refresh_token_url']

self.wsdl = params["defaultwsdl"] if params["defaultwsdl"]
self.targeting_endpoint = params['targeting_endpoint'] if params['targeting_endpoint']
end

def request_token_data
Expand Down Expand Up @@ -106,7 +110,7 @@ def refresh force=false
if (self.auth_token.nil? || force)
clear_client!
options = request_token_options(request_token_data)
response = post("https://auth.exacttargetapis.com/v1/requestToken", options)
response = post(self.refresh_token_url || "https://auth.exacttargetapis.com/v1/requestToken", options)
raise "Unable to refresh token: #{response['message']}" unless response.has_key?('accessToken')

self.auth_token = response['accessToken']
Expand All @@ -115,8 +119,9 @@ def refresh force=false
end
end

# Note: never force refresh, leave that to outside logic to update tokens after they expire
def refresh!
refresh true
refresh
end

def AddSubscriberToList(email, ids, subscriber_key = nil)
Expand Down
13 changes: 9 additions & 4 deletions lib/fuelsdk/targeting.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
module FuelSDK::Targeting
attr_accessor :auth_token
attr_accessor :endpoint
attr_accessor :endpoint_service_url

include FuelSDK::HTTPRequest

Expand All @@ -9,14 +10,18 @@ def refresh
end

def endpoint
@endpoint ||= determine_stack
@endpoint ||= self.targeting_endpoint || determine_stack(@endpoint_service_url)
end

def determine_stack
# https://developer.salesforce.com/docs/atlas.en-us.noversion.mc-apis.meta/mc-apis/getting_started_developers_and_the_exacttarget_api.htm
# Allow different endpoint url to be used between sandbox / production ET environment
def determine_stack(endpoint_service_url=nil)
refresh unless self.auth_token
options = {'params' => {'access_token' => self.auth_token}}
response = get("https://www.exacttargetapis.com/platform/v1/endpoints/soap", options)
raise 'Unable to determine stack' unless response.success?
response = get(endpoint_service_url || "https://www.exacttargetapis.com/platform/v1/endpoints/soap", options)

raise "Unable to determine stack #{response.code}, #{response.body.inspect}" unless response.success?
self.targeting_endpoint = response['url']
response['url']
end
end
2 changes: 1 addition & 1 deletion lib/fuelsdk/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module FuelSDK
VERSION = "0.1.10"
VERSION = "0.1.14"
end