s3

package
v0.1.4-dev Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 29, 2023 License: MIT Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CreateAccessKey

func CreateAccessKey(schema string, bucket string, key string) string

func CreateAccessToken

func CreateAccessToken(secret string, key string, expires time.Duration) (string, error)

func CreateTokenWithClaims

func CreateTokenWithClaims(secret string, claims jwt.Claims) (string, error)

func DropInvalidObjectFiles

func DropInvalidObjectFiles(schema string, bucket string) error

func DropObjectsBeforeInterval

func DropObjectsBeforeInterval(duration time.Duration) error

func GetObjectContent

func GetObjectContent(obj *S3Object) ([]byte, error)

func HandleDeleteObject

func HandleDeleteObject(c echo.Context) error

@Summary Delete an object from S3 @Tags S3 Objects @ID delete-object @Accept json @Produce json @Security Bearer @Param bucket path string true "S3 objet bucket" default() @Param key path string true "S3 object key" default() @Success 204 @Failure 401 {object} echo.HTTPError "Unauthorized" @Failure 500 {object} echo.HTTPError "Internal server error" @Router /s3/objects/{bucket}/{key} [DELETE]

func HandleGetObject

func HandleGetObject(c echo.Context) error

@Summary Download an object from S3 @Tags S3 Objects @ID download-object @Accept json @Produce octet-stream @Security Bearer @Param bucket path string true "S3 objet bucket" default() @Param key path string true "S3 object key" default() @Param token query string true "Token for the object" @Success 200 {object} nil "Empty response" @Failure 401 {object} echo.HTTPError "Unauthorized" @Failure 500 {object} echo.HTTPError "Internal server error" @Router /s3/objects/{bucket}/{key} [GET]

func HandleGetObjectInfo

func HandleGetObjectInfo(c echo.Context) error

@Summary Get information for an object from S3 @Tags S3 Objects @ID get-object-info @Accept json @Produce json @Security Bearer @Param bucket path string true "S3 objet bucket" default() @Param key path string true "S3 object key" default() @Success 200 {object} s3.S3Object "Object information" @Failure 401 {object} echo.HTTPError "Unauthorized" @Failure 500 {object} echo.HTTPError "Internal server error" @Router /s3/objects/{bucket}/{key}/info [GET]

func HandleListObjects

func HandleListObjects(c echo.Context) error

@Summary List objects @Tags S3 Objects @ID list-objects @Accept json @Produce json @Param page query int false "Page" default(1) @Param page_size query int false "Page size" default(20) @Param order_by query string false "Sort order" default() @Param q query string false "Query" default() @Security Bearer @Success 200 {object} listS3ObjectsData"List of objects" @Failure 401 {object} echo.HTTPError "Unauthorized" @Failure 500 {object} echo.HTTPError "Internal server error" @Router /s3/objects [GET]

func HandlePutObject

func HandlePutObject(c echo.Context) error

@Summary Put an object to S3 @Tags S3 Objects @ID put-object @Accept multipart/form-data @Produce json @Param bucket path string true "S3 objet bucket" default() @Param key path string true "S3 object key" default() @Param file formData file true "File to upload" @Security Bearer @Success 200 {object} s3.S3Object "Object information" @Failure 400 {object} echo.HTTPError "Bad request" @Failure 500 {object} echo.HTTPError "Internal server error" @Router /s3/objects/{bucket}/{key} [POST]

func MakeUrl

func MakeUrl(schema string, bucket string, key string) string

func RemoveObject

func RemoveObject(schema string, bucket string, key string)

func RemoveObjectById

func RemoveObjectById(schema string, id uint)

func S3ObjectHandler

func S3ObjectHandler(next echo.HandlerFunc) echo.HandlerFunc

func SetupFileStorage

func SetupFileStorage(db *gorm.DB, dir string)

func SetupMongoStorage

func SetupMongoStorage(db *gorm.DB, mdb *mongo.Database)

Types

type AccessClaims

type AccessClaims struct {
	jwt.RegisteredClaims
	AccessKey string `json:"ak,omitempty"`
	Username  string `json:"un,omitempty"`
}

type S3Object

type S3Object struct {
	ID      uint              `json:"Id" gorm:"primarykey"`
	Updated jsontype.JSONTime `json:"Updated" gorm:"autoUpdateTime"`
	Created jsontype.JSONTime `json:"Created" gorm:"autoCreateTime"`
	Deleted gorm.DeletedAt    `json:"Deleted" gorm:"index"`

	Schema      string                   `json:"Schema" gorm:"uniqueIndex:idx_s3_object_unique"`
	Bucket      string                   `json:"Bucket" gorm:"uniqueIndex:idx_s3_object_unique"`
	Key         string                   `json:"Key" gorm:"uniqueIndex:idx_s3_object_unique"`
	FileName    string                   `json:"FileName"`
	FileSize    int64                    `json:"FileSize"`
	Signature   string                   `json:"Signature"`
	SignMethod  string                   `json:"SignMethod"`
	MetaDataRaw jsontype.JSONType[*Tags] `json:"-" gorm:"column:meta_data"`
	MetaData    *Tags                    `json:"MetaData" gorm:"-"`
	DownloadUrl string                   `json:"DownloadUrl" gorm:"-"`
}

func GetObject

func GetObject(schema string, bucket string, key string) (*S3Object, error)

func GetObjectById

func GetObjectById(schema string, id uint) (*S3Object, error)

func PutObject

func PutObject(schema string, bucket string, key string, filename string, src io.Reader) (*S3Object, error)

func (*S3Object) AfterDelete

func (m *S3Object) AfterDelete(tx *gorm.DB) (err error)

func (*S3Object) AfterFind

func (m *S3Object) AfterFind(tx *gorm.DB) (err error)

func (*S3Object) BeforeSave

func (m *S3Object) BeforeSave(tx *gorm.DB) (err error)

func (*S3Object) PutFile

func (m *S3Object) PutFile(filename string, buffer []byte) error

func (*S3Object) RemoveFile

func (m *S3Object) RemoveFile() error

type Tags

type Tags map[string]any

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL