Compile insert API_Setup /*********************************************************************************************************************** This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written permission from SRP Computer Solutions, Inc. Name : API_Setup Description : Sets up the current web API. Notes : See the comments added below. History : (Date, Initials, Notes) 11/17/18 dmb Original programmer. - [SRPFW-257] 02/03/19 dmb Update URLSegments logic to exclude the query params that are now returned by the FullEndpointURL service. - [SRPFW-257] 02/11/19 dmb Add FullEndpointNoQuery variable. This is the same as the FullEndpointURL but strips off the query params. This will be used by logic that needs the full endpoint and also needs to append additional segments. - [SRPFW-257] ***********************************************************************************************************************/ Common /Debugging/ DebugFlag@ // Utility services. Declare function Error_Services, HTTP_Services, HTTP_Resource_Services, RetStack Declare subroutine Error_Services, HTTP_Services, HTTP_Resource_Services // The API URL is fixed for any application but should be customized for the application itself. This is not always // passed into the request correctly, especially if a proxy service or rewrite rules are being used. APIURL = HTTP_Services('GetAPIRootURL', True$) // The Full End Point URL indicates the URL submitted by the client. FullEndpointURL = HTTP_Services('GetFullEndpointURL') FullEndpointURLNoQuery = FullEndpointURL[1, 'F?'] URLSegments = FullEndpointURLNoQuery If URLSegments[-1, 1] EQ '/' then URLSegments[-1, 1] = '' Convert '/' to @FM in URLSegments NumSegments = DCount(URLSegments, @FM) ParentURL = Field(FullEndpointURL, '/', 1, NumSegments - 1) EndpointSegment = URLSegments ParentSegment = URLSegments // The HTTP method (or verb) submitted by the client. HTTPMethod = HTTP_Services('GetHTTPRequestMethod') // Get the name of the current service handler in case it needs to be used for error management. CurrentAPI = RetStack()<1>