143 lines
4.8 KiB
Go
143 lines
4.8 KiB
Go
/**
|
|
= Creative Commons Lizenzvertrag =
|
|
Diese Software ist von der archium GmbH, Gera ist lizenziert unter einer Creative Commons Namensnennung - Nicht kommerziell - Keine Bearbeitungen 4.0 International Lizenz. (http://creativecommons.org/licenses/by-nc-nd/4.0/deed.de)
|
|
Individuelle über diese Lizenz hinausgehende Berechtigungen können Sie unter https://archium.org erhalten.
|
|
|
|
= Creative Commons License =
|
|
Software by archium GmbH, Gera is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. (http://creativecommons.org/licenses/by-nc-nd/4.0/)
|
|
Individual permissions beyond the scope of this license may be available at https://archium.org.
|
|
**/
|
|
|
|
package dataset
|
|
|
|
import (
|
|
"fmt"
|
|
// "log"
|
|
"strings"
|
|
|
|
def "Toolbox/defaults"
|
|
con "Toolbox/goDataverse/connect"
|
|
tol "Toolbox/goDataverse/tools"
|
|
|
|
gjs "github.com/tidwall/gjson"
|
|
)
|
|
|
|
func GetDatasetLastVersion(_dp tol.TDVParams, _id string) (string, error) {
|
|
var imajor int64 = 1
|
|
var iminor int64 = 0
|
|
var state string = "draft"
|
|
var url string = tol.GetSiteUrl(_dp) + "/api/datasets/" + _id + "/versions"
|
|
res, err := con.GetRequest(url, tol.ColMap{},
|
|
tol.ColMap{"X-Dataverse-key": tol.GetApiKey(_dp)})
|
|
if err == nil {
|
|
var ver = tol.GetObjectFromStr(fmt.Sprintf("%s", res))
|
|
if ver.IsObject() {
|
|
status := gjs.Get(ver.String(), "status")
|
|
if status.String() == "OK" {
|
|
lst := gjs.Get(ver.String(), "data")
|
|
if lst.IsArray() {
|
|
for _, entry := range lst.Array() {
|
|
if entry.IsObject() {
|
|
tmpstate := gjs.Get(entry.String(), "versionState")
|
|
switch tmpstate.String() {
|
|
case "DRAFT":
|
|
break
|
|
case "RELEASED":
|
|
tmpmajor := gjs.Get(entry.String(), "versionNumber")
|
|
if tmpmajor.Int() > imajor {
|
|
imajor = tmpmajor.Int()
|
|
iminor = gjs.Get(entry.String(), "versionMinorNumber").Int()
|
|
} else {
|
|
if tmpmajor.Int() == imajor {
|
|
tmpminor := gjs.Get(entry.String(), "versionMinorNumber")
|
|
if tmpminor.Int() > iminor {
|
|
iminor = tmpminor.Int()
|
|
}
|
|
}
|
|
}
|
|
state = tmpstate.String()
|
|
break
|
|
//fmt.Println("GetDatasetLastVersion():", _id, imajor, iminor, state, gjs.Get(entry.String(), "id"))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// auswertung: falls keine "released" version vorhanden, dann draft zurück
|
|
var version string = ":" + state
|
|
switch state {
|
|
case "RELEASED":
|
|
version = fmt.Sprintf("%v.%v", imajor, iminor)
|
|
}
|
|
//
|
|
return version, err
|
|
}
|
|
|
|
func GetDatasetByPersistentId(_dp tol.TDVParams, _persist, _version string) (string, error) {
|
|
var persist string = _persist
|
|
var version string = _version
|
|
if len(persist) == 0 {
|
|
persist = _dp.DP_datasetPid
|
|
}
|
|
var url string = tol.GetSiteUrl(_dp) + "/api/datasets/:persistentId/%versions%?persistentId=" + persist
|
|
if len(version) > 0 {
|
|
version = "versions/" + version + "/"
|
|
} else {
|
|
if len(_dp.DP_datasetVersion) > 0 {
|
|
version = "versions/" + _dp.DP_datasetVersion + "/"
|
|
}
|
|
}
|
|
url = strings.Replace(url, "%versions%", version, -1)
|
|
def.LogMessage("GetDatasetByPersistentId(url)", url, def.DEF_logdebg)
|
|
res, err := con.GetRequest(url, tol.ColMap{},
|
|
tol.ColMap{"X-Dataverse-key": tol.GetApiKey(_dp)})
|
|
//
|
|
return (fmt.Sprintf("%s", res)), err
|
|
}
|
|
|
|
func GetDatasetMetadata(_dp tol.TDVParams, _id, _version string) (string, error) {
|
|
var version string = _version
|
|
var url string = tol.GetSiteUrl(_dp) + "/api/datasets/" + _id + "/%versions%/metadata"
|
|
if len(version) > 0 {
|
|
version = "versions/" + version
|
|
} else {
|
|
if len(_dp.DP_datasetVersion) > 0 {
|
|
version = "versions/" + _dp.DP_datasetVersion
|
|
} else {
|
|
version = "versions/1.0"
|
|
}
|
|
}
|
|
url = strings.Replace(url, "%versions%", version, -1)
|
|
def.LogMessage("GetDatasetMetadata(url)", url, def.DEF_logdebg)
|
|
res, err := con.GetRequest(url, tol.ColMap{},
|
|
tol.ColMap{"X-Dataverse-key": tol.GetApiKey(_dp)})
|
|
//
|
|
return (fmt.Sprintf("%s", res)), err
|
|
}
|
|
|
|
func GetDatasetMetafield(_dp tol.TDVParams, _id string) (string, error) {
|
|
var url string = tol.GetSiteUrl(_dp) + "/api/admin/datasetfield/" + _id
|
|
def.LogMessage("GetDatasetMetafield(url)", url, def.DEF_logdebg)
|
|
res, err := con.GetRequest(url, tol.ColMap{},
|
|
tol.ColMap{"X-Dataverse-key": tol.GetApiKey(_dp)})
|
|
//
|
|
return (fmt.Sprintf("%s", res)), err
|
|
}
|
|
|
|
func CreateDataset(_dp tol.TDVParams, _parent, _params string) (string, error) {
|
|
res, err := con.PostRequestB(tol.GetSiteUrl(_dp)+"/api/dataverses/"+_parent+"/datasets",
|
|
[]byte(_params), tol.ColMap{"X-Dataverse-key": tol.GetApiKey(_dp)})
|
|
//
|
|
return (fmt.Sprintf("%s", res)), err
|
|
}
|
|
|
|
//
|
|
func DownloadByDataset(_dp tol.TDVParams) ([]byte, error) {
|
|
res, err := con.GetRequest(tol.GetSiteUrl(_dp)+"/api/access/dataset/:persistentId/?persistentId="+_dp.DP_datasetPid,
|
|
tol.ColMap{}, tol.ColMap{"X-Dataverse-key": tol.GetApiKey(_dp)})
|
|
//
|
|
return res, err
|
|
}
|