v1.0.0
This commit is contained in:
17
pkg/folder/folders.go
Normal file
17
pkg/folder/folders.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package folder
|
||||
|
||||
import (
|
||||
"repository.basistech.ru/BASIS/dynamix-standart-go-sdk/interfaces"
|
||||
)
|
||||
|
||||
// Structure for creating request to folders
|
||||
type Folder struct {
|
||||
client interfaces.Caller
|
||||
}
|
||||
|
||||
// Builder for file share endpoints
|
||||
func New(client interfaces.Caller) *Folder {
|
||||
return &Folder{
|
||||
client,
|
||||
}
|
||||
}
|
||||
42
pkg/folder/list.go
Normal file
42
pkg/folder/list.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package folder
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
|
||||
"repository.basistech.ru/BASIS/dynamix-standart-go-sdk/internal/constants"
|
||||
"repository.basistech.ru/BASIS/dynamix-standart-go-sdk/internal/validators"
|
||||
"repository.basistech.ru/BASIS/dynamix-standart-go-sdk/pkg/folder/models"
|
||||
"repository.basistech.ru/BASIS/dynamix-standart-go-sdk/pkg/folder/requests"
|
||||
)
|
||||
|
||||
// List gets a list of all folder
|
||||
func (f Folder) List(ctx context.Context, req requests.ListFolderRequest) (*models.ListFolderResponse, error) {
|
||||
|
||||
res, err := f.ListRaw(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
list := models.ListFolderResponse{}
|
||||
|
||||
err = json.Unmarshal(res, &list)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &list, nil
|
||||
}
|
||||
|
||||
// ListRaw gets a list of all folders as an array of bytes
|
||||
func (f Folder) ListRaw(ctx context.Context, req requests.ListFolderRequest) ([]byte, error) {
|
||||
|
||||
if err := validators.ValidateRequest(req); err != nil {
|
||||
return nil, validators.ValidationErrors(validators.GetErrors(err))
|
||||
}
|
||||
|
||||
url := constants.APIv0 + "/folder"
|
||||
|
||||
res, err := f.client.ApiCall(ctx, http.MethodGet, url, req)
|
||||
return res, err
|
||||
}
|
||||
26
pkg/folder/models/model_list.go
Normal file
26
pkg/folder/models/model_list.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package models
|
||||
|
||||
import "time"
|
||||
|
||||
type ListFolderResponse struct {
|
||||
List ListFolder `json:"folder_list"`
|
||||
RequestID string `json:"request_id"`
|
||||
}
|
||||
|
||||
type ListFolder struct {
|
||||
Total int `json:"total"`
|
||||
Page int `json:"page"`
|
||||
PerPage int `json:"per_page"`
|
||||
IsApproximateTotal bool `json:"is_approximate_total"`
|
||||
Items []ItemFolder `json:"items"`
|
||||
HasMore bool `json:"has_more"`
|
||||
}
|
||||
|
||||
type ItemFolder struct {
|
||||
FolderID int `json:"folder_id"`
|
||||
Deleted time.Time `json:"deleted"`
|
||||
Name string `json:"name"`
|
||||
IconType any `json:"icon_type"`
|
||||
Created time.Time `json:"created"`
|
||||
ParentID any `json:"parent_id"`
|
||||
}
|
||||
50
pkg/folder/requests/list_request.go
Normal file
50
pkg/folder/requests/list_request.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package requests
|
||||
|
||||
import "time"
|
||||
|
||||
// ListRequest represents the request for retrieving a list of folders.
|
||||
type ListFolderRequest struct {
|
||||
// Folder name.
|
||||
// Required: false
|
||||
Name string `url:"name,omitempty" json:"name,omitempty"`
|
||||
|
||||
// Folder icon type.
|
||||
// Required: false
|
||||
IconType string `url:"icon_type,omitempty" json:"icon_type,omitempty"`
|
||||
|
||||
// Folder ID of the parent folder. "root" if there is no parent folder.
|
||||
// Required: false
|
||||
ParentID string `url:"parent_id,omitempty" json:"parent_id,omitempty"`
|
||||
|
||||
// Template for filtering by any text field.
|
||||
// Required: false
|
||||
FilterText string `url:"filter_text,omitempty" json:"filter_text,omitempty"`
|
||||
|
||||
// List of columns that will be used by FilterText.
|
||||
// Required: false
|
||||
FilterColumns string `url:"filter_columns,omitempty" json:"filter_columns,omitempty"`
|
||||
|
||||
// Filter entities created before this date.
|
||||
// Required: false
|
||||
CreatedBefore time.Time `url:"created_before,omitempty" json:"created_before,omitempty"`
|
||||
|
||||
// Filter entities created after this date.
|
||||
// Required: false
|
||||
CreatedAfter time.Time `url:"created_after,omitempty" json:"created_after,omitempty"`
|
||||
|
||||
// Field name or list of field names used for sorting. Ascending sort is default. For descending sort, use "-" before the name.
|
||||
// Required: false
|
||||
Sort []string `url:"sort,omitempty" json:"sort,omitempty"`
|
||||
|
||||
// Visibility options: "visible" - Only active folders, "deleted" - Only removed folders, "all" - All folders.
|
||||
// Required: false
|
||||
Visibility string `url:"visibility,omitempty" json:"visibility,omitempty" validate:"omitempty,visibility"`
|
||||
|
||||
// Number of the returning page.
|
||||
// Required: false
|
||||
Page int `url:"page,omitempty" json:"page,omitempty"`
|
||||
|
||||
// Number of items on the page.
|
||||
// Required: false
|
||||
Limit int `url:"limit,omitempty" json:"limit,omitempty"`
|
||||
}
|
||||
Reference in New Issue
Block a user