For a deeper look into our DataScope Select REST API, look into:

Overview |  Quickstart |  Documentation |  Downloads |  Tutorials

question

Upvotes
Accepted
1 1 2 2

Tick History REST API: Error in handle_url(handle, url, ...) :can't find object 'location'

Hi. I'm following this tutorial (https://developers.refinitiv.com/en/article-catalog/article/using-tick-history-in-r-language-part-3) to use Refinitiv REST API in R. But I think the question should be general and apply to other languages (Python/C etc).

So I'm not able to get results within 30s time-out period so I'm polling the 'get' method. When running:


url <- "https://selectapi.datascope.refinitiv.com/RestApi/v1/Extractions/ExtractRaw"
r <- httr::GET(location,add_headers(prefer = "respond-async",Authorization = token))


I get the error:

Error in handle_url(handle, url, ...) : ccan't find object 'location'


But nowhere in the tutorial mentions how to define 'location'. So can I get some help on this issue? Thank you.

dss-rest-apidatascope-selectdsstick-history-rest-api
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Hi @ziucqea ,

Thank you for your participation in the forum. Is the reply below satisfactory in resolving your query?

If so please can you click the 'Accept' text next to the appropriate reply? This will guide all community members who have a similar question.

Thanks,
AHS

Please be informed that a reply has been verified as correct in answering the question, and has been marked as such.

Thanks,
AHS

Upvotes
Accepted
79.2k 251 52 74

@ziucqea

Refer to the source code in GitHub, the Location is in the HTTP's headers when the HTTP status code is 202.

RTHExtractRaw <- function(b,path,overwrite = FALSE) {
  url <- "https://selectapi.datascope.refinitiv.com/RestApi/v1/Extractions/ExtractRaw"
  token <- get("token",envir = cacheEnv)
  r <- httr::POST(url,add_headers(prefer = "respond-async",Authorization = token),content_type_json(),body = b,encode = "json")
  if (status_code(r) == 202) {
                 
    message("The request has been accepted but has not yet completed executing asynchronously.\r\nReturn monitor URL\r\n",r$headers$location)
    return(invisible(r$headers$location))
  } else if(status_code(r) == 200) {
    a<-content(r, "parsed", "application/json", encoding="UTF-8")
    message(a$Notes)
    return(RTHRawExtractionResults(a$JobId,path,overwrite))
  } else {
    warn_for_status(r)
    a<-content(r, "parsed", "application/json", encoding="UTF-8")
    return(a)
  }
}

1629689021730.png

Then, the URL in the Location is used with the HTTP get method to check the request status.

RTHCheckRequestStatus <- function(location,path,overwrite = FALSE) {
  token <- get("token",envir = cacheEnv)
  r <- GET(location,add_headers(prefer = "respond-async",Authorization = token))
  if (status_code(r) == 202) {
    message("The request has not yet completed executing asynchronously.\r\nPlease wait a bit and check the request status again.\r\n")
    return(invisible(r$headers$location))
  } else if(status_code(r) == 200) {
    a<-content(r, "parsed", "application/json", encoding="UTF-8")
    message(a$Notes)
    return(RTHRawExtractionResults(a$JobId,path,overwrite))
  } else {
    warn_for_status(r)
    a<-content(r, "parsed", "application/json", encoding="UTF-8")
    return(a)
  }
}

1629689021730.png (54.6 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Hi. Thank you. I'm now able to run the functions. However, should I define path as a csv file or something else? When I set path as a csv file and run RTHCheckRequestStatus(), I get some garbled codes as in the pic. What should I do?qq截图20210823193604.png

qq截图20210823194032.png

Upvotes
1 1 2 2

@jirapongse.phuriphanvichai

Hi. Just repeating my question in the comment for a better readability... I'm now able to run the functions thanks a lot. However, should I define path as a csv file or something else? When I set path as a csv file and run RTHCheckRequestStatus(), I get some garbled codes as in the pic. What should I do?

qq截图20210823193604.png

qq截图20210823194032.png


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@ziucqea

Please share the request's body (b) used with the RTHExtractRaw function.

Upvotes
1 1 2 2

@jirapongse.phuriphanvichai

Hi, my body is:

b='{

"ExtractionRequest": {

"@odata.type": "#DataScope.Select.Api.Extractions.ExtractionRequests.TickHistoryIntradaySummariesExtractionRequest",

"ContentFieldNames": [

"Close Ask",

"Close Bid"


],

"IdentifierList": {

"@odata.type": "#DataScope.Select.Api.Extractions.ExtractionRequests.InstrumentIdentifierList",

"InstrumentIdentifiers": [

{ "Identifier": "AAPL.O", "IdentifierType": "Ric" }

],

"ValidationOptions": null,

"UseUserPreferencesForValidationOptions": false

},

"Condition": {

"MessageTimeStampIn": "LocalExchangeTime",

"ReportDateRangeType": "Range",

"QueryStartDate": "2020-08-17T11:00:00.000Z",

"QueryEndDate": "2020-08-19T11:30:00.000Z",

"SummaryInterval": "OneMinute",

"TimebarPersistence": true,

"DisplaySourceRIC": true

}

}

}'


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
79.2k 251 52 74

@ziucqea

From my test, the output is the gzip file. Therefore, we need to save it as a gzip file.

result = RTHCheckRequestStatus(location,"c:\\d_drive\\test.csv.gz")

Then, uncompress it to get the csv file.


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Thank you. I seem to be able to run the extraction now... Many thanks again

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.