github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/sys/blobber/provide.go (about) 1 /* 2 * Copyright (c) 2022-present unTill Pro, Ltd. 3 */ 4 5 package blobber 6 7 import ( 8 "github.com/voedger/voedger/pkg/appdef" 9 "github.com/voedger/voedger/pkg/iblobstorage" 10 "github.com/voedger/voedger/pkg/istructs" 11 "github.com/voedger/voedger/pkg/istructsmem" 12 "github.com/voedger/voedger/pkg/state" 13 ) 14 15 func ProvideBlobberCmds(cfg *istructsmem.AppConfigType) { 16 provideUploadBLOBHelperCmd(cfg) 17 provideDownloadBLOBHelperCmd(cfg) 18 } 19 20 func provideDownloadBLOBHelperCmd(cfg *istructsmem.AppConfigType) { 21 dbhQName := appdef.NewQName(appdef.SysPackage, "DownloadBLOBHelper") 22 23 // this command does nothing. It is called to check Authorization token provided in header only 24 downloadBLOBHelperCmd := istructsmem.NewCommandFunction(dbhQName, istructsmem.NullCommandExec) 25 cfg.Resources.Add(downloadBLOBHelperCmd) 26 } 27 28 func provideUploadBLOBHelperCmd(cfg *istructsmem.AppConfigType) { 29 uploadBLOBHelperCmd := istructsmem.NewCommandFunction(QNameCommandUploadBLOBHelper, ubhExec) 30 cfg.Resources.Add(uploadBLOBHelperCmd) 31 } 32 33 func ubhExec(args istructs.ExecCommandArgs) (err error) { 34 // write a dummy WDoc<BLOB> to book an ID and then use it as a new BLOB ID 35 kb, err := args.State.KeyBuilder(state.Record, QNameWDocBLOB) 36 if err != nil { 37 return 38 } 39 vb, err := args.Intents.NewValue(kb) 40 if err != nil { 41 return 42 } 43 vb.PutRecordID(appdef.SystemField_ID, 1) 44 vb.PutInt32(fldStatus, int32(iblobstorage.BLOBStatus_Unknown)) 45 return nil 46 }