Skip to content

Instantly share code, notes, and snippets.

@AugustoPedraza
Created March 3, 2016 15:41
Show Gist options
  • Save AugustoPedraza/e8bc41b6e6c1aacd9adc to your computer and use it in GitHub Desktop.
Save AugustoPedraza/e8bc41b6e6c1aacd9adc to your computer and use it in GitHub Desktop.
Official Yodlee code example
#Code downloaded from https://developer.yodlee.com/Aggregation_API/Sample_Apps/RUBY
require './aggregation/SiteApp'
require './util/Encryption'
$encryptCall = Encryption.new
$siteCall = SiteApp.new
$providerAccountId = ''
class AddSiteAccount
@@fcqn= "AddSiteAccount"
def addSiteAccount()
providerId = $loginForm['provider'][0]['id']
@requestHeader = {:authorization => 'cobSession='+$loginTokens['cobSession']+',userSession='+$loginTokens['userSession']}
@requestBody = JSON($loginForm)
@addSiteAccountURL = $localURLVer1+"v1/providers/"+providerId.to_s
@jsonResponse = $httpCall.doPostUser(@addSiteAccountURL, @requestBody, @requestHeader)
puts '--------------------------------------------------'
puts "Add Account Response:"
puts '--------------------------------------------------'
@parsedJson = @jsonResponse
$providerAccountId = @parsedJson['providerAccountId']
if $providerAccountId == nil
puts "$$$$ PLEASE VERIFY WHETHER PKI FEATURE IS ENABLED OR NOT"
else
puts 'Provider Account ID: ' + $providerAccountId.to_s
puts 'Refresh Status: ' + @parsedJson['refreshInfo']['refreshStatus']
end
puts '--------------------------------------------------'
end
def getRefreshStatus()
sleep(5)
@requestHeader = {:authorization => 'cobSession='+$loginTokens['cobSession']+',userSession='+$loginTokens['userSession']}
@refreshStatusURL = $localURLVer1+"v1/refresh/"+$providerAccountId.to_s
@jsonResponse = $httpCall.doGet(@refreshStatusURL, @requestHeader)
puts '--------------------------------------------------'
puts "Account Refresh Response:"
puts '--------------------------------------------------'
puts "Provider Account ID: "+ $providerAccountId.to_s
@parsedJson = @jsonResponse
@refreshStatus = @parsedJson['refreshInfo']['refreshStatus'].to_s
@refreshStatusCode = @parsedJson['refreshInfo']['statusCode'].to_s
puts "Refresh Status: "+ @refreshStatus
if @refreshStatus == 'LOGIN_FAILURE' or @refreshStatus == 'REFRESH_TIMED_OUT' or @refreshStatus == 'REFRESH_CANCELLED' or @refreshStatus == 'REFRESH_COMPLETED_WITH_UNCERTAIN_ACCOUNT' or @refreshStatus == 'SITE_CANNOT_BE_REFRESHED' or @refreshStatus == 'REFRESHED_TOO_RECENTLY' or @refreshStatus == 'REFRESH_COMPLETED_ACCOUNTS_ALREADY_AGGREGATED'
puts 'Please try again'
else
while @refreshStatus != 'REFRESH_COMPLETED' do
if @refreshStatus == 'LOGIN_FAILURE' or @refreshStatus == 'REFRESH_TIMED_OUT' or @refreshStatus == 'REFRESH_CANCELLED' or @refreshStatus == 'REFRESH_COMPLETED_WITH_UNCERTAIN_ACCOUNT' or @refreshStatus == 'SITE_CANNOT_BE_REFRESHED' or @refreshStatus == 'REFRESHED_TOO_RECENTLY' or @refreshStatus == 'REFRESH_COMPLETED_ACCOUNTS_ALREADY_AGGREGATED'
break
end
loginForm = @jsonResponse['loginForm']
if loginForm == nil
@jsonResponse = $httpCall.doGet(@refreshStatusURL, @requestHeader)
@refreshStatus = @jsonResponse['refreshInfo']['refreshStatus']
puts "Refresh Status: "+ @refreshStatus
else
break
end
end
if (@refreshStatus != 'LOGIN_FAILURE' or @refreshStatus != 'REFRESH_TIMED_OUT' or @refreshStatus != 'REFRESH_CANCELLED' or @refreshStatus != 'REFRESH_COMPLETED_WITH_UNCERTAIN_ACCOUNT' or @refreshStatus != 'SITE_CANNOT_BE_REFRESHED' or @refreshStatus != 'REFRESHED_TOO_RECENTLY' or @refreshStatus != 'REFRESH_COMPLETED_ACCOUNTS_ALREADY_AGGREGATED') and @refreshStatus != 'REFRESH_COMPLETED'
$addSiteCall.updateSiteAccount(@jsonResponse)
end
end
puts '--------------------------------------------------'
end
def updateSiteAccount(jsonResponse)
@requestHeader = {:authorization => 'cobSession='+$loginTokens['cobSession']+',userSession='+$loginTokens['userSession']}
@refreshStatusURL = $localURLVer1+"v1/providers/"+$providerAccountId.to_s
if jsonResponse.to_s.include? "token"
puts 'Token verification in-progress...'
jsonResponse['loginForm']['row'][0]['field'][0]['value'] = "123456"
elsif jsonResponse.to_s.include? "questionAndAnswer"
puts 'QA verification in-progress...'
if $pkiEnabled == 0
jsonResponse['loginForm']['row'][0]['field'][0]['value'] = "Texas"
jsonResponse['loginForm']['row'][1]['field'][0]['value'] = "w3schools"
else
jsonResponse['loginForm']['row'][0]['field'][0]['value'] = $encryptCall.encryptData("Texas")
jsonResponse['loginForm']['row'][1]['field'][0]['value'] = $encryptCall.encryptData("w3schools")
end
end
@requestBody = "MFAChallenge="+jsonResponse.to_s
@jsonResponse = $httpCall.doPut(@refreshStatusURL, @requestBody,@requestHeader)
@jsonResult = @jsonResponse['MFAChallenge'].to_s
if @jsonResult == 'Success'
if jsonResponse.to_s.include? "token"
puts 'Token verification process successfull!!!!'
elsif jsonResponse.to_s.include? "questionAndAnswer"
puts 'QA verification process successfull!!!!'
end
$addSiteCall.getRefreshStatus()
else
puts 'Please try again'
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment