Initializing help system before first use

dmpiniturl

Purpose
Initialize a dmpresource with user-supplied URL and credentials
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:
DMP_TOKEN_TYPE_BEARER 
DMP_TOKEN_TYPE_JWT 
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.