Mirror of @tangled.org/core. Running on a Raspberry Pi Zero 2 (Please be gentle).
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

appview/pulls: compress patch blobs using gzip

there is a very strange bug in the bluesky-pds implementation that
prevents blobs with the text `<svg` from being uploaded. it triggers a
500 because the underlying MIME type detection library assumes XML but
the provided MIME type does not match.

ref: https://github.com/bluesky-social/atproto/issues/3151

gzipping the content lets us upload this without any issues.

Signed-off-by: oppiliappan <me@oppi.li>

+16 -5
+16 -5
appview/pulls/pulls.go
··· 1 1 package pulls 2 2 3 3 import ( 4 + "bytes" 5 + "compress/gzip" 4 6 "context" 5 7 "database/sql" 6 8 "encoding/json" 7 9 "errors" 8 10 "fmt" 11 + "io" 9 12 "log" 10 13 "log/slog" 11 14 "net/http" ··· 1244 1241 return 1245 1242 } 1246 1243 1247 - blob, err := comatproto.RepoUploadBlob(r.Context(), client, strings.NewReader(patch)) 1244 + blob, err := comatproto.RepoUploadBlob(r.Context(), client, gz(patch)) 1248 1245 if err != nil { 1249 1246 log.Println("failed to upload patch", err) 1250 1247 s.pages.Notice(w, "pull", "Failed to create pull request. Try again later.") ··· 1338 1335 // apply all record creations at once 1339 1336 var writes []*comatproto.RepoApplyWrites_Input_Writes_Elem 1340 1337 for _, p := range stack { 1341 - blob, err := comatproto.RepoUploadBlob(r.Context(), client, strings.NewReader(p.LatestPatch())) 1338 + blob, err := comatproto.RepoUploadBlob(r.Context(), client, gz(p.LatestPatch())) 1342 1339 if err != nil { 1343 1340 log.Println("failed to upload patch blob", err) 1344 1341 s.pages.Notice(w, "pull", "Failed to create pull request. Try again later.") ··· 1888 1885 return 1889 1886 } 1890 1887 1891 - blob, err := comatproto.RepoUploadBlob(r.Context(), client, strings.NewReader(patch)) 1888 + blob, err := comatproto.RepoUploadBlob(r.Context(), client, gz(patch)) 1892 1889 if err != nil { 1893 1890 log.Println("failed to upload patch blob", err) 1894 1891 s.pages.Notice(w, "resubmit-error", "Failed to update pull request on the PDS. Try again later.") ··· 2030 2027 return 2031 2028 } 2032 2029 2033 - blob, err := comatproto.RepoUploadBlob(r.Context(), client, strings.NewReader(patch)) 2030 + blob, err := comatproto.RepoUploadBlob(r.Context(), client, gz(patch)) 2034 2031 if err != nil { 2035 2032 log.Println("failed to upload patch blob", err) 2036 2033 s.pages.Notice(w, "resubmit-error", "Failed to update pull request on the PDS. Try again later.") ··· 2072 2069 return 2073 2070 } 2074 2071 2075 - blob, err := comatproto.RepoUploadBlob(r.Context(), client, strings.NewReader(patch)) 2072 + blob, err := comatproto.RepoUploadBlob(r.Context(), client, gz(patch)) 2076 2073 if err != nil { 2077 2074 log.Println("failed to upload patch blob", err) 2078 2075 s.pages.Notice(w, "resubmit-error", "Failed to update pull request on the PDS. Try again later.") ··· 2454 2451 } 2455 2452 2456 2453 return stack, nil 2454 + } 2455 + 2456 + func gz(s string) io.Reader { 2457 + var b bytes.Buffer 2458 + w := gzip.NewWriter(&b) 2459 + w.Write([]byte(s)) 2460 + w.Close() 2461 + return &b 2457 2462 }