Documentation ¶
Index ¶
- Variables
- type ApiEndpoints
- type Attributes
- type BucketAPI
- func (api BucketAPI) CreateBucket(ctx context.Context, bucketKey, policyKey string) (result BucketDetails, err error)
- func (api BucketAPI) DeleteBucket(ctx context.Context, bucketKey string) error
- func (api BucketAPI) DownloadObject(ctx context.Context, bucketKey string, objectName string) (reader io.ReadCloser, err error)
- func (api BucketAPI) GetBucketDetails(ctx context.Context, bucketKey string) (result BucketDetails, err error)
- func (api BucketAPI) ListBuckets(ctx context.Context, region, limit, startAt string) (result ListedBuckets, err error)
- func (api BucketAPI) ListObjects(ctx context.Context, bucketKey, limit, beginsWith, startAt string) (result BucketContent, err error)
- func (api BucketAPI) UploadObject(ctx context.Context, bucketKey string, objectName string, reader io.Reader) (result ObjectDetails, err error)
- type BucketAPI3L
- func (api BucketAPI3L) CreateBucket3L(ctx context.Context, bucketKey, policyKey string) (result BucketDetails, err error)
- func (api BucketAPI3L) DeleteBucket3L(ctx context.Context, bucketKey string) error
- func (api BucketAPI3L) DownloadObject3L(ctx context.Context, bucketKey string, objectName string) (reader io.ReadCloser, err error)
- func (api BucketAPI3L) GetBucketDetails3L(ctx context.Context, bucketKey string) (result BucketDetails, err error)
- func (api BucketAPI3L) ListBuckets3L(ctx context.Context, region, limit, startAt string) (result ListedBuckets, err error)
- func (api BucketAPI3L) ListObjects3L(ctx context.Context, bucketKey, limit, beginsWith, startAt string) (result BucketContent, err error)
- func (api BucketAPI3L) UploadObject3L(ctx context.Context, bucketKey string, objectName string, reader io.Reader) (result ObjectDetails, err error)
- type BucketContent
- type BucketDetails
- type CreateBucketRequest
- type Data
- type ErrorResult
- type Extension
- type FolderAPI
- func (api FolderAPI) GetFolderContents(ctx context.Context, projectKey, folderKey string) (result ForgeResponseArray, err error)
- func (api FolderAPI) GetFolderDetails(ctx context.Context, projectKey, folderKey string) (result ForgeResponseObject, err error)
- func (api FolderAPI) GetItemDetails(ctx context.Context, projectKey, itemKey string) (result ForgeResponseObject, err error)
- func (api FolderAPI) GetItemTip(ctx context.Context, projectKey, itemKey string) (result ForgeResponseObject, err error)
- func (api FolderAPI) GetItemVersions(ctx context.Context, projectKey, itemKey string) (result ForgeResponseArray, err error)
- type FolderAPI3L
- func (a FolderAPI3L) GetFolderContentsThreeLegged(ctx context.Context, projectKey, folderKey string) (result ForgeResponseArray, err error)
- func (a FolderAPI3L) GetFolderDetailsThreeLegged(ctx context.Context, projectKey, folderKey string) (result ForgeResponseObject, err error)
- func (a FolderAPI3L) GetItemDetailsThreeLegged(ctx context.Context, projectKey, itemKey string) (result ForgeResponseObject, err error)
- type ForgeResponseArray
- type ForgeResponseObject
- type Href
- type HttpRequestLimiter
- type HubAPI
- func (api HubAPI) GetHubDetails(ctx context.Context, hubKey string) (result ForgeResponseObject, err error)
- func (api HubAPI) GetHubs(ctx context.Context) (result ForgeResponseArray, err error)
- func (api HubAPI) GetProjectDetails(ctx context.Context, hubKey, projectKey string) (result ForgeResponseObject, err error)
- func (api HubAPI) GetTopFolders(ctx context.Context, hubKey, projectKey string) (result ForgeResponseArray, err error)
- func (api HubAPI) ListProjects(ctx context.Context, hubKey string) (result ForgeResponseArray, err error)
- type HubAPI3L
- func (a *HubAPI3L) GetHubDetailsThreeLegged(ctx context.Context, hubKey string) (result ForgeResponseObject, err error)
- func (a *HubAPI3L) GetHubsThreeLegged(ctx context.Context) (result ForgeResponseArray, err error)
- func (a *HubAPI3L) GetProjectDetailsThreeLegged(ctx context.Context, hubKey, projectKey string) (result ForgeResponseObject, err error)
- func (a *HubAPI3L) GetTopFoldersThreeLegged(ctx context.Context, hubKey, projectKey string) (result ForgeResponseArray, err error)
- func (a *HubAPI3L) ListProjectsThreeLegged(ctx context.Context, hubKey string) (result ForgeResponseArray, err error)
- type JsonAPI
- type Links
- type ListedBuckets
- type Meta
- type OSSLimiter
- type ObjectDetails
- type RateLimiter
- type RelatedLinks
- type Relationships
- type TokenRefresher
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var DefaultDataManagementLimits = ApiEndpoints{
"GET": {
apiUrlRegexp(`hubs$`): limitPerMinute(50),
apiUrlRegexp(`hubs/{hub_id}$`): limitPerMinute(50),
apiUrlRegexp(`hubs/{hub_id}/projects\/?(\?.*)?$`): limitPerMinute(50),
apiUrlRegexp(`hubs/{hub_id}/projects/{project_id}$`): limitPerMinute(50),
apiUrlRegexp(`hubs/{hub_id}/projects/{project_id}/hub$`): limitPerMinute(50),
apiUrlRegexp(`hubs/{hub_id}/projects/{project_id}/topFolders$`): limitPerMinute(300),
apiUrlRegexp(`projects/{project_id}/downloads/{download_id}$`): limitPerMinute(300),
apiUrlRegexp(`projects/{project_id}/jobs/{job_id}$`): limitPerMinute(300),
apiUrlRegexp(`projects/{project_id}/folders/{folder_id}$`): limitPerMinute(300),
apiUrlRegexp(`projects/{project_id}/folders/{folder_id}/contents$`): limitPerMinute(300),
apiUrlRegexp(`projects/{project_id}/folders/{folder_id}/parent$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/folders/{folder_id}/refs$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/folders/{folder_id}/relationships/links$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/folders/{folder_id}/relationships/refs$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/folders/{folder_id}/search$`): limitPerMinute(300),
apiUrlRegexp(`projects/{project_id}/items/{item_id}$`): limitPerMinute(300),
apiUrlRegexp(`projects/{project_id}/items/{item_id}/parent$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/items/{item_id}/refs$`): limitPerMinute(300),
apiUrlRegexp(`projects/{project_id}/items/{item_id}/relationships/refs$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/items/{item_id}/relationships/links$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/items/{item_id}/tip$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/items/{item_id}/versions$`): limitPerMinute(800),
apiUrlRegexp(`projects/{project_id}/versions/{version_id}$`): limitPerMinute(300),
apiUrlRegexp(`projects/{project_id}/versions/{version_id}/downloadFormats$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/versions/{version_id}/downloads$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/versions/{version_id}/item$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/versions/{version_id}/refs$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/versions/{version_id}/relationships/links$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/versions/{version_id}/relationships/refs$`): limitPerMinute(50),
},
"POST": {
apiUrlRegexp(`projects/{project_id}/downloads$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/storage$`): limitPerMinute(300),
apiUrlRegexp(`projects/{project_id}/folders$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/folders/{folder_id}/relationships/refs$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/items$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/items/{item_id}/relationships/refs$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/versions/{version_id}/relationships/refs$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/versions/{version_id}/relationships/links$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/versions/{version_id}/relationships/links$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/commands$`): limitPerMinute(300),
},
"PATCH": {
apiUrlRegexp(`projects/{project_id}/folders/{folder_id}$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/items/{item_id}$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/versions/{version_id}$`): limitPerMinute(50),
apiUrlRegexp(`projects/{project_id}/versions/{version_id}/relationships/links/{link_id}$`): limitPerMinute(50),
},
}
var DefaultFallbackLimiter = limitPerMinute(50)
var DefaultOSSLimiter = OSSLimiter{ // contains filtered or unexported fields }
var DefaultRateLimiter = NewRateLimiter(&DefaultDataManagementLimits, &DefaultOSSLimiter, DefaultFallbackLimiter)
Functions ¶
This section is empty.
Types ¶
type Attributes ¶
type Attributes struct { Name string `json:"name"` Extension Extension `json:"extension"` Region *string `json:"region, omitempty"` Scopes *[]string `json:"scopes, omitempty"` DisplayName *string `json:"displayName, omitempty"` ObjectCount *int `json:"objectCount, omitempty"` CreateTime *string `json:"createTime, omitempty"` CreateUserId *string `json:"createUserId, omitempty"` CreateUserName *string `json:"createUserName, omitempty"` LastModifiedTime *string `json:"lastModifiedTime, omitempty"` LastModifiedUserId *string `json:"lastModifiedUserId, omitempty"` LastModifiedUserName *string `json:"lastModifiedUserName, omitempty"` Hidden *bool `json:"displayName, omitempty"` VersionNumber *int `json:"versionNumber, omitempty"` Mimetype *string `json:"mimeType, omitempty"` FileType *string `json:"fileType, omitempty"` StorageSize *int `json:"storageSize, omitempty"` Reserved *bool `json:"reserved, omitempty"` ReservedTime *string `json:"reservedTime, omitempty"` ReservedUserId *string `json:"reservedUserId, omitempty"` ReservedUserName *string `json:"reservedUserName, omitempty"` PathInProject *string `json:"pathInProject, omitempty"` }
type BucketAPI ¶
type BucketAPI struct { oauth.TwoLeggedAuth BucketAPIPath string RateLimiter HttpRequestLimiter }
BucketAPI holds the necessary data for making Bucket related calls to Forge Data Management service
func NewBucketAPIWithCredentials ¶
func NewBucketAPIWithCredentials(ClientID string, ClientSecret string, limiter HttpRequestLimiter) BucketAPI
NewBucketAPIWithCredentials returns a Bucket API client with default configurations
func (BucketAPI) CreateBucket ¶
func (api BucketAPI) CreateBucket(ctx context.Context, bucketKey, policyKey string) (result BucketDetails, err error)
CreateBucket creates and returns details of created bucket, or an error on failure
Example ¶
ctx := context.Background() // prepare the credentials clientID := os.Getenv("FORGE_CLIENT_ID") clientSecret := os.Getenv("FORGE_CLIENT_SECRET") bucketAPI := NewBucketAPIWithCredentials(clientID, clientSecret, DefaultRateLimiter) bucket, err := bucketAPI.CreateBucket(ctx, "some_unique_name", "transient") if err != nil { // handle error } fmt.Printf("Bucket %s was created with policy %s\n", bucket.BucketKey, bucket.PolicyKey)
Output:
func (BucketAPI) DeleteBucket ¶
DeleteBucket deletes bucket given its key.
WARNING: The bucket delete call is undocumented.
func (BucketAPI) DownloadObject ¶
func (api BucketAPI) DownloadObject(ctx context.Context, bucketKey string, objectName string) (reader io.ReadCloser, err error)
DownloadObject returns the reader stream of the response body Don't forget to close it!
func (BucketAPI) GetBucketDetails ¶
func (api BucketAPI) GetBucketDetails(ctx context.Context, bucketKey string) (result BucketDetails, err error)
GetBucketDetails returns information associated to a bucket. See BucketDetails struct.
func (BucketAPI) ListBuckets ¶
func (api BucketAPI) ListBuckets(ctx context.Context, region, limit, startAt string) (result ListedBuckets, err error)
ListBuckets returns a list of all buckets created or associated with Forge secrets used for token creation
func (BucketAPI) ListObjects ¶
func (api BucketAPI) ListObjects(ctx context.Context, bucketKey, limit, beginsWith, startAt string) (result BucketContent, err error)
ListObjects returns the bucket contains along with details on each item.
func (BucketAPI) UploadObject ¶
func (api BucketAPI) UploadObject(ctx context.Context, bucketKey string, objectName string, reader io.Reader) (result ObjectDetails, err error)
UploadObject adds to specified bucket the given data (can originate from a multipart-form or direct file read). Return details on uploaded object, including the object URN. Check ObjectDetails struct.
type BucketAPI3L ¶
type BucketAPI3L struct { Auth oauth.ThreeLeggedAuth Token TokenRefresher BucketsAPIPath string RateLimiter HttpRequestLimiter }
BucketAPI holds the necessary data for making Bucket related calls to Forge Data Management service
func NewBucketAPI3LWithCredentials ¶
func NewBucketAPI3LWithCredentials(auth oauth.ThreeLeggedAuth, token TokenRefresher, limiter HttpRequestLimiter) *BucketAPI3L
NewBucketAPIWithCredentials returns a Bucket API client with default configurations
func (BucketAPI3L) CreateBucket3L ¶
func (api BucketAPI3L) CreateBucket3L(ctx context.Context, bucketKey, policyKey string) (result BucketDetails, err error)
CreateBucket creates and returns details of created bucket, or an error on failure
func (BucketAPI3L) DeleteBucket3L ¶
func (api BucketAPI3L) DeleteBucket3L(ctx context.Context, bucketKey string) error
DeleteBucket deletes bucket given its key.
WARNING: The bucket delete call is undocumented.
func (BucketAPI3L) DownloadObject3L ¶
func (api BucketAPI3L) DownloadObject3L(ctx context.Context, bucketKey string, objectName string) (reader io.ReadCloser, err error)
DownloadObject returns the reader stream of the response body Don't forget to close it!
func (BucketAPI3L) GetBucketDetails3L ¶
func (api BucketAPI3L) GetBucketDetails3L(ctx context.Context, bucketKey string) (result BucketDetails, err error)
GetBucketDetails returns information associated to a bucket. See BucketDetails struct.
func (BucketAPI3L) ListBuckets3L ¶
func (api BucketAPI3L) ListBuckets3L(ctx context.Context, region, limit, startAt string) (result ListedBuckets, err error)
ListBuckets returns a list of all buckets created or associated with Forge secrets used for token creation
func (BucketAPI3L) ListObjects3L ¶
func (api BucketAPI3L) ListObjects3L(ctx context.Context, bucketKey, limit, beginsWith, startAt string) (result BucketContent, err error)
ListObjects returns the bucket contains along with details on each item.
func (BucketAPI3L) UploadObject3L ¶
func (api BucketAPI3L) UploadObject3L(ctx context.Context, bucketKey string, objectName string, reader io.Reader) (result ObjectDetails, err error)
UploadObject adds to specified bucket the given data (can originate from a multipart-form or direct file read). Return details on uploaded object, including the object URN. Check ObjectDetails struct.
type BucketContent ¶
type BucketContent struct { Items []ObjectDetails `json:"items"` Next string `json:"next"` }
BucketContent reflects the response when query Data Management API for bucket content.
type BucketDetails ¶
type BucketDetails struct { BucketKey string `json:"bucketKey"` BucketOwner string `json:"bucketOwner"` CreateDate string `json:"createDate"` Permissions []struct { AuthID string `json:"authId"` Access string `json:"access"` } `json:"permissions"` PolicyKey string `json:"policyKey"` }
BucketDetails reflects the body content received upon creation of a bucket
type CreateBucketRequest ¶
type CreateBucketRequest struct { BucketKey string `json:"bucketKey"` PolicyKey string `json:"policyKey"` }
CreateBucketRequest contains the data necessary to be passed upon bucket creation
type Data ¶
type Data struct { Type string `json:"type"` Id string `json:"id"` Attributes *Attributes `json:"attributes, omitempty"` Relationships *Relationships `json:"relationships, omitempty"` Links *Links `json:"links, omitempty"` }
type ErrorResult ¶
ErrorResult reflects the body content when a request failed (g.e. Bad request or key conflict)
func (*ErrorResult) Error ¶
func (e *ErrorResult) Error() string
type FolderAPI ¶
type FolderAPI struct { oauth.TwoLeggedAuth FolderAPIPath string RateLimiter HttpRequestLimiter }
FolderAPI holds the necessary data for making calls to Forge Data Management service
func NewFolderAPIWithCredentials ¶
func NewFolderAPIWithCredentials(ClientID, ClientSecret string, limiter HttpRequestLimiter) FolderAPI
NewFolderAPIWithCredentials returns a Folder API client with default configurations
func (FolderAPI) GetFolderContents ¶
func (FolderAPI) GetFolderDetails ¶
func (api FolderAPI) GetFolderDetails(ctx context.Context, projectKey, folderKey string) (result ForgeResponseObject, err error)
ListBuckets returns a list of all buckets created or associated with Forge secrets used for token creation
func (FolderAPI) GetItemDetails ¶
func (api FolderAPI) GetItemDetails(ctx context.Context, projectKey, itemKey string) (result ForgeResponseObject, err error)
ListBuckets returns a list of all buckets created or associated with Forge secrets used for token creation
func (FolderAPI) GetItemTip ¶
func (FolderAPI) GetItemVersions ¶
type FolderAPI3L ¶
type FolderAPI3L struct { Auth oauth.ThreeLeggedAuth Token TokenRefresher FolderAPIPath string RateLimiter HttpRequestLimiter }
func NewFolderAPI3LWithCredentials ¶
func NewFolderAPI3LWithCredentials( auth oauth.ThreeLeggedAuth, token TokenRefresher, limiter HttpRequestLimiter, ) *FolderAPI3L
func (FolderAPI3L) GetFolderContentsThreeLegged ¶
func (a FolderAPI3L) GetFolderContentsThreeLegged(ctx context.Context, projectKey, folderKey string) (result ForgeResponseArray, err error)
func (FolderAPI3L) GetFolderDetailsThreeLegged ¶
func (a FolderAPI3L) GetFolderDetailsThreeLegged(ctx context.Context, projectKey, folderKey string) (result ForgeResponseObject, err error)
Three legged Folder api calls
func (FolderAPI3L) GetItemDetailsThreeLegged ¶
func (a FolderAPI3L) GetItemDetailsThreeLegged(ctx context.Context, projectKey, itemKey string) (result ForgeResponseObject, err error)
type ForgeResponseArray ¶
type ForgeResponseObject ¶
type HttpRequestLimiter ¶ added in v1.0.0
type HubAPI ¶
type HubAPI struct { oauth.TwoLeggedAuth HubAPIPath string RateLimiter HttpRequestLimiter }
HubAPI holds the necessary data for making calls to Forge Data Management service
func NewHubAPIWithCredentials ¶
func NewHubAPIWithCredentials(ClientID, ClientSecret string, limiter HttpRequestLimiter) HubAPI
NewHubAPIWithCredentials returns a Hub API client with default configurations
func (HubAPI) GetHubDetails ¶
func (HubAPI) GetHubs ¶
func (api HubAPI) GetHubs(ctx context.Context) (result ForgeResponseArray, err error)
func (HubAPI) GetProjectDetails ¶
func (HubAPI) GetTopFolders ¶
func (HubAPI) ListProjects ¶
func (api HubAPI) ListProjects(ctx context.Context, hubKey string) (result ForgeResponseArray, err error)
ListBuckets returns a list of all buckets created or associated with Forge secrets used for token creation
type HubAPI3L ¶
type HubAPI3L struct { Auth oauth.ThreeLeggedAuth Token TokenRefresher HubAPIPath string RateLimiter HttpRequestLimiter }
func NewHubAPI3LWithCredentials ¶
func NewHubAPI3LWithCredentials( auth oauth.ThreeLeggedAuth, token TokenRefresher, limiter HttpRequestLimiter, ) *HubAPI3L
func (*HubAPI3L) GetHubDetailsThreeLegged ¶
func (*HubAPI3L) GetHubsThreeLegged ¶
func (a *HubAPI3L) GetHubsThreeLegged(ctx context.Context) (result ForgeResponseArray, err error)
Hub functions for use with 3legged authentication
func (*HubAPI3L) GetProjectDetailsThreeLegged ¶
func (*HubAPI3L) GetTopFoldersThreeLegged ¶
func (*HubAPI3L) ListProjectsThreeLegged ¶
type ListedBuckets ¶
type ListedBuckets struct { Items []struct { BucketKey string `json:"bucketKey"` CreatedDate uint64 `json:"createdDate"` PolicyKey string `json:"policyKey"` } `json:"items"` Next string `json:"next"` }
ListedBuckets reflects the response when query Data Management API for buckets associated with current Forge secrets.
type OSSLimiter ¶ added in v1.0.0
type OSSLimiter struct {
// contains filtered or unexported fields
}
type ObjectDetails ¶
type ObjectDetails struct { BucketKey string `json:"bucketKey"` ObjectID string `json:"objectID"` ObjectKey string `json:"objectKey"` SHA1 string `json:"sha1"` Size uint64 `json:"size"` ContentType string `json:"contentType, omitempty"` Location string `json:"location"` BlockSizes []int64 `json:"blockSizes, omitempty"` Deltas map[string]string `json:"deltas, omitempty"` }
ObjectDetails reflects the data presented when uploading an object to a bucket or requesting details on object.
type RateLimiter ¶ added in v1.0.0
type RateLimiter struct {
// contains filtered or unexported fields
}
func NewRateLimiter ¶ added in v1.0.0
func NewRateLimiter(endpoints *ApiEndpoints, oss *OSSLimiter, fallback *rate.Limiter) *RateLimiter
type RelatedLinks ¶
type Relationships ¶
type Relationships struct { Hub *RelatedLinks `json:"hub, omitempty"` Projects *RelatedLinks `json:projects, omitempty"` RootFolder *RelatedLinks `json:"rootFolder, omitempty"` TopFolders *RelatedLinks `json:"topFolders, omitempty"` Parent *RelatedLinks `json:"parent, omitempty"` Tip *RelatedLinks `json:"tip, omitempty"` Versions *RelatedLinks `json:"versions, omitempty"` Contents *RelatedLinks `json:"contents, omitempty"` Refs *RelatedLinks `json:"refs, omitempty"` Links *RelatedLinks `json:"links, omitempty"` Item *RelatedLinks `json:"item, omitempty"` Storage *RelatedLinks `json:"storage, omitempty"` Derivatives *RelatedLinks `json:"derivatives, omitempty"` Thumbnails *RelatedLinks `json:"thumbnails, omitempty"` DownloadFormats *RelatedLinks `json:"downloadFormats, omitempty"` }
type TokenRefresher ¶
type TokenRefresher interface { Bearer() *oauth.Bearer RefreshTokenIfRequired(auth oauth.ThreeLeggedAuth) error }