feat: initial implementation with docs and system_config

This commit is contained in:
2026-06-01 11:19:02 -04:00
commit 1337034f07
39 changed files with 3451 additions and 0 deletions
+145
View File
@@ -0,0 +1,145 @@
package client
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
type SharedLink struct {
ID string `json:"id"`
Description *string `json:"description"`
UserId string `json:"userId"`
Key string `json:"key"`
Type string `json:"type"`
CreatedAt string `json:"createdAt"`
ExpiresAt *string `json:"expiresAt"`
AllowUpload bool `json:"allowUpload"`
AllowDownload bool `json:"allowDownload"`
ShowMetadata bool `json:"showMetadata"`
Slug *string `json:"slug"`
}
type SharedLinkCreateRequest struct {
Type string `json:"type"`
AssetIds []string `json:"assetIds,omitempty"`
AlbumId *string `json:"albumId,omitempty"`
Description *string `json:"description,omitempty"`
Password *string `json:"password,omitempty"`
Slug *string `json:"slug,omitempty"`
ExpiresAt *string `json:"expiresAt,omitempty"`
AllowUpload *bool `json:"allowUpload,omitempty"`
AllowDownload *bool `json:"allowDownload,omitempty"`
ShowMetadata *bool `json:"showMetadata,omitempty"`
}
type SharedLinkUpdateRequest struct {
Description *string `json:"description,omitempty"`
Password *string `json:"password,omitempty"`
Slug *string `json:"slug,omitempty"`
ExpiresAt *string `json:"expiresAt,omitempty"`
AllowUpload *bool `json:"allowUpload,omitempty"`
AllowDownload *bool `json:"allowDownload,omitempty"`
ShowMetadata *bool `json:"showMetadata,omitempty"`
}
func (c *Client) GetSharedLinks() ([]SharedLink, error) {
req, err := http.NewRequest("GET", fmt.Sprintf("%s/shared-links", c.HostURL), nil)
if err != nil {
return nil, err
}
body, err := c.doRequest(req)
if err != nil {
return nil, err
}
var sharedLinks []SharedLink
err = json.Unmarshal(body, &sharedLinks)
if err != nil {
return nil, err
}
return sharedLinks, nil
}
func (c *Client) GetSharedLink(id string) (*SharedLink, error) {
req, err := http.NewRequest("GET", fmt.Sprintf("%s/shared-links/%s", c.HostURL, id), nil)
if err != nil {
return nil, err
}
body, err := c.doRequest(req)
if err != nil {
return nil, err
}
var sharedLink SharedLink
err = json.Unmarshal(body, &sharedLink)
if err != nil {
return nil, err
}
return &sharedLink, nil
}
func (c *Client) CreateSharedLink(data SharedLinkCreateRequest) (*SharedLink, error) {
rb, err := json.Marshal(data)
if err != nil {
return nil, err
}
req, err := http.NewRequest("POST", fmt.Sprintf("%s/shared-links", c.HostURL), bytes.NewBuffer(rb))
if err != nil {
return nil, err
}
body, err := c.doRequest(req)
if err != nil {
return nil, err
}
var sharedLink SharedLink
err = json.Unmarshal(body, &sharedLink)
if err != nil {
return nil, err
}
return &sharedLink, nil
}
func (c *Client) UpdateSharedLink(id string, data SharedLinkUpdateRequest) (*SharedLink, error) {
rb, err := json.Marshal(data)
if err != nil {
return nil, err
}
req, err := http.NewRequest("PATCH", fmt.Sprintf("%s/shared-links/%s", c.HostURL, id), bytes.NewBuffer(rb))
if err != nil {
return nil, err
}
body, err := c.doRequest(req)
if err != nil {
return nil, err
}
var sharedLink SharedLink
err = json.Unmarshal(body, &sharedLink)
if err != nil {
return nil, err
}
return &sharedLink, nil
}
func (c *Client) DeleteSharedLink(id string) error {
req, err := http.NewRequest("DELETE", fmt.Sprintf("%s/shared-links/%s", c.HostURL, id), nil)
if err != nil {
return err
}
_, err = c.doRequest(req)
return err
}