558 lines
14 KiB
Go
558 lines
14 KiB
Go
|
|
// Code generated by ndpgen. DO NOT EDIT.
|
||
|
|
//
|
||
|
|
// This file contains client wrappers for the Cache host service.
|
||
|
|
// It is intended for use in Navidrome plugins built with TinyGo.
|
||
|
|
//
|
||
|
|
//go:build wasip1
|
||
|
|
|
||
|
|
package host
|
||
|
|
|
||
|
|
import (
|
||
|
|
"encoding/json"
|
||
|
|
"errors"
|
||
|
|
|
||
|
|
"github.com/navidrome/navidrome/plugins/pdk/go/pdk"
|
||
|
|
)
|
||
|
|
|
||
|
|
// cache_setstring is the host function provided by Navidrome.
|
||
|
|
//
|
||
|
|
//go:wasmimport extism:host/user cache_setstring
|
||
|
|
func cache_setstring(uint64) uint64
|
||
|
|
|
||
|
|
// cache_getstring is the host function provided by Navidrome.
|
||
|
|
//
|
||
|
|
//go:wasmimport extism:host/user cache_getstring
|
||
|
|
func cache_getstring(uint64) uint64
|
||
|
|
|
||
|
|
// cache_setint is the host function provided by Navidrome.
|
||
|
|
//
|
||
|
|
//go:wasmimport extism:host/user cache_setint
|
||
|
|
func cache_setint(uint64) uint64
|
||
|
|
|
||
|
|
// cache_getint is the host function provided by Navidrome.
|
||
|
|
//
|
||
|
|
//go:wasmimport extism:host/user cache_getint
|
||
|
|
func cache_getint(uint64) uint64
|
||
|
|
|
||
|
|
// cache_setfloat is the host function provided by Navidrome.
|
||
|
|
//
|
||
|
|
//go:wasmimport extism:host/user cache_setfloat
|
||
|
|
func cache_setfloat(uint64) uint64
|
||
|
|
|
||
|
|
// cache_getfloat is the host function provided by Navidrome.
|
||
|
|
//
|
||
|
|
//go:wasmimport extism:host/user cache_getfloat
|
||
|
|
func cache_getfloat(uint64) uint64
|
||
|
|
|
||
|
|
// cache_setbytes is the host function provided by Navidrome.
|
||
|
|
//
|
||
|
|
//go:wasmimport extism:host/user cache_setbytes
|
||
|
|
func cache_setbytes(uint64) uint64
|
||
|
|
|
||
|
|
// cache_getbytes is the host function provided by Navidrome.
|
||
|
|
//
|
||
|
|
//go:wasmimport extism:host/user cache_getbytes
|
||
|
|
func cache_getbytes(uint64) uint64
|
||
|
|
|
||
|
|
// cache_has is the host function provided by Navidrome.
|
||
|
|
//
|
||
|
|
//go:wasmimport extism:host/user cache_has
|
||
|
|
func cache_has(uint64) uint64
|
||
|
|
|
||
|
|
// cache_remove is the host function provided by Navidrome.
|
||
|
|
//
|
||
|
|
//go:wasmimport extism:host/user cache_remove
|
||
|
|
func cache_remove(uint64) uint64
|
||
|
|
|
||
|
|
type cacheSetStringRequest struct {
|
||
|
|
Key string `json:"key"`
|
||
|
|
Value string `json:"value"`
|
||
|
|
TtlSeconds int64 `json:"ttlSeconds"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type cacheGetStringRequest struct {
|
||
|
|
Key string `json:"key"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type cacheGetStringResponse struct {
|
||
|
|
Value string `json:"value,omitempty"`
|
||
|
|
Exists bool `json:"exists,omitempty"`
|
||
|
|
Error string `json:"error,omitempty"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type cacheSetIntRequest struct {
|
||
|
|
Key string `json:"key"`
|
||
|
|
Value int64 `json:"value"`
|
||
|
|
TtlSeconds int64 `json:"ttlSeconds"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type cacheGetIntRequest struct {
|
||
|
|
Key string `json:"key"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type cacheGetIntResponse struct {
|
||
|
|
Value int64 `json:"value,omitempty"`
|
||
|
|
Exists bool `json:"exists,omitempty"`
|
||
|
|
Error string `json:"error,omitempty"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type cacheSetFloatRequest struct {
|
||
|
|
Key string `json:"key"`
|
||
|
|
Value float64 `json:"value"`
|
||
|
|
TtlSeconds int64 `json:"ttlSeconds"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type cacheGetFloatRequest struct {
|
||
|
|
Key string `json:"key"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type cacheGetFloatResponse struct {
|
||
|
|
Value float64 `json:"value,omitempty"`
|
||
|
|
Exists bool `json:"exists,omitempty"`
|
||
|
|
Error string `json:"error,omitempty"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type cacheSetBytesRequest struct {
|
||
|
|
Key string `json:"key"`
|
||
|
|
Value []byte `json:"value"`
|
||
|
|
TtlSeconds int64 `json:"ttlSeconds"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type cacheGetBytesRequest struct {
|
||
|
|
Key string `json:"key"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type cacheGetBytesResponse struct {
|
||
|
|
Value []byte `json:"value,omitempty"`
|
||
|
|
Exists bool `json:"exists,omitempty"`
|
||
|
|
Error string `json:"error,omitempty"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type cacheHasRequest struct {
|
||
|
|
Key string `json:"key"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type cacheHasResponse struct {
|
||
|
|
Exists bool `json:"exists,omitempty"`
|
||
|
|
Error string `json:"error,omitempty"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type cacheRemoveRequest struct {
|
||
|
|
Key string `json:"key"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// CacheSetString calls the cache_setstring host function.
|
||
|
|
// SetString stores a string value in the cache.
|
||
|
|
//
|
||
|
|
// Parameters:
|
||
|
|
// - key: The cache key (will be namespaced with plugin ID)
|
||
|
|
// - value: The string value to store
|
||
|
|
// - ttlSeconds: Time-to-live in seconds (0 uses default of 24 hours)
|
||
|
|
//
|
||
|
|
// Returns an error if the operation fails.
|
||
|
|
func CacheSetString(key string, value string, ttlSeconds int64) error {
|
||
|
|
// Marshal request to JSON
|
||
|
|
req := cacheSetStringRequest{
|
||
|
|
Key: key,
|
||
|
|
Value: value,
|
||
|
|
TtlSeconds: ttlSeconds,
|
||
|
|
}
|
||
|
|
reqBytes, err := json.Marshal(req)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
reqMem := pdk.AllocateBytes(reqBytes)
|
||
|
|
defer reqMem.Free()
|
||
|
|
|
||
|
|
// Call the host function
|
||
|
|
responsePtr := cache_setstring(reqMem.Offset())
|
||
|
|
|
||
|
|
// Read the response from memory
|
||
|
|
responseMem := pdk.FindMemory(responsePtr)
|
||
|
|
responseBytes := responseMem.ReadBytes()
|
||
|
|
|
||
|
|
// Parse error-only response
|
||
|
|
var response struct {
|
||
|
|
Error string `json:"error,omitempty"`
|
||
|
|
}
|
||
|
|
if err := json.Unmarshal(responseBytes, &response); err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
if response.Error != "" {
|
||
|
|
return errors.New(response.Error)
|
||
|
|
}
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
|
||
|
|
// CacheGetString calls the cache_getstring host function.
|
||
|
|
// GetString retrieves a string value from the cache.
|
||
|
|
//
|
||
|
|
// Parameters:
|
||
|
|
// - key: The cache key (will be namespaced with plugin ID)
|
||
|
|
//
|
||
|
|
// Returns the value and whether the key exists. If the key doesn't exist
|
||
|
|
// or the stored value is not a string, exists will be false.
|
||
|
|
func CacheGetString(key string) (string, bool, error) {
|
||
|
|
// Marshal request to JSON
|
||
|
|
req := cacheGetStringRequest{
|
||
|
|
Key: key,
|
||
|
|
}
|
||
|
|
reqBytes, err := json.Marshal(req)
|
||
|
|
if err != nil {
|
||
|
|
return "", false, err
|
||
|
|
}
|
||
|
|
reqMem := pdk.AllocateBytes(reqBytes)
|
||
|
|
defer reqMem.Free()
|
||
|
|
|
||
|
|
// Call the host function
|
||
|
|
responsePtr := cache_getstring(reqMem.Offset())
|
||
|
|
|
||
|
|
// Read the response from memory
|
||
|
|
responseMem := pdk.FindMemory(responsePtr)
|
||
|
|
responseBytes := responseMem.ReadBytes()
|
||
|
|
|
||
|
|
// Parse the response
|
||
|
|
var response cacheGetStringResponse
|
||
|
|
if err := json.Unmarshal(responseBytes, &response); err != nil {
|
||
|
|
return "", false, err
|
||
|
|
}
|
||
|
|
|
||
|
|
// Convert Error field to Go error
|
||
|
|
if response.Error != "" {
|
||
|
|
return "", false, errors.New(response.Error)
|
||
|
|
}
|
||
|
|
|
||
|
|
return response.Value, response.Exists, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
// CacheSetInt calls the cache_setint host function.
|
||
|
|
// SetInt stores an integer value in the cache.
|
||
|
|
//
|
||
|
|
// Parameters:
|
||
|
|
// - key: The cache key (will be namespaced with plugin ID)
|
||
|
|
// - value: The integer value to store
|
||
|
|
// - ttlSeconds: Time-to-live in seconds (0 uses default of 24 hours)
|
||
|
|
//
|
||
|
|
// Returns an error if the operation fails.
|
||
|
|
func CacheSetInt(key string, value int64, ttlSeconds int64) error {
|
||
|
|
// Marshal request to JSON
|
||
|
|
req := cacheSetIntRequest{
|
||
|
|
Key: key,
|
||
|
|
Value: value,
|
||
|
|
TtlSeconds: ttlSeconds,
|
||
|
|
}
|
||
|
|
reqBytes, err := json.Marshal(req)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
reqMem := pdk.AllocateBytes(reqBytes)
|
||
|
|
defer reqMem.Free()
|
||
|
|
|
||
|
|
// Call the host function
|
||
|
|
responsePtr := cache_setint(reqMem.Offset())
|
||
|
|
|
||
|
|
// Read the response from memory
|
||
|
|
responseMem := pdk.FindMemory(responsePtr)
|
||
|
|
responseBytes := responseMem.ReadBytes()
|
||
|
|
|
||
|
|
// Parse error-only response
|
||
|
|
var response struct {
|
||
|
|
Error string `json:"error,omitempty"`
|
||
|
|
}
|
||
|
|
if err := json.Unmarshal(responseBytes, &response); err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
if response.Error != "" {
|
||
|
|
return errors.New(response.Error)
|
||
|
|
}
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
|
||
|
|
// CacheGetInt calls the cache_getint host function.
|
||
|
|
// GetInt retrieves an integer value from the cache.
|
||
|
|
//
|
||
|
|
// Parameters:
|
||
|
|
// - key: The cache key (will be namespaced with plugin ID)
|
||
|
|
//
|
||
|
|
// Returns the value and whether the key exists. If the key doesn't exist
|
||
|
|
// or the stored value is not an integer, exists will be false.
|
||
|
|
func CacheGetInt(key string) (int64, bool, error) {
|
||
|
|
// Marshal request to JSON
|
||
|
|
req := cacheGetIntRequest{
|
||
|
|
Key: key,
|
||
|
|
}
|
||
|
|
reqBytes, err := json.Marshal(req)
|
||
|
|
if err != nil {
|
||
|
|
return 0, false, err
|
||
|
|
}
|
||
|
|
reqMem := pdk.AllocateBytes(reqBytes)
|
||
|
|
defer reqMem.Free()
|
||
|
|
|
||
|
|
// Call the host function
|
||
|
|
responsePtr := cache_getint(reqMem.Offset())
|
||
|
|
|
||
|
|
// Read the response from memory
|
||
|
|
responseMem := pdk.FindMemory(responsePtr)
|
||
|
|
responseBytes := responseMem.ReadBytes()
|
||
|
|
|
||
|
|
// Parse the response
|
||
|
|
var response cacheGetIntResponse
|
||
|
|
if err := json.Unmarshal(responseBytes, &response); err != nil {
|
||
|
|
return 0, false, err
|
||
|
|
}
|
||
|
|
|
||
|
|
// Convert Error field to Go error
|
||
|
|
if response.Error != "" {
|
||
|
|
return 0, false, errors.New(response.Error)
|
||
|
|
}
|
||
|
|
|
||
|
|
return response.Value, response.Exists, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
// CacheSetFloat calls the cache_setfloat host function.
|
||
|
|
// SetFloat stores a float value in the cache.
|
||
|
|
//
|
||
|
|
// Parameters:
|
||
|
|
// - key: The cache key (will be namespaced with plugin ID)
|
||
|
|
// - value: The float value to store
|
||
|
|
// - ttlSeconds: Time-to-live in seconds (0 uses default of 24 hours)
|
||
|
|
//
|
||
|
|
// Returns an error if the operation fails.
|
||
|
|
func CacheSetFloat(key string, value float64, ttlSeconds int64) error {
|
||
|
|
// Marshal request to JSON
|
||
|
|
req := cacheSetFloatRequest{
|
||
|
|
Key: key,
|
||
|
|
Value: value,
|
||
|
|
TtlSeconds: ttlSeconds,
|
||
|
|
}
|
||
|
|
reqBytes, err := json.Marshal(req)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
reqMem := pdk.AllocateBytes(reqBytes)
|
||
|
|
defer reqMem.Free()
|
||
|
|
|
||
|
|
// Call the host function
|
||
|
|
responsePtr := cache_setfloat(reqMem.Offset())
|
||
|
|
|
||
|
|
// Read the response from memory
|
||
|
|
responseMem := pdk.FindMemory(responsePtr)
|
||
|
|
responseBytes := responseMem.ReadBytes()
|
||
|
|
|
||
|
|
// Parse error-only response
|
||
|
|
var response struct {
|
||
|
|
Error string `json:"error,omitempty"`
|
||
|
|
}
|
||
|
|
if err := json.Unmarshal(responseBytes, &response); err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
if response.Error != "" {
|
||
|
|
return errors.New(response.Error)
|
||
|
|
}
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
|
||
|
|
// CacheGetFloat calls the cache_getfloat host function.
|
||
|
|
// GetFloat retrieves a float value from the cache.
|
||
|
|
//
|
||
|
|
// Parameters:
|
||
|
|
// - key: The cache key (will be namespaced with plugin ID)
|
||
|
|
//
|
||
|
|
// Returns the value and whether the key exists. If the key doesn't exist
|
||
|
|
// or the stored value is not a float, exists will be false.
|
||
|
|
func CacheGetFloat(key string) (float64, bool, error) {
|
||
|
|
// Marshal request to JSON
|
||
|
|
req := cacheGetFloatRequest{
|
||
|
|
Key: key,
|
||
|
|
}
|
||
|
|
reqBytes, err := json.Marshal(req)
|
||
|
|
if err != nil {
|
||
|
|
return 0, false, err
|
||
|
|
}
|
||
|
|
reqMem := pdk.AllocateBytes(reqBytes)
|
||
|
|
defer reqMem.Free()
|
||
|
|
|
||
|
|
// Call the host function
|
||
|
|
responsePtr := cache_getfloat(reqMem.Offset())
|
||
|
|
|
||
|
|
// Read the response from memory
|
||
|
|
responseMem := pdk.FindMemory(responsePtr)
|
||
|
|
responseBytes := responseMem.ReadBytes()
|
||
|
|
|
||
|
|
// Parse the response
|
||
|
|
var response cacheGetFloatResponse
|
||
|
|
if err := json.Unmarshal(responseBytes, &response); err != nil {
|
||
|
|
return 0, false, err
|
||
|
|
}
|
||
|
|
|
||
|
|
// Convert Error field to Go error
|
||
|
|
if response.Error != "" {
|
||
|
|
return 0, false, errors.New(response.Error)
|
||
|
|
}
|
||
|
|
|
||
|
|
return response.Value, response.Exists, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
// CacheSetBytes calls the cache_setbytes host function.
|
||
|
|
// SetBytes stores a byte slice in the cache.
|
||
|
|
//
|
||
|
|
// Parameters:
|
||
|
|
// - key: The cache key (will be namespaced with plugin ID)
|
||
|
|
// - value: The byte slice to store
|
||
|
|
// - ttlSeconds: Time-to-live in seconds (0 uses default of 24 hours)
|
||
|
|
//
|
||
|
|
// Returns an error if the operation fails.
|
||
|
|
func CacheSetBytes(key string, value []byte, ttlSeconds int64) error {
|
||
|
|
// Marshal request to JSON
|
||
|
|
req := cacheSetBytesRequest{
|
||
|
|
Key: key,
|
||
|
|
Value: value,
|
||
|
|
TtlSeconds: ttlSeconds,
|
||
|
|
}
|
||
|
|
reqBytes, err := json.Marshal(req)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
reqMem := pdk.AllocateBytes(reqBytes)
|
||
|
|
defer reqMem.Free()
|
||
|
|
|
||
|
|
// Call the host function
|
||
|
|
responsePtr := cache_setbytes(reqMem.Offset())
|
||
|
|
|
||
|
|
// Read the response from memory
|
||
|
|
responseMem := pdk.FindMemory(responsePtr)
|
||
|
|
responseBytes := responseMem.ReadBytes()
|
||
|
|
|
||
|
|
// Parse error-only response
|
||
|
|
var response struct {
|
||
|
|
Error string `json:"error,omitempty"`
|
||
|
|
}
|
||
|
|
if err := json.Unmarshal(responseBytes, &response); err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
if response.Error != "" {
|
||
|
|
return errors.New(response.Error)
|
||
|
|
}
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
|
||
|
|
// CacheGetBytes calls the cache_getbytes host function.
|
||
|
|
// GetBytes retrieves a byte slice from the cache.
|
||
|
|
//
|
||
|
|
// Parameters:
|
||
|
|
// - key: The cache key (will be namespaced with plugin ID)
|
||
|
|
//
|
||
|
|
// Returns the value and whether the key exists. If the key doesn't exist
|
||
|
|
// or the stored value is not a byte slice, exists will be false.
|
||
|
|
func CacheGetBytes(key string) ([]byte, bool, error) {
|
||
|
|
// Marshal request to JSON
|
||
|
|
req := cacheGetBytesRequest{
|
||
|
|
Key: key,
|
||
|
|
}
|
||
|
|
reqBytes, err := json.Marshal(req)
|
||
|
|
if err != nil {
|
||
|
|
return nil, false, err
|
||
|
|
}
|
||
|
|
reqMem := pdk.AllocateBytes(reqBytes)
|
||
|
|
defer reqMem.Free()
|
||
|
|
|
||
|
|
// Call the host function
|
||
|
|
responsePtr := cache_getbytes(reqMem.Offset())
|
||
|
|
|
||
|
|
// Read the response from memory
|
||
|
|
responseMem := pdk.FindMemory(responsePtr)
|
||
|
|
responseBytes := responseMem.ReadBytes()
|
||
|
|
|
||
|
|
// Parse the response
|
||
|
|
var response cacheGetBytesResponse
|
||
|
|
if err := json.Unmarshal(responseBytes, &response); err != nil {
|
||
|
|
return nil, false, err
|
||
|
|
}
|
||
|
|
|
||
|
|
// Convert Error field to Go error
|
||
|
|
if response.Error != "" {
|
||
|
|
return nil, false, errors.New(response.Error)
|
||
|
|
}
|
||
|
|
|
||
|
|
return response.Value, response.Exists, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
// CacheHas calls the cache_has host function.
|
||
|
|
// Has checks if a key exists in the cache.
|
||
|
|
//
|
||
|
|
// Parameters:
|
||
|
|
// - key: The cache key (will be namespaced with plugin ID)
|
||
|
|
//
|
||
|
|
// Returns true if the key exists and has not expired.
|
||
|
|
func CacheHas(key string) (bool, error) {
|
||
|
|
// Marshal request to JSON
|
||
|
|
req := cacheHasRequest{
|
||
|
|
Key: key,
|
||
|
|
}
|
||
|
|
reqBytes, err := json.Marshal(req)
|
||
|
|
if err != nil {
|
||
|
|
return false, err
|
||
|
|
}
|
||
|
|
reqMem := pdk.AllocateBytes(reqBytes)
|
||
|
|
defer reqMem.Free()
|
||
|
|
|
||
|
|
// Call the host function
|
||
|
|
responsePtr := cache_has(reqMem.Offset())
|
||
|
|
|
||
|
|
// Read the response from memory
|
||
|
|
responseMem := pdk.FindMemory(responsePtr)
|
||
|
|
responseBytes := responseMem.ReadBytes()
|
||
|
|
|
||
|
|
// Parse the response
|
||
|
|
var response cacheHasResponse
|
||
|
|
if err := json.Unmarshal(responseBytes, &response); err != nil {
|
||
|
|
return false, err
|
||
|
|
}
|
||
|
|
|
||
|
|
// Convert Error field to Go error
|
||
|
|
if response.Error != "" {
|
||
|
|
return false, errors.New(response.Error)
|
||
|
|
}
|
||
|
|
|
||
|
|
return response.Exists, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
// CacheRemove calls the cache_remove host function.
|
||
|
|
// Remove deletes a value from the cache.
|
||
|
|
//
|
||
|
|
// Parameters:
|
||
|
|
// - key: The cache key (will be namespaced with plugin ID)
|
||
|
|
//
|
||
|
|
// Returns an error if the operation fails. Does not return an error if the key doesn't exist.
|
||
|
|
func CacheRemove(key string) error {
|
||
|
|
// Marshal request to JSON
|
||
|
|
req := cacheRemoveRequest{
|
||
|
|
Key: key,
|
||
|
|
}
|
||
|
|
reqBytes, err := json.Marshal(req)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
reqMem := pdk.AllocateBytes(reqBytes)
|
||
|
|
defer reqMem.Free()
|
||
|
|
|
||
|
|
// Call the host function
|
||
|
|
responsePtr := cache_remove(reqMem.Offset())
|
||
|
|
|
||
|
|
// Read the response from memory
|
||
|
|
responseMem := pdk.FindMemory(responsePtr)
|
||
|
|
responseBytes := responseMem.ReadBytes()
|
||
|
|
|
||
|
|
// Parse error-only response
|
||
|
|
var response struct {
|
||
|
|
Error string `json:"error,omitempty"`
|
||
|
|
}
|
||
|
|
if err := json.Unmarshal(responseBytes, &response); err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
if response.Error != "" {
|
||
|
|
return errors.New(response.Error)
|
||
|
|
}
|
||
|
|
return nil
|
||
|
|
}
|