annotate ogc_api_processes_wrapper.R @ 0:f6288dd4b77a draft

planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
author ecology
date Sat, 04 May 2024 08:42:42 +0000
parents
children bcb6009d5af7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
1 library("httr2")
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
2 library("jsonlite")
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
3 library("getopt")
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
4
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
5 cat("start generic wrapper service \n")
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
6
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
7 getParameters <- function(){
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
8 args <- commandArgs(trailingOnly = TRUE)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
9 con <- file("inputs.json", "r")
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
10 line <- readLines(con, n = 1)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
11 json <- fromJSON(line)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
12 close(con)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
13 return(json$conditional_process)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
14 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
15
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
16 parseResponseBody <- function(body) {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
17 hex <- c(body)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
18 intValues <- as.integer(hex)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
19 rawVector <- as.raw(intValues)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
20 readableOutput <- rawToChar(rawVector)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
21 jsonObject <- jsonlite::fromJSON(readableOutput)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
22 return(jsonObject)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
23 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
24
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
25 getOutputs <- function(inputs, output, server) {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
26 url <- paste(paste(server, "/processes/", sep = ""), inputs$select_process, sep = "")
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
27 request <- request(url)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
28 response <- req_perform(request)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
29 responseBody <- parseResponseBody(response$body)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
30 outputs <- list()
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
31
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
32 for (x in 1:length(responseBody$outputs)) {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
33 outputformatName <- paste(names(responseBody$outputs[x]), "_outformat", sep="")
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
34 output_item <- list()
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
35
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
36 for (p in names(inputs)) {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
37 if(p == outputformatName){
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
38 format <- list("mediaType" = inputs[[outputformatName]])
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
39 output_item$format <- format
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
40 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
41 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
42 output_item$transmissionMode <- "reference"
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
43 outputs[[x]] <- output_item
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
44 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
45
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
46 names(outputs) <- names(responseBody$outputs)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
47 return(outputs)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
48 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
49
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
50 executeProcess <- function(url, process, requestBodyData, output) {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
51 url <- paste(paste(paste(url, "processes/", sep = ""), process, sep = ""), "/execution", sep = "")
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
52 response <- request(url) %>%
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
53 req_headers(
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
54 "accept" = "/*",
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
55 "Prefer" = "respond-async;return=representation",
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
56 "Content-Type" = "application/json"
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
57 ) %>%
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
58 req_body_json(requestBodyData) %>%
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
59 req_perform()
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
60
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
61 cat("\n Process executed")
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
62 cat("\n status: ", response$status_code)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
63 cat("\n jobID: ", parseResponseBody(response$body)$jobID, "\n")
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
64
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
65 jobID <- parseResponseBody(response$body)$jobID
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
66
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
67 return(jobID)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
68 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
69
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
70 checkJobStatus <- function(server, jobID) {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
71 response <- request(paste0(server, "jobs/", jobID)) %>%
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
72 req_headers(
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
73 'accept' = 'application/json'
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
74 ) %>%
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
75 req_perform()
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
76 jobStatus <- parseResponseBody(response$body)$status
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
77 jobProgress <- parseResponseBody(response$body)$progress
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
78 cat(paste0("\n status: ", jobStatus, ", progress: ", jobProgress))
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
79 return(jobStatus)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
80 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
81
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
82 getStatusCode <- function(server, jobID) {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
83 url <- paste0(server, "jobs/", jobID)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
84 response <- request(url) %>%
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
85 req_headers(
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
86 'accept' = 'application/json'
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
87 ) %>%
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
88 req_perform()
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
89 return(response$status_code)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
90 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
91
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
92 getResult <- function (server, jobID) {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
93 response <- request(paste0(server, "jobs/", jobID, "/results")) %>%
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
94 req_headers(
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
95 'accept' = 'application/json'
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
96 ) %>%
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
97 req_perform()
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
98 return(response)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
99 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
100
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
101 retrieveResults <- function(server, jobID, outputData) {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
102 status_code <- getStatusCode(server, jobID)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
103 if(status_code == 200){
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
104 status <- "running"
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
105 cat(status)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
106 while(status == "running"){
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
107 jobStatus <- checkJobStatus(server, jobID)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
108 if (jobStatus == "successful") {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
109 status <- jobStatus
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
110 result <- getResult(server, jobID)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
111 if (result$status_code == 200) {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
112 resultBody <- parseResponseBody(result$body)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
113 urls <- unname(unlist(lapply(resultBody, function(x) x$href)))
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
114 urls_with_newline <- paste(urls, collapse = "\n")
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
115 sink(paste0(outputData, "_result_urls.txt"))
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
116 cat(urls_with_newline, "\n")
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
117 sink()
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
118 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
119 } else if (jobStatus == "failed") {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
120 status <- jobStatus
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
121 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
122 Sys.sleep(3)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
123 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
124 cat("\n done \n")
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
125 } else if (status_code1 == 400) {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
126 print("A query parameter has an invalid value.")
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
127 } else if (status_code1 == 404) {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
128 print("The requested URI was not found.")
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
129 } else if (status_code1 == 500) {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
130 print("The requested URI was not found.")
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
131 } else {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
132 print(paste("HTTP", status_code1, "Error:", resp1$status_message))
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
133 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
134 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
135
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
136 is_url <- function(x) {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
137 grepl("^https?://", x)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
138 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
139
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
140 server <- "https://ospd.geolabs.fr:8300/ogc-api/"
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
141
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
142 inputParameters <- getParameters()
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
143
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
144 outputLocation <- inputParameters$outputData
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
145
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
146 outputs <- getOutputs(inputParameters, outputLocation, server)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
147
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
148 for (key in names(inputParameters)) {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
149 print(inputParameters[[key]])
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
150 if (is.character(inputParameters[[key]]) && (endsWith(inputParameters[[key]], ".dat") || endsWith(inputParameters[[key]], ".txt"))) {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
151 con <- file(inputParameters[[key]], "r")
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
152 url_list <- list()
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
153 while (length(line <- readLines(con, n = 1)) > 0) {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
154 if (is_url(line)) {
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
155 url_list <- c(url_list, list(list(href = trimws(line))))
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
156 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
157 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
158 close(con)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
159 inputParameters[[key]] <- url_list
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
160 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
161 }
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
162
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
163 jsonData <- list(
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
164 "inputs" = inputParameters,
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
165 "outputs" = outputs
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
166 )
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
167
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
168 jobID <- executeProcess(server, inputParameters$select_process, jsonData, outputLocation)
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
169
f6288dd4b77a planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/ogc_api_processes_wrapper commit 4089d69de9c54df0930f55572e95bf3d22bf5e70
ecology
parents:
diff changeset
170 retrieveResults(server, jobID, outputLocation)