Files
go-simple-graphql/helpers.go
T
lukaszraczyloandGitHub 36ef16ad3d general improvements (#2)
* Replaced strutil.Md5 with crypto/md5 and encoding/hex to reduce dependency and potential allocations.

* Move to improved logging library.

* fixup! Move to improved logging library.
2024-06-28 09:22:52 +01:00

54 lines
1.3 KiB
Go

package gql
import (
"crypto/md5"
"encoding/hex"
"fmt"
"github.com/goccy/go-json"
libpack_logger "github.com/lukaszraczylo/go-simple-graphql/logging"
)
func searchForKeysInMapStringInterface(msi map[string]interface{}, key string) (value any) {
if msi == nil {
return nil
}
return msi[key]
}
func calculateHash(query *Query) string {
hash := md5.Sum([]byte(query.JsonQuery))
return hex.EncodeToString(hash[:])
}
func (b *BaseClient) cacheLookup(hash string) []byte {
obj, _ := b.cache.Get(hash)
return obj
}
func (b *BaseClient) decodeResponse(response []byte) (any, error) {
switch b.responseType {
case "mapstring":
var result map[string]interface{}
err := json.Unmarshal(response, &result)
if err != nil {
b.Logger.Error(&libpack_logger.LogMessage{
Message: "Can't decode response into mapstring",
Pairs: map[string]interface{}{"error": err.Error()},
})
return nil, err
}
return result, nil
case "string":
return string(response), nil
case "byte":
return response, nil
default:
b.Logger.Error(&libpack_logger.LogMessage{
Message: "Can't decode response",
Pairs: map[string]interface{}{"error": "unknown response type"},
})
return nil, fmt.Errorf("Can't decode response - unknown response type specified")
}
}