feat: initial implementation with docs and system_config
This commit is contained in:
@@ -0,0 +1,239 @@
|
||||
package client
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
type AlbumUser struct {
|
||||
User *User `json:"user,omitempty"`
|
||||
Role string `json:"role"`
|
||||
}
|
||||
|
||||
type Album struct {
|
||||
ID string `json:"id,omitempty"`
|
||||
AlbumName string `json:"albumName"`
|
||||
Description string `json:"description"`
|
||||
CreatedAt string `json:"createdAt,omitempty"`
|
||||
UpdatedAt string `json:"updatedAt,omitempty"`
|
||||
AlbumThumbnailAssetId *string `json:"albumThumbnailAssetId"`
|
||||
Shared bool `json:"shared"`
|
||||
AlbumUsers []AlbumUser `json:"albumUsers"`
|
||||
HasSharedLink bool `json:"hasSharedLink"`
|
||||
AssetCount int `json:"assetCount"`
|
||||
IsActivityEnabled bool `json:"isActivityEnabled"`
|
||||
Order string `json:"order,omitempty"`
|
||||
}
|
||||
|
||||
type AlbumUserCreate struct {
|
||||
UserId string `json:"userId"`
|
||||
Role string `json:"role"`
|
||||
}
|
||||
|
||||
type CreateAlbumRequest struct {
|
||||
AlbumName string `json:"albumName"`
|
||||
Description string `json:"description,omitempty"`
|
||||
AlbumUsers []AlbumUserCreate `json:"albumUsers,omitempty"`
|
||||
AssetIds []string `json:"assetIds,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateAlbumRequest struct {
|
||||
AlbumName string `json:"albumName,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
AlbumThumbnailAssetId *string `json:"albumThumbnailAssetId,omitempty"`
|
||||
IsActivityEnabled *bool `json:"isActivityEnabled,omitempty"`
|
||||
Order string `json:"order,omitempty"`
|
||||
}
|
||||
|
||||
type BulkIdsRequest struct {
|
||||
Ids []string `json:"ids"`
|
||||
}
|
||||
|
||||
func (c *Client) GetAlbums() ([]Album, error) {
|
||||
req, err := http.NewRequest("GET", fmt.Sprintf("%s/albums", c.HostURL), nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
body, err := c.doRequest(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var albums []Album
|
||||
err = json.Unmarshal(body, &albums)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return albums, nil
|
||||
}
|
||||
|
||||
func (c *Client) GetAlbum(id string) (*Album, error) {
|
||||
req, err := http.NewRequest("GET", fmt.Sprintf("%s/albums/%s", c.HostURL, id), nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
body, err := c.doRequest(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var album Album
|
||||
err = json.Unmarshal(body, &album)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &album, nil
|
||||
}
|
||||
|
||||
func (c *Client) CreateAlbum(data CreateAlbumRequest) (*Album, error) {
|
||||
rb, err := json.Marshal(data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("POST", fmt.Sprintf("%s/albums", c.HostURL), bytes.NewBuffer(rb))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
body, err := c.doRequest(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var album Album
|
||||
err = json.Unmarshal(body, &album)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &album, nil
|
||||
}
|
||||
|
||||
func (c *Client) UpdateAlbum(id string, data UpdateAlbumRequest) (*Album, error) {
|
||||
rb, err := json.Marshal(data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("PATCH", fmt.Sprintf("%s/albums/%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 album Album
|
||||
err = json.Unmarshal(body, &album)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &album, nil
|
||||
}
|
||||
|
||||
func (c *Client) DeleteAlbum(id string) error {
|
||||
req, err := http.NewRequest("DELETE", fmt.Sprintf("%s/albums/%s", c.HostURL, id), nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = c.doRequest(req)
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *Client) AddAssetsToAlbum(albumId string, assetIds []string) error {
|
||||
data := BulkIdsRequest{Ids: assetIds}
|
||||
rb, err := json.Marshal(data)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("PUT", fmt.Sprintf("%s/albums/%s/assets", c.HostURL, albumId), bytes.NewBuffer(rb))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = c.doRequest(req)
|
||||
return err
|
||||
}
|
||||
|
||||
type AddUsersRequest struct {
|
||||
AlbumUsers []AlbumUserCreate `json:"albumUsers"`
|
||||
}
|
||||
|
||||
type UpdateAlbumUserRequest struct {
|
||||
Role string `json:"role"`
|
||||
}
|
||||
|
||||
func (c *Client) AddUsersToAlbum(albumId string, users []AlbumUserCreate) (*Album, error) {
|
||||
data := AddUsersRequest{AlbumUsers: users}
|
||||
rb, err := json.Marshal(data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("PUT", fmt.Sprintf("%s/albums/%s/users", c.HostURL, albumId), bytes.NewBuffer(rb))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
body, err := c.doRequest(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var album Album
|
||||
err = json.Unmarshal(body, &album)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &album, nil
|
||||
}
|
||||
|
||||
func (c *Client) UpdateAlbumUserRole(albumId string, userId string, role string) (*Album, error) {
|
||||
data := UpdateAlbumUserRequest{Role: role}
|
||||
rb, err := json.Marshal(data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("PUT", fmt.Sprintf("%s/albums/%s/user/%s", c.HostURL, albumId, userId), bytes.NewBuffer(rb))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
body, err := c.doRequest(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var album Album
|
||||
err = json.Unmarshal(body, &album)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &album, nil
|
||||
}
|
||||
|
||||
func (c *Client) RemoveUserFromAlbum(albumId string, userId string) error {
|
||||
req, err := http.NewRequest("DELETE", fmt.Sprintf("%s/albums/%s/user/%s", c.HostURL, albumId, userId), nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = c.doRequest(req)
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user