Anthony Accioly
668c41b988
fix(blossom): handle nil BlobDescriptor in Get and Delete
...
Refine extension derivation logic by ensuring `bd` is not nil before
accessing its type.
2025-09-08 16:06:24 -03:00
Anthony Accioly
3c802caff5
feat(blossom)!: add file extension parameter to Blossom hooks
...
This enhancement allows hooks to make extension-aware decisions for storage,
loading, and access control operations. The extension is intelligently derived
from MIME type detection, file magic bytes, or URL parsing.
Additionally improves MIME type handling by providing fallback to
"application/octet-stream" when extension-based detection fails as per
BUD-01.
BREAKING CHANGE: All Blossom hook functions now require an additional `ext` parameter:
- StoreBlob hooks now accept (ctx, sha256, ext, body) instead of (ctx, sha256, body)
- LoadBlob hooks now accept (ctx, sha256, ext) instead of (ctx, sha256)
- DeleteBlob hooks now accept (ctx, sha256, ext) instead of (ctx, sha256)
- RejectGet hooks now accept (ctx, auth, sha256, ext) instead of (ctx, auth, sha256)
- RejectDelete hooks now accept (ctx, auth, sha256, ext) instead of (ctx, auth, sha256)
2025-09-08 16:06:24 -03:00
fiatjaf
97bc365996
refactor @aaccioly's blossom redirect thing.
2025-06-10 16:22:48 -03:00
Anthony Accioly
5705647c6b
fix(blossom): remove extra . when serving files without extension
...
Ensure the correct filename is constructed when serving content without
an extension
2025-06-03 18:31:53 -03:00
Anthony Accioly
011efe0dd2
feat(server): add functional options for BlossomServer configuration
...
Introduce `ServerOption` to configure `BlossomServer` with functional
options. Add `WithRedirectURL` to enable flexible redirect URL handling
with placeholders. Update `New` constructor to accept optional
configurations.
2025-06-03 18:31:53 -03:00
Anthony Accioly
16eee5cffb
feat(blossom): add redirect support for GET requests
2025-06-03 18:31:53 -03:00
fiatjaf
c5076b297d
handle files declared as .apk as .apk.
...
fixes https://github.com/fiatjaf/khatru/issues/50
2025-06-03 18:29:39 -03:00
sudocarlos
b6da555807
blossom: return content-type in handleUpload() ( #46 )
2025-05-09 08:41:46 -03:00
sudocarlos
1ab44ab897
blossom: implement BUD-05 without optimizations ( #45 )
...
* blossom: implement BUD-05 without optimizations
* blossom: add redirect function, handle /media with 307 redirect to /upload
* blossome: remove duplicate /upload handle
* blossom: add content-length header to handleHasBlob()
* blossom: add content-type header to handleHasBlob()
* blossom: remove blossomRedirect() and use http.Redirect() for handleMedia() instead
2025-05-08 10:29:26 -03:00
fiatjaf
3da898cec7
blossom: implement BUD-04
...
closes https://github.com/fiatjaf/khatru/issues/43
2025-05-06 00:44:45 -03:00
fiatjaf
fbb40f3b74
use .Find() instead of .GetFirst() everywhere.
2025-04-04 23:07:18 -03:00
fiatjaf
850497956c
include checkid length check from @pippellia-btc
2025-03-24 15:57:20 -03:00
andrewheadricke
28ce6cfb7a
ensure suspected blossom request hash does not have slashes in it
2025-03-24 15:23:00 -03:00
fiatjaf
f47282c745
get rid of base64x temporarily since it doesn't work on arm64.
2025-03-19 15:02:56 -03:00
andrewheadricke
6cc2477e89
fix blossom upload < 50bytes
2025-03-15 01:58:07 -03:00
fiatjaf
0d736cff82
fix blossom authorization decoder.
2025-03-11 17:32:12 -03:00
fiatjaf
db832d4255
use sonic json parser and other minor performance improvements.
2025-03-07 21:47:34 -03:00
k.
414867e62c
feat(blossom): add bud-09 reporting handler. ( #29 )
2025-02-01 18:03:17 -03:00
Anthony Accioly
c4d9ef1025
fix(blossom): respond with 401 on missing Auth
2025-01-26 17:23:29 -03:00
fiatjaf
fa523a6ab9
blossom: etag and cache-control headers.
2024-12-09 15:41:29 -03:00
Your Name
1b4d81dde4
corrects malformed json in blossom list
2024-11-22 10:03:50 -03:00
girino
3f26a1f727
Change API of LoadBlob to return io.ReadSeeker instead of io.Reader and use ServeContent to serve blob content ( #19 )
...
* first test with http.ServeContent
* added debug to help me here
* removed debug messages
* changed LoadBlob to requisre io.ReadSeeker
---------
Co-authored-by: Your Name <you@example.com >
2024-11-21 11:58:12 -03:00
Anthony Accioly
1498da09c8
refactor(blossom): remove setCors function
2024-11-05 19:04:41 +00:00
Anthony Accioly
3d4dd71510
refactor(blossom): undo enhanced routing
2024-11-05 18:55:47 +00:00
Anthony Accioly
582a74c000
refactor: apply CORS rules on relay
2024-11-05 18:37:12 +00:00
Anthony Accioly
bbcf948dd6
fix(blossom): forward requests to base relay
2024-11-05 17:56:56 +00:00
Anthony Accioly
2a80d4099d
perf(blossom): set Access-Control-Max-Age to 24 h
2024-11-05 16:56:59 +00:00
Anthony Accioly
ad6635d86c
refactor(blossom): use Go 1.22 enhanced routing
2024-11-05 16:48:21 +00:00
Anthony Accioly
c93441cd63
feat(blossom): use rs/cors to handle BUD-01 CORS
2024-11-04 17:18:37 +00:00
Anthony Accioly
1c15db2ca1
fix(blossom): CORS headers required by noStrudel
2024-10-31 07:50:34 -03:00
fiatjaf
b617fea679
blossom: again a bunch of fixes. require Authorization on /upload again always.
2024-10-29 16:32:53 -03:00
fiatjaf
1d7bdccb3a
blossom: fixes and updates from trying to use it.
2024-10-29 09:01:19 -03:00
fiatjaf
92d1a5b671
blossom: implement bud06 (upload requirements).
2024-10-29 09:01:16 -03:00
fiatjaf
7f878121fc
blossom: return code from Reject* functions because HTTP is stupid.
2024-10-29 09:01:13 -03:00
fiatjaf
a893dc2d2c
blossom: store as a standalone interface (and an eventstore wrapper).
2024-10-29 09:01:04 -03:00
fiatjaf
91e7737ec1
basic modular blossom support.
2024-10-27 17:20:10 -03:00