repos / pico

pico services mono repo
git clone https://github.com/picosh/pico.git

pico / pkg / pobj
Antonio Mika  ·  2025-03-12

asset.go

 1package pobj
 2
 3import (
 4	"fmt"
 5
 6	"github.com/picosh/pico/pkg/pssh"
 7	"github.com/picosh/pico/pkg/send/utils"
 8)
 9
10type AssetNames interface {
11	BucketName(sesh *pssh.SSHServerConnSession) (string, error)
12	ObjectName(sesh *pssh.SSHServerConnSession, entry *utils.FileEntry) (string, error)
13	PrintObjectName(sesh *pssh.SSHServerConnSession, entry *utils.FileEntry, bucketName string) (string, error)
14}
15
16type AssetNamesBasic struct{}
17
18var _ AssetNames = &AssetNamesBasic{}
19var _ AssetNames = (*AssetNamesBasic)(nil)
20
21func (an *AssetNamesBasic) BucketName(sesh *pssh.SSHServerConnSession) (string, error) {
22	return sesh.User(), nil
23}
24func (an *AssetNamesBasic) ObjectName(sesh *pssh.SSHServerConnSession, entry *utils.FileEntry) (string, error) {
25	return entry.Filepath, nil
26}
27func (an *AssetNamesBasic) PrintObjectName(sesh *pssh.SSHServerConnSession, entry *utils.FileEntry, bucketName string) (string, error) {
28	objectName, err := an.ObjectName(sesh, entry)
29	if err != nil {
30		return "", err
31	}
32	return fmt.Sprintf("%s%s", bucketName, objectName), nil
33}
34
35type AssetNamesForceBucket struct {
36	*AssetNamesBasic
37	Name string
38}
39
40var _ AssetNames = &AssetNamesForceBucket{}
41var _ AssetNames = (*AssetNamesForceBucket)(nil)
42
43func (an *AssetNamesForceBucket) BucketName(sesh *pssh.SSHServerConnSession) (string, error) {
44	return an.Name, nil
45}