MCPcopy Create free account
hub / github.com/WICG/webpackage / DumpExchange

Function DumpExchange

go/bundle/cmd/dump-bundle/main.go:42–95  ·  view source on GitHub ↗
(e *bundle.Exchange, b *bundle.Bundle, verifier *signature.Verifier)

Source from the content-addressed store, hash-verified

40}
41
42func DumpExchange(e *bundle.Exchange, b *bundle.Bundle, verifier *signature.Verifier) error {
43 payload := e.Response.Body
44 if verifier != nil {
45 result, err := verifier.VerifyExchange(e)
46 if err != nil {
47 fmt.Printf("[Response verification error: %v]\n", err)
48 } else if result != nil {
49 payload = result.VerifiedPayload
50 for i, auth := range b.Signatures.Authorities {
51 if result.Authority == auth {
52 fmt.Printf("[Signed with certificate #%d]\n", i)
53 break
54 }
55 }
56 } else {
57 fmt.Println("[Not signed]")
58 }
59 }
60 if _, err := fmt.Printf("> :url: %v\n", e.Request.URL); err != nil {
61 return err
62 }
63 for k, v := range e.Request.Header {
64 if _, err := fmt.Printf("> %v: %v\n", k, v); err != nil {
65 return err
66 }
67 }
68 if _, err := fmt.Printf("< :status: %v\n", e.Response.Status); err != nil {
69 return err
70 }
71 for k, v := range e.Response.Header {
72 if _, err := fmt.Printf("< %v: %v\n", k, v); err != nil {
73 return err
74 }
75 }
76 if _, err := fmt.Printf("< [len(Body)]: %d\n", len(e.Response.Body)); err != nil {
77 return err
78 }
79 if *flagDumpContentText {
80 ctype := e.Response.Header.Get("content-type")
81 if isTextType(ctype) {
82 if _, err := fmt.Print(string(payload)); err != nil {
83 return err
84 }
85 if _, err := fmt.Print("\n"); err != nil {
86 return err
87 }
88 } else {
89 if _, err := fmt.Print("[non-text body]\n"); err != nil {
90 return err
91 }
92 }
93 }
94 return nil
95}
96
97func isTextType(mimeType string) bool {
98 m, _, err := mime.ParseMediaType(mimeType)

Callers 1

runFunction · 0.85

Calls 2

isTextTypeFunction · 0.85
VerifyExchangeMethod · 0.80

Tested by

no test coverage detected