blossom.UploadFilePath() and UploadFile()

This commit is contained in:
fiatjaf
2025-05-02 15:19:56 -03:00
parent 002dc1e84d
commit f23356ab45

View File

@@ -13,18 +13,28 @@ import (
"fiatjaf.com/nostr" "fiatjaf.com/nostr"
) )
// UploadFile uploads a file to the media server // UploadFilePath uploads a file to the media server, takes a filepath
func (c *Client) UploadFile(ctx context.Context, filePath string) (*BlobDescriptor, error) { func (c *Client) UploadFilePath(ctx context.Context, filePath string) (*BlobDescriptor, error) {
file, err := os.Open(filePath) file, err := os.Open(filePath)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to open %s: %w", filePath, err) return nil, fmt.Errorf("failed to open %s: %w", filePath, err)
} }
defer file.Close() defer file.Close()
bd, err := c.UploadFile(ctx, file, mime.TypeByExtension(filepath.Ext(filePath)))
if err != nil {
return nil, fmt.Errorf("%w -- at path %s", err, filePath)
}
return bd, nil
}
// Upload uploads a file to the media server
func (c *Client) UploadFile(ctx context.Context, file *os.File, contentType string) (*BlobDescriptor, error) {
sha := sha256.New() sha := sha256.New()
size, err := io.Copy(sha, file) size, err := io.Copy(sha, file)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to read %s: %w", filePath, err) return nil, fmt.Errorf("failed to read file: %w", err)
} }
hash := sha.Sum(nil) hash := sha.Sum(nil)
@@ -33,8 +43,6 @@ func (c *Client) UploadFile(ctx context.Context, filePath string) (*BlobDescript
return nil, fmt.Errorf("failed to reset file position: %w", err) return nil, fmt.Errorf("failed to reset file position: %w", err)
} }
contentType := mime.TypeByExtension(filepath.Ext(filePath))
bd := BlobDescriptor{} bd := BlobDescriptor{}
err = c.httpCall(ctx, "PUT", "upload", contentType, func() string { err = c.httpCall(ctx, "PUT", "upload", contentType, func() string {
return c.authorizationHeader(ctx, func(evt *nostr.Event) { return c.authorizationHeader(ctx, func(evt *nostr.Event) {
@@ -43,7 +51,7 @@ func (c *Client) UploadFile(ctx context.Context, filePath string) (*BlobDescript
}) })
}, file, size, &bd) }, file, size, &bd)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to upload %s: %w", filePath, err) return nil, fmt.Errorf("failed to upload: %w", err)
} }
return &bd, nil return &bd, nil