s3

package module
v0.2.8 Latest Latest
Warning

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

Go to latest
Published: Dec 8, 2023 License: MIT Imports: 22 Imported by: 5

README

heys3

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 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 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 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 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 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 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 SetupEchoGroup

func SetupEchoGroup(group *echo.Group) *echo.Group

@title S3 API @version 1.0 @host dev.netdoop.com @BasePath /api/v1 @schemes http @securityDefinitions.apikey Bearer @in header @name Authorization @description Type "Bearer" followed by a space and JWT token.

func SetupFileStorage

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

func SetupMongoStorage

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

Types

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) AfterFind

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

func (*S3Object) BeforeSave

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

type S3Server

type S3Server struct {
	// contains filtered or unexported fields
}

func NewFileStorageServer

func NewFileStorageServer(db *gorm.DB, dir string, secret string) *S3Server

func NewMongoStorageServer

func NewMongoStorageServer(db *gorm.DB, mdb *mongo.Database, secret string) *S3Server

func (*S3Server) DropInvalidObjectFiles

func (s *S3Server) DropInvalidObjectFiles(schema string, bucket string) error

func (*S3Server) DropObjectsBeforeInterval

func (s *S3Server) DropObjectsBeforeInterval(duration time.Duration) error

func (*S3Server) GetDB

func (s *S3Server) GetDB() *gorm.DB

func (*S3Server) GetObject

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

func (*S3Server) GetObjectById

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

func (*S3Server) GetObjectContent

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

func (*S3Server) PutObject

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

func (*S3Server) RemoveObject

func (s *S3Server) RemoveObject(schema string, bucket string, key string)

func (*S3Server) RemoveObjectById

func (s *S3Server) RemoveObjectById(schema string, id uint)

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