dmpiniturl
Purpose
Synopsis
procedure dmpiniturl(res:dmpresource, url:text, authtokentype:text, authtoken:text)
procedure dmpiniturl(res:dmpresource, url:text, authheaders:array(set of string) of text)
procedure dmpiniturl(res:dmpresource, url:text, getauthheaders:function(res:dmpresource, authheaders:array(set of string) of text):integer
Arguments
|
res
|
The
dmpresource value to initialize.
|
||||
|
url
|
The resource root URL. All dmphttp calls through this resource will be relative to this URL. |
||||
|
authtokentype
|
The type of authorization token, expressed as one of the following constants:
|
||||
|
authtoken
|
The authorization token to add to outgoing HTTP requests made through this resource.
|
||||
|
authheaders
|
A collection of HTTP Headers to add to outgoing HTTP requests made through this resource.
|
||||
|
getauthheaders
|
A function pointer which will be called to fetch the HTTP headers to add to outgoing requests. This function should populate the authheaders array with the headers to use and return the number of seconds for which they can be used, or 0 if fresh headers should be requested for every request.
|
Example 1
This example demonstrates passing fixed authorization headers to the dmpresource
declarations
res: dmpresource
headers: dynamic array(set of string) of text
end-declarations
headers("Cookie") := "SESSIONID=8364825249"
headers("Authorization") := "Bearer 834692364jdnvdjfvb7t3jkd78"
dmpiniturl(res, "http://fakeresource.example.com/", headers)
if res.status<>DMP_OK then
writeln('ERROR: ',res.lasterror)
end-if
Example 2
This example demonstrates dynamically requesting a bearer token to attach to requests
declarations
CLIENT_ID="orughu8sbgofb954g6htg0rwehgosdfg"
SECRET="guhsogbosfgosdngds"
public request,response: text
res: dmpresource
end-declarations
function addauthheader(res:dmpresource,
headers:array(set of string) of text): integer
! Make REST request to get bearer token for given client_id/secret
request := '{"clientId":"'+CLIENT_ID+'", "secret":"'+SECRET+'"}'
if dmphttppost(res, '/rest/auth/token', "text:request",
"text:response")<>200 or res.status<>DMP_OK
then
writeln('ERROR: Failed to request bearer token')
else
! Bearer token will be in response body
headers("Authorization") := "Bearer "+response
! Bearer token will be usable for 30 minutes
returned := 1800
end-if
end-function
dmpiniturl(res, "http://fakeresource.example.com/", ->addauthheader)
if res.status<>DMP_OK then
writeln('ERROR: ',res.lasterror)
end-if
Further information
1. This procedure is intended to assist users to write code interacting with DMP resources that will work both within Xpress DMP components and when executed locally.
2. If you pass an
authtoken value, all HTTP requests made through this resource will be decorated with an appropriate
Authorization: header.
3. If you pass an
authheaders value, all HTTP requests made through this resource will be decorated with HTTP headers read from this array (indices are the header names).
4. If you pass a
getauthheaders value, this function pointer will be called on the first HTTP request to this resource, and the HTTP request will be decorated with the headers the function writes to the
authheaders array (indices are header names). The value returned by the function will be a number of seconds; once this timespan has elapsed, the getauthheaders function will be called again on the next HTTP request to fetch fresh headers.
5. The
getauthheaders function can itself make an HTTP request to the
dmpresource in the usual way (e.g. to request a bearer token); no authorization headers will be added to requests made from within a
getauthheaders function.
6. In the event of a failure to populate the headers, the
getauthheaders function should call the
seterror function to set the error status on the
dmpresource. Failures to populate authorization headers will automatically be retried up to
max_retries times.
7. You should check the
status attribute of the
dmpresource after calling this procedure.
© 2001-2024 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation ("FICO"). Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.
