diff --git a/go.mod b/go.mod index 269f0417..79424d4b 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ toolchain go1.23.2 require ( github.com/0xsequence/ethkit v1.30.6 - github.com/0xsequence/go-sequence v0.44.2 + github.com/0xsequence/go-sequence v0.47.0 github.com/0xsequence/nitrocontrol v0.3.0 github.com/BurntSushi/toml v1.4.0 github.com/aws/aws-sdk-go-v2 v1.30.3 diff --git a/go.sum b/go.sum index c29cd55c..36a7f4b7 100644 --- a/go.sum +++ b/go.sum @@ -5,8 +5,8 @@ github.com/0xsequence/ethkit v1.30.6 h1:JcIYjQ5jmzsooPmFUKKqO6ISiDQBYCenSC51sLcS github.com/0xsequence/ethkit v1.30.6/go.mod h1:rv0FAIyEyN0hhwGefbduAz4ujmyjyJXhCd6a0/yF3tk= github.com/0xsequence/go-ethauth v0.14.0 h1:0TQKu/bFpTZ0hNtedqfHuRn/fa2wI8qlLJE0rDgJ0Dw= github.com/0xsequence/go-ethauth v0.14.0/go.mod h1:AX6zc0LNxzRHXW+i+IPyuLLgj+AdLl7KjLNRXB/10r0= -github.com/0xsequence/go-sequence v0.44.2 h1:UMc0DWme4bcFl32OZu2ace4wNh5XkUI9AQ2cUGtn3/g= -github.com/0xsequence/go-sequence v0.44.2/go.mod h1:taksc+Fh5cMK07swbzJa4BKNKmfi9qbNEiIWoElW2GU= +github.com/0xsequence/go-sequence v0.47.0 h1:z/06O1AUPsd9aAI/Od6zXgocXgBWgwEDeLGQV8fvkvw= +github.com/0xsequence/go-sequence v0.47.0/go.mod h1:taksc+Fh5cMK07swbzJa4BKNKmfi9qbNEiIWoElW2GU= github.com/0xsequence/nitrocontrol v0.3.0 h1:D0/gX576zQhitrJnBfBrOFFufEOzh6f2jO/+2ynwIUA= github.com/0xsequence/nitrocontrol v0.3.0/go.mod h1:sTG5akVPzoVr3unv/7h9aZGaT+BVGmvUMOdwXFeIEEA= github.com/0xsequence/nsm v0.1.0 h1:gVOViRWPUW/c5VEmGy2gCw1az/nqP3gY7VD9V2+069k= diff --git a/vendor/github.com/0xsequence/go-sequence/README.md b/vendor/github.com/0xsequence/go-sequence/README.md index a992d65e..3d172ddc 100644 --- a/vendor/github.com/0xsequence/go-sequence/README.md +++ b/vendor/github.com/0xsequence/go-sequence/README.md @@ -10,7 +10,7 @@ For documentation on sequence, please see our [docs](https://docs.sequence.xyz) ## Developing the go-sequence library -1. `make boostrap` -- will install node modules of ./testutil/chain +1. `make bootstrap` -- will install node modules of ./testutil/chain 2. `make start-testchain` -- starts the test ethereum chain (id 1337) 3. (in a separate terminal) `make test` -- runs test suite diff --git a/vendor/github.com/0xsequence/go-sequence/sessions/proto/sessions.gen.go b/vendor/github.com/0xsequence/go-sequence/sessions/proto/sessions.gen.go index ed719361..7d8bbce4 100644 --- a/vendor/github.com/0xsequence/go-sequence/sessions/proto/sessions.gen.go +++ b/vendor/github.com/0xsequence/go-sequence/sessions/proto/sessions.gen.go @@ -1,6 +1,6 @@ -// sessions v0.0.1 67f782e8acfe452f905078a7423ed5d27c6639a8 +// sessions v0.0.1 48681273e3b0249c5feb593b9af1b59dc6a14869 // -- -// Code generated by webrpc-gen@v0.20.3 with golang generator. DO NOT EDIT. +// Code generated by webrpc-gen@v0.22.1 with golang generator. DO NOT EDIT. // // webrpc-gen -schema=sessions.ridl -target=golang -pkg=proto -client -out=./clients/sessions.gen.go package proto @@ -14,11 +14,16 @@ import ( "io" "net/http" "net/url" + "strings" "time" "github.com/0xsequence/go-sequence/lib/prototyp" ) +const WebrpcHeader = "Webrpc" + +const WebrpcHeaderValue = "webrpc@v0.22.1;gen-golang@v0.17.0;sessions@v0.0.1" + // WebRPC description and code-gen version func WebRPCVersion() string { return "v1" @@ -31,7 +36,58 @@ func WebRPCSchemaVersion() string { // Schema hash generated from your RIDL schema func WebRPCSchemaHash() string { - return "67f782e8acfe452f905078a7423ed5d27c6639a8" + return "48681273e3b0249c5feb593b9af1b59dc6a14869" +} + +type WebrpcGenVersions struct { + WebrpcGenVersion string + CodeGenName string + CodeGenVersion string + SchemaName string + SchemaVersion string +} + +func VersionFromHeader(h http.Header) (*WebrpcGenVersions, error) { + if h.Get(WebrpcHeader) == "" { + return nil, fmt.Errorf("header is empty or missing") + } + + versions, err := parseWebrpcGenVersions(h.Get(WebrpcHeader)) + if err != nil { + return nil, fmt.Errorf("webrpc header is invalid: %w", err) + } + + return versions, nil +} + +func parseWebrpcGenVersions(header string) (*WebrpcGenVersions, error) { + versions := strings.Split(header, ";") + if len(versions) < 3 { + return nil, fmt.Errorf("expected at least 3 parts while parsing webrpc header: %v", header) + } + + _, webrpcGenVersion, ok := strings.Cut(versions[0], "@") + if !ok { + return nil, fmt.Errorf("webrpc gen version could not be parsed from: %s", versions[0]) + } + + tmplTarget, tmplVersion, ok := strings.Cut(versions[1], "@") + if !ok { + return nil, fmt.Errorf("tmplTarget and tmplVersion could not be parsed from: %s", versions[1]) + } + + schemaName, schemaVersion, ok := strings.Cut(versions[2], "@") + if !ok { + return nil, fmt.Errorf("schema name and schema version could not be parsed from: %s", versions[2]) + } + + return &WebrpcGenVersions{ + WebrpcGenVersion: webrpcGenVersion, + CodeGenName: tmplTarget, + CodeGenVersion: tmplVersion, + SchemaName: schemaName, + SchemaVersion: schemaVersion, + }, nil } // @@ -186,9 +242,9 @@ type Signature struct { } type SignerSignature struct { - ReferenceChainID *string `json:"referenceChainID"` Signer *string `json:"signer"` Signature string `json:"signature"` + ReferenceChainID *string `json:"referenceChainID"` } type ConfigUpdate struct { @@ -212,70 +268,77 @@ type TransactionBundle struct { Signature prototyp.Hash `json:"signature"` } -var ( - methods = map[string]method{ - "/rpc/Sessions/Ping": { - Name: "Ping", - Service: "Sessions", - Annotations: map[string]string{}, - }, - "/rpc/Sessions/Config": { - Name: "Config", - Service: "Sessions", - Annotations: map[string]string{}, - }, - "/rpc/Sessions/Wallets": { - Name: "Wallets", - Service: "Sessions", - Annotations: map[string]string{}, - }, - "/rpc/Sessions/DeployHash": { - Name: "DeployHash", - Service: "Sessions", - Annotations: map[string]string{}, - }, - "/rpc/Sessions/ConfigUpdates": { - Name: "ConfigUpdates", - Service: "Sessions", - Annotations: map[string]string{}, - }, - "/rpc/Sessions/Migrations": { - Name: "Migrations", - Service: "Sessions", - Annotations: map[string]string{}, - }, - "/rpc/Sessions/SaveConfig": { - Name: "SaveConfig", - Service: "Sessions", - Annotations: map[string]string{}, - }, - "/rpc/Sessions/SaveWallet": { - Name: "SaveWallet", - Service: "Sessions", - Annotations: map[string]string{}, - }, - "/rpc/Sessions/SaveSignature": { - Name: "SaveSignature", - Service: "Sessions", - Annotations: map[string]string{}, - }, - "/rpc/Sessions/SaveSignerSignatures": { - Name: "SaveSignerSignatures", - Service: "Sessions", - Annotations: map[string]string{}, - }, - "/rpc/Sessions/SaveSignerSignatures2": { - Name: "SaveSignerSignatures2", - Service: "Sessions", - Annotations: map[string]string{}, - }, - "/rpc/Sessions/SaveMigration": { - Name: "SaveMigration", - Service: "Sessions", - Annotations: map[string]string{}, - }, +var methods = map[string]method{ + "/rpc/Sessions/Ping": { + Name: "Ping", + Service: "Sessions", + Annotations: map[string]string{}, + }, + "/rpc/Sessions/Config": { + Name: "Config", + Service: "Sessions", + Annotations: map[string]string{}, + }, + "/rpc/Sessions/Wallets": { + Name: "Wallets", + Service: "Sessions", + Annotations: map[string]string{}, + }, + "/rpc/Sessions/DeployHash": { + Name: "DeployHash", + Service: "Sessions", + Annotations: map[string]string{}, + }, + "/rpc/Sessions/ConfigUpdates": { + Name: "ConfigUpdates", + Service: "Sessions", + Annotations: map[string]string{}, + }, + "/rpc/Sessions/Migrations": { + Name: "Migrations", + Service: "Sessions", + Annotations: map[string]string{}, + }, + "/rpc/Sessions/SaveConfig": { + Name: "SaveConfig", + Service: "Sessions", + Annotations: map[string]string{}, + }, + "/rpc/Sessions/SaveWallet": { + Name: "SaveWallet", + Service: "Sessions", + Annotations: map[string]string{}, + }, + "/rpc/Sessions/SaveSignature": { + Name: "SaveSignature", + Service: "Sessions", + Annotations: map[string]string{}, + }, + "/rpc/Sessions/SaveSignerSignatures": { + Name: "SaveSignerSignatures", + Service: "Sessions", + Annotations: map[string]string{}, + }, + "/rpc/Sessions/SaveSignerSignatures2": { + Name: "SaveSignerSignatures2", + Service: "Sessions", + Annotations: map[string]string{}, + }, + "/rpc/Sessions/SaveMigration": { + Name: "SaveMigration", + Service: "Sessions", + Annotations: map[string]string{}, + }, +} + +func WebrpcMethods() map[string]method { + res := make(map[string]method, len(methods)) + for k, v := range methods { + res[k] = v } -) + + return res +} var WebRPCServices = map[string][]string{ "Sessions": { @@ -371,7 +434,7 @@ func (c *sessionsClient) Ping(ctx context.Context) error { if resp != nil { cerr := resp.Body.Close() if err == nil && cerr != nil { - err = ErrWebrpcRequestFailed.WithCause(fmt.Errorf("failed to close response body: %w", cerr)) + err = ErrWebrpcRequestFailed.WithCausef("failed to close response body: %w", cerr) } } @@ -391,7 +454,7 @@ func (c *sessionsClient) Config(ctx context.Context, imageHash string) (int, int if resp != nil { cerr := resp.Body.Close() if err == nil && cerr != nil { - err = ErrWebrpcRequestFailed.WithCause(fmt.Errorf("failed to close response body: %w", cerr)) + err = ErrWebrpcRequestFailed.WithCausef("failed to close response body: %w", cerr) } } @@ -413,7 +476,7 @@ func (c *sessionsClient) Wallets(ctx context.Context, signer string, cursor *uin if resp != nil { cerr := resp.Body.Close() if err == nil && cerr != nil { - err = ErrWebrpcRequestFailed.WithCause(fmt.Errorf("failed to close response body: %w", cerr)) + err = ErrWebrpcRequestFailed.WithCausef("failed to close response body: %w", cerr) } } @@ -433,7 +496,7 @@ func (c *sessionsClient) DeployHash(ctx context.Context, wallet string) (string, if resp != nil { cerr := resp.Body.Close() if err == nil && cerr != nil { - err = ErrWebrpcRequestFailed.WithCause(fmt.Errorf("failed to close response body: %w", cerr)) + err = ErrWebrpcRequestFailed.WithCausef("failed to close response body: %w", cerr) } } @@ -454,7 +517,7 @@ func (c *sessionsClient) ConfigUpdates(ctx context.Context, wallet string, fromI if resp != nil { cerr := resp.Body.Close() if err == nil && cerr != nil { - err = ErrWebrpcRequestFailed.WithCause(fmt.Errorf("failed to close response body: %w", cerr)) + err = ErrWebrpcRequestFailed.WithCausef("failed to close response body: %w", cerr) } } @@ -476,7 +539,7 @@ func (c *sessionsClient) Migrations(ctx context.Context, wallet string, fromVers if resp != nil { cerr := resp.Body.Close() if err == nil && cerr != nil { - err = ErrWebrpcRequestFailed.WithCause(fmt.Errorf("failed to close response body: %w", cerr)) + err = ErrWebrpcRequestFailed.WithCausef("failed to close response body: %w", cerr) } } @@ -493,7 +556,7 @@ func (c *sessionsClient) SaveConfig(ctx context.Context, version int, config int if resp != nil { cerr := resp.Body.Close() if err == nil && cerr != nil { - err = ErrWebrpcRequestFailed.WithCause(fmt.Errorf("failed to close response body: %w", cerr)) + err = ErrWebrpcRequestFailed.WithCausef("failed to close response body: %w", cerr) } } @@ -510,7 +573,7 @@ func (c *sessionsClient) SaveWallet(ctx context.Context, version int, deployConf if resp != nil { cerr := resp.Body.Close() if err == nil && cerr != nil { - err = ErrWebrpcRequestFailed.WithCause(fmt.Errorf("failed to close response body: %w", cerr)) + err = ErrWebrpcRequestFailed.WithCausef("failed to close response body: %w", cerr) } } @@ -531,7 +594,7 @@ func (c *sessionsClient) SaveSignature(ctx context.Context, wallet string, diges if resp != nil { cerr := resp.Body.Close() if err == nil && cerr != nil { - err = ErrWebrpcRequestFailed.WithCause(fmt.Errorf("failed to close response body: %w", cerr)) + err = ErrWebrpcRequestFailed.WithCausef("failed to close response body: %w", cerr) } } @@ -551,7 +614,7 @@ func (c *sessionsClient) SaveSignerSignatures(ctx context.Context, wallet string if resp != nil { cerr := resp.Body.Close() if err == nil && cerr != nil { - err = ErrWebrpcRequestFailed.WithCause(fmt.Errorf("failed to close response body: %w", cerr)) + err = ErrWebrpcRequestFailed.WithCausef("failed to close response body: %w", cerr) } } @@ -571,7 +634,7 @@ func (c *sessionsClient) SaveSignerSignatures2(ctx context.Context, wallet strin if resp != nil { cerr := resp.Body.Close() if err == nil && cerr != nil { - err = ErrWebrpcRequestFailed.WithCause(fmt.Errorf("failed to close response body: %w", cerr)) + err = ErrWebrpcRequestFailed.WithCausef("failed to close response body: %w", cerr) } } @@ -595,7 +658,7 @@ func (c *sessionsClient) SaveMigration(ctx context.Context, wallet string, fromV if resp != nil { cerr := resp.Body.Close() if err == nil && cerr != nil { - err = ErrWebrpcRequestFailed.WithCause(fmt.Errorf("failed to close response body: %w", cerr)) + err = ErrWebrpcRequestFailed.WithCausef("failed to close response body: %w", cerr) } } @@ -632,6 +695,7 @@ func newRequest(ctx context.Context, url string, reqBody io.Reader, contentType } req.Header.Set("Accept", contentType) req.Header.Set("Content-Type", contentType) + req.Header.Set(WebrpcHeader, WebrpcHeaderValue) if headers, ok := HTTPRequestHeaders(ctx); ok { for k := range headers { for _, v := range headers[k] { @@ -646,15 +710,15 @@ func newRequest(ctx context.Context, url string, reqBody io.Reader, contentType func doHTTPRequest(ctx context.Context, client HTTPClient, url string, in, out interface{}) (*http.Response, error) { reqBody, err := json.Marshal(in) if err != nil { - return nil, ErrWebrpcRequestFailed.WithCause(fmt.Errorf("failed to marshal JSON body: %w", err)) + return nil, ErrWebrpcRequestFailed.WithCausef("failed to marshal JSON body: %w", err) } if err = ctx.Err(); err != nil { - return nil, ErrWebrpcRequestFailed.WithCause(fmt.Errorf("aborted because context was done: %w", err)) + return nil, ErrWebrpcRequestFailed.WithCausef("aborted because context was done: %w", err) } req, err := newRequest(ctx, url, bytes.NewBuffer(reqBody), "application/json") if err != nil { - return nil, ErrWebrpcRequestFailed.WithCause(fmt.Errorf("could not build request: %w", err)) + return nil, ErrWebrpcRequestFailed.WithCausef("could not build request: %w", err) } resp, err := client.Do(req) @@ -665,12 +729,12 @@ func doHTTPRequest(ctx context.Context, client HTTPClient, url string, in, out i if resp.StatusCode != 200 { respBody, err := io.ReadAll(resp.Body) if err != nil { - return nil, ErrWebrpcBadResponse.WithCause(fmt.Errorf("failed to read server error response body: %w", err)) + return nil, ErrWebrpcBadResponse.WithCausef("failed to read server error response body: %w", err) } var rpcErr WebRPCError if err := json.Unmarshal(respBody, &rpcErr); err != nil { - return nil, ErrWebrpcBadResponse.WithCause(fmt.Errorf("failed to unmarshal server error: %w", err)) + return nil, ErrWebrpcBadResponse.WithCausef("failed to unmarshal server error: %w", err) } if rpcErr.Cause != "" { rpcErr.cause = errors.New(rpcErr.Cause) @@ -681,12 +745,12 @@ func doHTTPRequest(ctx context.Context, client HTTPClient, url string, in, out i if out != nil { respBody, err := io.ReadAll(resp.Body) if err != nil { - return nil, ErrWebrpcBadResponse.WithCause(fmt.Errorf("failed to read response body: %w", err)) + return nil, ErrWebrpcBadResponse.WithCausef("failed to read response body: %w", err) } err = json.Unmarshal(respBody, &out) if err != nil { - return nil, ErrWebrpcBadResponse.WithCause(fmt.Errorf("failed to unmarshal JSON response body: %w", err)) + return nil, ErrWebrpcBadResponse.WithCausef("failed to unmarshal JSON response body: %w", err) } } diff --git a/vendor/github.com/go-chi/traceid/middleware.go b/vendor/github.com/go-chi/traceid/middleware.go index 844e02ff..6d9bb05b 100644 --- a/vendor/github.com/go-chi/traceid/middleware.go +++ b/vendor/github.com/go-chi/traceid/middleware.go @@ -18,6 +18,7 @@ func Middleware(next http.Handler) http.Handler { ctx = context.WithValue(ctx, ctxKey{}, traceID) w.Header().Set(Header, traceID) + next.ServeHTTP(w, r.WithContext(ctx)) }) } diff --git a/vendor/modules.txt b/vendor/modules.txt index 5b1bf3f6..836d26a6 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -41,7 +41,7 @@ github.com/0xsequence/ethkit/util # github.com/0xsequence/go-ethauth v0.14.0 ## explicit; go 1.22 github.com/0xsequence/go-ethauth -# github.com/0xsequence/go-sequence v0.44.2 +# github.com/0xsequence/go-sequence v0.46.0 ## explicit; go 1.22.0 github.com/0xsequence/go-sequence github.com/0xsequence/go-sequence/contracts