Logs
Patchsets
Range Diff ↕ rd-139
1: 827f272 = 1: 827f272 feat(storage): base storage fn
2: e63282c = 2: e63282c feat(prose): use storage base for prose
3: 2a52510 = 3: 2a52510 refactor(prose): use fs adapter for images
-: ------- > 4: 6ddc654 refactor: proxy headers for images
Range-diff rd-139
- title
- feat(storage): base storage fn
- description
-
Patch equal - old #1
827f272- new #1
827f272
- title
- feat(prose): use storage base for prose
- description
-
Patch equal - old #2
e63282c- new #2
e63282c
- title
- refactor(prose): use fs adapter for images
- description
-
Patch equal - old #3
2a52510- new #3
2a52510
- title
- refactor: proxy headers for images
- description
-
Patch added - old #0
(none)- new #4
6ddc654
1: 827f272 = 1: 827f272 feat(storage): base storage fn
2: e63282c = 2: e63282c feat(prose): use storage base for prose
3: 2a52510 = 3: 2a52510 refactor(prose): use fs adapter for images
-: ------- > 4: 6ddc654 refactor: proxy headers for images
old
new
old:
pkg/apps/prose/api.go
new:pkg/apps/prose/api.go
} fmt.Println("HERERERERER", fname, opts) - contents, info, err := st.ServeObject(bucket, fname, opts) + contents, info, err := st.ServeObject(r, bucket, fname, opts) if err != nil { logger.Error("serve object", "err", err) http.Error(w, err.Error(), http.StatusUnprocessableEntity)
old
new
old:
pkg/shared/storage/fs.go
new:pkg/shared/storage/fs.go
"fmt" "io" "log/slog" + "net/http" "os" "path/filepath" "strings" return &StorageFS{st, logger}, nil } -func (s *StorageFS) ServeObject(bucket sst.Bucket, fpath string, opts *ImgProcessOpts) (io.ReadCloser, *sst.ObjectInfo, error) { +func (s *StorageFS) ServeObject(r *http.Request, bucket sst.Bucket, fpath string, opts *ImgProcessOpts) (io.ReadCloser, *sst.ObjectInfo, error) { var rc io.ReadCloser info := &sst.ObjectInfo{} var err error } else { filePath := filepath.Join(bucket.Name, fpath) dataURL := fmt.Sprintf("local:///%s", filePath) - rc, info, err = HandleProxy(s.Logger, dataURL, opts) + rc, info, err = HandleProxy(r, s.Logger, dataURL, opts) } if err != nil { return nil, nil, err
old
new
old:
pkg/shared/storage/memory.go
new:pkg/shared/storage/memory.go
return &StorageMemory{st}, nil } -func (s *StorageMemory) ServeObject(bucket sst.Bucket, fpath string, opts *ImgProcessOpts) (io.ReadCloser, *sst.ObjectInfo, error) { +func (s *StorageMemory) ServeObject(r *http.Request, bucket sst.Bucket, fpath string, opts *ImgProcessOpts) (io.ReadCloser, *sst.ObjectInfo, error) { obj, info, err := s.GetObject(bucket, fpath) if info.Metadata == nil { info.Metadata = make(http.Header)
old
new
old:
pkg/shared/storage/minio.go
new:pkg/shared/storage/minio.go
"fmt" "io" "log/slog" + "net/http" "os" "path/filepath" "strings" return &StorageMinio{st}, nil } -func (s *StorageMinio) ServeObject(bucket sst.Bucket, fpath string, opts *ImgProcessOpts) (io.ReadCloser, *sst.ObjectInfo, error) { +func (s *StorageMinio) ServeObject(r *http.Request, bucket sst.Bucket, fpath string, opts *ImgProcessOpts) (io.ReadCloser, *sst.ObjectInfo, error) { var rc io.ReadCloser info := &sst.ObjectInfo{} var err error } else { filePath := filepath.Join(bucket.Name, fpath) dataURL := fmt.Sprintf("s3://%s", filePath) - rc, info, err = HandleProxy(s.Logger, dataURL, opts) + rc, info, err = HandleProxy(r, s.Logger, dataURL, opts) } if err != nil { return nil, nil, err
old
new
old:
pkg/shared/storage/proxy.go
new:pkg/shared/storage/proxy.go
return processOpts } -func HandleProxy(logger *slog.Logger, dataURL string, opts *ImgProcessOpts) (io.ReadCloser, *storage.ObjectInfo, error) { +func HandleProxy(r *http.Request, logger *slog.Logger, dataURL string, opts *ImgProcessOpts) (io.ReadCloser, *storage.ObjectInfo, error) { imgProxyURL := os.Getenv("IMGPROXY_URL") imgProxySalt := os.Getenv("IMGPROXY_SALT") imgProxyKey := os.Getenv("IMGPROXY_KEY") } proxyAddress := fmt.Sprintf("%s/%s%s", imgProxyURL, signature, processPath) - res, err := http.Get(proxyAddress) + req, err := http.NewRequest(http.MethodGet, proxyAddress, nil) + if err != nil { + return nil, nil, err + } + req.Header.Set("accept", r.Header.Get("accept")) + req.Header.Set("accept-encoding", r.Header.Get("accept-encoding")) + req.Header.Set("accept-language", r.Header.Get("accept-language")) + req.Header.Set("content-type", r.Header.Get("content-type")) + fmt.Println("HEADERS", req.Header) + res, err := http.DefaultClient.Do(req) if err != nil { return nil, nil, err }
old
new
old:
pkg/shared/storage/storage.go
new:pkg/shared/storage/storage.go
import ( "io" + "net/http" sst "github.com/picosh/pico/pkg/pobj/storage" ) type StorageServe interface { sst.ObjectStorage - ServeObject(bucket sst.Bucket, fpath string, opts *ImgProcessOpts) (io.ReadCloser, *sst.ObjectInfo, error) + ServeObject(r *http.Request, bucket sst.Bucket, fpath string, opts *ImgProcessOpts) (io.ReadCloser, *sst.ObjectInfo, error) }