But it is a kind of solution 
package main
import (
"net/http"
"fmt"
"strconv"
"time"
"strings"
"os/exec"
"log"
)
var isin_map = make(map[string]string)
func cobas_xlsx2json(w http.ResponseWriter, req *http.Request) {
t := strconv.FormatInt(time.Now().Unix(), 10)
fmt.Println(t, req.URL.Path)
url_string := strings.TrimPrefix(req.URL.Path, "/")
fmt.Println(url_string)
urlkey := url_string + "_URL"
filenamekey := url_string + "_FILENAME"
sheetnamekey := url_string + "_SHEETNAME"
fmt.Println(t, isin_map[urlkey])
fmt.Println(t, isin_map[filenamekey])
fmt.Println(t, isin_map[sheetnamekey])
// get xlsx file
getxlsx := "curl --output " + isin_map[filenamekey] + " " + isin_map[urlkey]
fmt.Println(getxlsx)
curl_out, err := exec.Command("bash", "-c", getxlsx).Output()
if err != nil {
log.Fatalln(err)
}
fmt.Println(curl_out, err)
// convert xlsx to json
convxlsx := "xlsx2json " + isin_map[filenamekey] + " " + isin_map[sheetnamekey]
fmt.Println(convxlsx)
conv_out, err := exec.Command("bash", "-c", convxlsx).Output()
if err != nil {
log.Fatalln(err)
}
str_conv_out := string(conv_out)
fmt.Println(str_conv_out, err)
jsonstring := strings.Replace(str_conv_out, "[\"Fecha\",\"Liquidativo\"],", "", 1)
fmt.Println(jsonstring)
fmt.Fprintf(w, jsonstring)
}
func headers(w http.ResponseWriter, req *http.Request) {
for name, headers := range req.Header {
for _, h := range headers {
fmt.Fprintf(w, "%v: %v\n", name, h)
}
}
}
func main() {
// ES0119199034
isin_map["ES0119199034_URL"] = "https://cobas-static-content.s3.eu-west-1.amazonaws.com/documentos/cobas/Documentos+web+publica+Yuri+-+ESP/Fondos+de+inversion/Cobas+Internacional/Clase+A/internacional-diario.xlsx"
isin_map["ES0119199034_FILENAME"] = "ES0119199034.xlsx"
isin_map["ES0119199034_SHEETNAME"] = "COBAS_INTERNACIONAL_A"
// ES0119199026
isin_map["ES0119199026_URL"] = "https://cobas-static-content.s3.eu-west-1.amazonaws.com/documentos/cobas/Documentos+web+publica+Yuri+-+ESP/Fondos+de+inversion/Cobas+Internacional/Clase+B/internacional-diario.xlsx"
isin_map["ES0119199026_FILENAME"] = "ES0119199026.xlsx"
isin_map["ES0119199026_SHEETNAME"] = "COBAS_INTERNACIONAL_B"
http.HandleFunc("/", cobas_xlsx2json)
http.HandleFunc("/headers", headers)
http.ListenAndServe(":8083", nil)
}
This is golang, but not completly, it uses curl from my OS and xlsx2json from datatools/xlsx2json.1.md at main · caltechlibrary/datatools · GitHub
It doesn’t look nice, it’s a quick fix, and it’s probably not usable on every OS. But it works as a study.
http://localhost:8083/ES0119199034 or http://localhost:8083/{ISIN}
$[*][0]
yyyy/MM/dd
$[*][1]