mirror of
				https://github.com/datarhei/core.git
				synced 2025-10-31 11:26:52 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package client
 | |
| 
 | |
| import (
 | |
| 	"bytes"
 | |
| 	"io/fs"
 | |
| 	"net/http"
 | |
| 	"net/url"
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/datarhei/core/v16/encoding/json"
 | |
| )
 | |
| 
 | |
| func (c *APIClient) KVSet(origin string, r SetKVRequest) error {
 | |
| 	data, err := json.Marshal(r)
 | |
| 	if err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 
 | |
| 	_, err = c.call(http.MethodPost, "/v1/kv", "application/json", bytes.NewReader(data), origin)
 | |
| 
 | |
| 	return err
 | |
| }
 | |
| 
 | |
| func (c *APIClient) KVUnset(origin string, key string) error {
 | |
| 	_, err := c.call(http.MethodDelete, "/v1/kv/"+url.PathEscape(key), "application/json", nil, origin)
 | |
| 	if err != nil {
 | |
| 		e, ok := err.(Error)
 | |
| 		if ok && e.Code == 404 {
 | |
| 			return fs.ErrNotExist
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	return err
 | |
| }
 | |
| 
 | |
| func (c *APIClient) KVGet(origin string, key string) (string, time.Time, error) {
 | |
| 	data, err := c.call(http.MethodGet, "/v1/kv/"+url.PathEscape(key), "application/json", nil, origin)
 | |
| 	if err != nil {
 | |
| 		e, ok := err.(Error)
 | |
| 		if ok && e.Code == 404 {
 | |
| 			return "", time.Time{}, fs.ErrNotExist
 | |
| 		}
 | |
| 
 | |
| 		return "", time.Time{}, err
 | |
| 	}
 | |
| 
 | |
| 	res := GetKVResponse{}
 | |
| 	err = json.Unmarshal(data, &res)
 | |
| 	if err != nil {
 | |
| 		return "", time.Time{}, err
 | |
| 	}
 | |
| 
 | |
| 	return res.Value, res.UpdatedAt, nil
 | |
| }
 | 
