diff --git a/internal/server/handler.go b/internal/server/handler.go index ba57535e8e9b1dfce01e084888af83f9d85e4f75..7b024d5b2cf0f44b14e36a1c899c4ffd7aa0cfeb 100644 --- a/internal/server/handler.go +++ b/internal/server/handler.go @@ -36,16 +36,13 @@ import ( "google.golang.org/grpc/credentials/insecure" "google.golang.org/grpc/status" "io" - "mime/multipart" "net/http" ) const ( - fileIdParam = "id" - samlTokenParam = "samlToken" - fileFormKey = "file" - contentTypeHeaderKey = "Content-Type" - contentDispositionHeaderKey = "Content-Disposition" + fileIdParam = "id" + samlTokenParam = "samlToken" + contentTypeHeaderKey = "Content-Type" ) func RegisterHomeEndpoint(mux *runtime.ServeMux) { @@ -94,7 +91,10 @@ func getFileHandler(w http.ResponseWriter, r *http.Request, vars map[string]stri return } - err = writeMultipartResponse(w, fileBuffer) + w.Header().Set(contentTypeHeaderKey, "application/octet-stream") + w.WriteHeader(http.StatusOK) + + _, err = fileBuffer.WriteTo(w) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } @@ -135,30 +135,6 @@ func fetchFileFromGrpc(ctx context.Context, fileId string, samlToken string, grp return &fileBuffer, nil } -func writeMultipartResponse(w http.ResponseWriter, fileBuffer *bytes.Buffer) error { - w.Header().Set(contentTypeHeaderKey, "multipart/form-data") - w.Header().Set(contentDispositionHeaderKey, `attachment; filename="file"`) - w.WriteHeader(http.StatusOK) - - mw := multipart.NewWriter(w) - part, err := mw.CreateFormFile(fileFormKey, fileFormKey) - if err != nil { - return fmt.Errorf("error creating multipart form file") - } - - _, err = fileBuffer.WriteTo(part) - if err != nil { - return fmt.Errorf("error writing file data to multipart") - } - - err = mw.Close() - if err != nil { - return fmt.Errorf("error closing multipart writer") - } - - return nil -} - func ErrorHandler(ctx context.Context, mux *runtime.ServeMux, marshaler runtime.Marshaler, w http.ResponseWriter, r *http.Request, err error) { st, ok := status.FromError(err) if !ok {