diff options
| author | 2025-07-15 17:36:47 +0700 | |
|---|---|---|
| committer | 2025-07-15 17:36:47 +0700 | |
| commit | 2d2138383af6d28c5b947c5a6c4989afa8f7ac56 (patch) | |
| tree | 6dfb9bf48bb640b29623cd0563c5c732afc196b0 /internal/client/input/b2.go | |
| parent | 373ec07b40178cb3b704aa83fc4fd53abfe279bc (diff) | |
| download | thumbnail-generator-2d2138383af6d28c5b947c5a6c4989afa8f7ac56.tar.gz thumbnail-generator-2d2138383af6d28c5b947c5a6c4989afa8f7ac56.zip | |
feat: first working prototype
Diffstat (limited to 'internal/client/input/b2.go')
| -rw-r--r-- | internal/client/input/b2.go | 44 |
1 files changed, 23 insertions, 21 deletions
diff --git a/internal/client/input/b2.go b/internal/client/input/b2.go index 67fb14e..54a6b09 100644 --- a/internal/client/input/b2.go +++ b/internal/client/input/b2.go @@ -5,6 +5,7 @@ import ( "fmt" "io" "slices" + "strconv" "strings" "github.com/Backblaze/blazer/b2" @@ -72,7 +73,7 @@ func (c *B2InputClient) Scan() ([]string, error) { } } - filePaths = append(filePaths, name) + filePaths = append(filePaths, strings.TrimPrefix(name, c.prefix)) } if err := iter.Err(); err != nil { @@ -82,8 +83,8 @@ func (c *B2InputClient) Scan() ([]string, error) { return filePaths, nil } -func (c *B2InputClient) ReadMetadata(path string) (map[string]string, error) { - obj := c.bucket.Object(path) +func (c *B2InputClient) ReadMetadata(path string) (*MetadataStruct, error) { + obj := c.bucket.Object(c.prefix + path) if obj == nil { return nil, fmt.Errorf("object not found in B2 bucket") } @@ -93,37 +94,38 @@ func (c *B2InputClient) ReadMetadata(path string) (map[string]string, error) { return nil, fmt.Errorf("get attributes for object: %w", err) } - metadata := attrs.Info - metadata["Name"] = attrs.Name - metadata["Size"] = fmt.Sprintf("%d", attrs.Size) - metadata["ContentType"] = attrs.ContentType - metadata["LastModified"] = attrs.LastModified.Format("2006-01-02T15:04:05Z") - metadata["SHA1"] = attrs.SHA1 - metadata["UploadTimestamp"] = attrs.UploadTimestamp.Format("2006-01-02T15:04:05Z") + metadata := MetadataStruct{ + Name: attrs.Name, + StorageType: "b2", + Hash: attrs.SHA1, + ContentType: attrs.ContentType, + FirstCreated: attrs.UploadTimestamp, + LastModified: attrs.LastModified, + Misc: attrs.Info, + } + metadata.Misc["Size"] = strconv.FormatInt(attrs.Size, 10) switch attrs.Status { case b2.Uploaded: - metadata["Status"] = "Uploaded" + metadata.Misc["b2-status"] = "Uploaded" case b2.Folder: - metadata["Status"] = "Folder" + metadata.Misc["b2-status"] = "Folder" case b2.Hider: - metadata["Status"] = "Hider" + metadata.Misc["b2-status"] = "Hider" case b2.Started: - metadata["Status"] = "Started" + metadata.Misc["b2-status"] = "Started" default: - metadata["Status"] = "Unknown" + metadata.Misc["b2-status"] = "Unknown" } - return metadata, nil + return &metadata, nil } -func (c *B2InputClient) GetReader(path string) (io.Reader, error) { - obj := c.bucket.Object(path) +func (c *B2InputClient) GetReader(path string) (io.ReadCloser, error) { + obj := c.bucket.Object(c.prefix + path) if obj == nil { return nil, fmt.Errorf("failed to reference object in B2 bucket") } - reader := obj.NewReader(context.Background()) - - return reader, nil + return obj.NewReader(context.Background()), nil } |