Toolbox/goDataverse/search/search.go

77 lines
2.9 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 search
import (
"fmt"
"strings"
//
def "Toolbox/defaults"
con "Toolbox/goDataverse/connect"
tol "Toolbox/goDataverse/tools"
)
// #############################################################################
//
// der parameter "_q_=xxx" wird vor der abfrage in "q=xxx" umgewandelt. hierbei
// handelt es sich um einen workaround, der garantiert, dass die
// parameterreihenfolge bei der übergabe an die abfrage passt.
// aus diesem grund werden hier auch 2 durchläufe benötigt...
//
func SearchByParams(_dvp tol.TDVParams, _params tol.ColMapInt) (string, error) {
var par tol.ColMapInt = make(tol.ColMapInt, 0)
var url string = tol.GetSiteUrl(_dvp) + "/api/search?"
// 1. durchlauf query parameter anhängen
for _, ival := range _params {
// log.Println("SearchByParams(param1):", ival)
for key, val := range ival {
if key == "_q_" {
url = url + key + "=" + val
break
}
}
}
// 2. durchlauf restliche parameter anhängen
for _, ival := range _params {
// log.Println("SearchByParams(param2):", ival)
for key, val := range ival {
if key != "_q_" {
if key != "search" {
url = url + "&" + key + "=" + val
}
}
}
}
// def.LogMessage("", fmt.Sprintf("GetSearchResult(%v) > url: %v", "params", url), def.DEF_loginfo)
fmt.Printf("GetSearchResult(%v) > url: %v\n", "params", url)
response, err := con.GetRequestMap(url, par,
map[string]string{"X-Dataverse-key": tol.GetApiKey(_dvp)})
//
return (fmt.Sprintf("%s", response)), err
}
func SearchSimple(_dvp tol.TDVParams, _alias string, _type string, _advanced string) (string, error) {
var par tol.ColMapInt = make(tol.ColMapInt, 0)
var url string = tol.GetSiteUrl(_dvp) + "/api/search?q=*%type%%alias%&per_page=1000%advanced%"
//
url = strings.ReplaceAll(url, "%alias%", _alias)
url = strings.ReplaceAll(url, "%type%", _type)
url = strings.ReplaceAll(url, "%advanced%", _advanced)
//
def.LogMessage("", fmt.Sprintf("GetSearchResult(%v) > url: %v", "params", url), def.DEF_logdebg)
// log.Printf("GetSearchSimple(%v) > url: %v\n", "params", url)
response, err := con.GetRequestMap(url, par,
map[string]string{"X-Dataverse-key": tol.GetApiKey(_dvp)})
//
return (fmt.Sprintf("%s", response)), err
}