Skip to content

Commit

Permalink
Use context in remote client calls
Browse files Browse the repository at this point in the history
  • Loading branch information
sequel21 committed Nov 22, 2024
1 parent 7cd15d2 commit c14ef8b
Show file tree
Hide file tree
Showing 24 changed files with 102 additions and 94 deletions.
2 changes: 1 addition & 1 deletion cmd/lockerd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ func RunServer(c *cli.Context) error {
return err
}

if err = srv.InitStandardRoutes(cfg); err != nil {
if err = srv.InitStandardRoutes(c.Context, cfg); err != nil {
return err
}

Expand Down
6 changes: 3 additions & 3 deletions cmd/metalo/actions/accounts.go
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ func CreateLocker(c *cli.Context) error {

mlc := CreateHTTPCaller(c)

controls, err := mlc.GetServerControls()
controls, err := mlc.GetServerControls(c.Context)
if err != nil {
return err
}
Expand Down Expand Up @@ -517,7 +517,7 @@ func RecoverAccount(c *cli.Context) error {
return err
}

acct, err := mlc.RecoverAccount(userID, privKey, recoveryCode, newPassphrase)
acct, err := mlc.RecoverAccount(c.Context, userID, privKey, recoveryCode, newPassphrase)
if err != nil {
log.Err(err).Msg("Failed to recover account")
return fmt.Errorf("failed to recover account: %w", err)
Expand Down Expand Up @@ -587,7 +587,7 @@ func RecoverAccountSecondLevel(c *cli.Context) error {

privKey := ed25519.PrivateKey(pkBytes)

acct, err := mlc.RecoverAccount(userID, privKey, recoveryCode, newPassphrase)
acct, err := mlc.RecoverAccount(c.Context, userID, privKey, recoveryCode, newPassphrase)
if err != nil {
log.Err(err).Msg("Failed to recover account")
return fmt.Errorf("failed to recover account: %w", err)
Expand Down
4 changes: 2 additions & 2 deletions cmd/metalo/actions/admin.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ func ImportAccounts(c *cli.Context) error {
return cli.Exit("connection to MetaLocker failed", OperationFailed)
}

err = operations.ImportAccounts(mlc, c.Args().Get(0))
err = operations.ImportAccounts(c.Context, mlc, c.Args().Get(0))
if err != nil {
log.Err(err).Msg("Accounts import failed")
return cli.Exit(err, OperationFailed)
Expand Down Expand Up @@ -88,7 +88,7 @@ func UpdateAccountState(c *cli.Context) error {
return cli.Exit("connection to MetaLocker failed", OperationFailed)
}

err = operations.UpdateAccountState(mlc, c.Args().Get(0), targetState)
err = operations.UpdateAccountState(c.Context, mlc, c.Args().Get(0), targetState)
if err != nil {
log.Err(err).Msg("Account state update failed")
return cli.Exit(err, OperationFailed)
Expand Down
6 changes: 4 additions & 2 deletions cmd/metalo/operations/account_state.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,14 @@
package operations

import (
"context"

"github.com/piprate/metalocker/remote/caller"
)

func UpdateAccountState(mlc *caller.MetaLockerHTTPCaller, acctID, targetState string) error {
func UpdateAccountState(ctx context.Context, mlc *caller.MetaLockerHTTPCaller, acctID, targetState string) error {

err := mlc.AdminPatchAccount(acctID, caller.AccountAdminPatch{
err := mlc.AdminPatchAccount(ctx, acctID, caller.AccountAdminPatch{
State: targetState,
})
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion cmd/metalo/operations/export_accounts.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func ExportAccounts(ctx context.Context, mlc *caller.MetaLockerHTTPCaller, dest

// export accounts

acctList, err := mlc.AdminGetAccountList()
acctList, err := mlc.AdminGetAccountList(ctx)
if err != nil {
return err
}
Expand Down
7 changes: 4 additions & 3 deletions cmd/metalo/operations/import_accounts.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
package operations

import (
"context"
"os"
"path/filepath"

Expand All @@ -25,7 +26,7 @@ import (
"github.com/rs/zerolog/log"
)

func ImportAccounts(mlc *caller.MetaLockerHTTPCaller, srcPath string) error {
func ImportAccounts(ctx context.Context, mlc *caller.MetaLockerHTTPCaller, srcPath string) error {
log.Info().Str("dest", srcPath).Msg("Importing account database")

// import accounts
Expand All @@ -44,7 +45,7 @@ func ImportAccounts(mlc *caller.MetaLockerHTTPCaller, srcPath string) error {
var accountsCount int64

for _, acct := range acctList {
err := mlc.AdminStoreAccount(acct)
err := mlc.AdminStoreAccount(ctx, acct)
if err != nil {
log.Err(err).Msg("Error when importing account")
//return nil, err
Expand All @@ -69,7 +70,7 @@ func ImportAccounts(mlc *caller.MetaLockerHTTPCaller, srcPath string) error {
var identitiesCount int64

for _, iid := range iidList {
err := mlc.AdminStoreIdentity(iid)
err := mlc.AdminStoreIdentity(ctx, iid)
if err != nil {
log.Err(err).Msg("Error when importing identity")
//return nil, err
Expand Down
4 changes: 2 additions & 2 deletions examples/demoserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ fAX1YBBXUb3XGJNZlQIDAQAB
return nil, "", err
}

if err := srv.InitStandardRoutes(cfg); err != nil {
if err := srv.InitStandardRoutes(ctx, cfg); err != nil {
return nil, "", err
}

Expand Down Expand Up @@ -117,7 +117,7 @@ func waitUntilDemoServerIsUp(url string) {

retries := 0
for retries < 10 {
_, err = httpCaller.GetServerControls()
_, err = httpCaller.GetServerControls(context.Background())
if err == nil {
return
}
Expand Down
2 changes: 1 addition & 1 deletion model/storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ type (
SendBlob(ctx context.Context, data io.Reader, cleartext bool, vaultID string) (*StoredResource, error)
PurgeBlob(ctx context.Context, res *StoredResource) error

GetVaultMap() (map[string]*VaultProperties, error)
GetVaultMap(ctx context.Context) (map[string]*VaultProperties, error)
}
)

Expand Down
4 changes: 2 additions & 2 deletions node/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ func (mls *MetaLockerServer) InitAuthentication(ctx context.Context, cfg *koanf.
return nil
}

func (mls *MetaLockerServer) InitStandardRoutes(cfg *koanf.Koanf) error {
func (mls *MetaLockerServer) InitStandardRoutes(ctx context.Context, cfg *koanf.Koanf) error {
r := mls.Router

if cfg.Exists("administration") {
Expand Down Expand Up @@ -229,7 +229,7 @@ func (mls *MetaLockerServer) InitStandardRoutes(cfg *koanf.Koanf) error {
vaultGrp.Use(mls.Level2AuthFn)
vaultGrp.Use(apibase.ContextLoggerHandler)

vaultapi.InitRoutes(vaultGrp, mls.BlobManager)
vaultapi.InitRoutes(ctx, vaultGrp, mls.BlobManager)

// serve JSON-LD contexts which are compatible with the current MetaLocker implementation.
// This includes third-party contexts to avoid unexpected changes and round-trips over network.
Expand Down
5 changes: 3 additions & 2 deletions node/vaultapi/routes.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,13 @@
package vaultapi

import (
"context"
"github.com/gin-gonic/gin"
"github.com/piprate/metalocker/vaults"
)

func InitRoutes(vaultGrp *gin.RouterGroup, lbm *vaults.LocalBlobManager) {
vaultMap, _ := lbm.GetVaultMap()
func InitRoutes(ctx context.Context, vaultGrp *gin.RouterGroup, lbm *vaults.LocalBlobManager) {
vaultMap, _ := lbm.GetVaultMap(ctx)
for _, prop := range vaultMap {
vault, err := lbm.GetVault(prop.ID)
if err != nil {
Expand Down
40 changes: 20 additions & 20 deletions remote/caller/accounts.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,26 +29,26 @@ import (
"github.com/rs/zerolog/log"
)

func (c *MetaLockerHTTPCaller) AdminGetAccountList() ([]account.Account, error) {
func (c *MetaLockerHTTPCaller) AdminGetAccountList(ctx context.Context) ([]account.Account, error) {
if !c.client.IsAuthenticated() {
return nil, errors.New("you need to log in before performing any operations")
}

var acctList []account.Account
err := c.client.LoadContents(http.MethodGet, "/v1/admin/account", nil, &acctList)
err := c.client.LoadContents(ctx, http.MethodGet, "/v1/admin/account", nil, &acctList)
if err != nil {
return nil, err
}

return acctList, nil
}

func (c *MetaLockerHTTPCaller) AdminStoreAccount(acc *account.Account) error {
func (c *MetaLockerHTTPCaller) AdminStoreAccount(ctx context.Context, acc *account.Account) error {
if !c.client.IsAuthenticated() {
return errors.New("you need to log in before performing any operations")
}

res, err := c.client.SendRequest(http.MethodPost, "/v1/admin/account", httpsecure.WithJSONBody(acc))
res, err := c.client.SendRequest(ctx, http.MethodPost, "/v1/admin/account", httpsecure.WithJSONBody(acc))
if err != nil {
return err
}
Expand All @@ -71,13 +71,13 @@ type AccountAdminPatch struct {
State string `json:"state,omitempty"`
}

func (c *MetaLockerHTTPCaller) AdminPatchAccount(id string, patch AccountAdminPatch) error {
func (c *MetaLockerHTTPCaller) AdminPatchAccount(ctx context.Context, id string, patch AccountAdminPatch) error {
if !c.client.IsAuthenticated() {
return errors.New("you need to log in before performing any operations")
}

url := fmt.Sprintf("/v1/admin/account/%s", id)
res, err := c.client.SendRequest(http.MethodPatch, url, httpsecure.WithJSONBody(patch))
res, err := c.client.SendRequest(ctx, http.MethodPatch, url, httpsecure.WithJSONBody(patch))
if err != nil {
return err
}
Expand All @@ -102,7 +102,7 @@ func (c *MetaLockerHTTPCaller) GetOwnAccount(ctx context.Context) (*account.Acco
}

var acct account.Account
err := c.client.LoadContents(http.MethodGet, "/v1/account", nil, &acct)
err := c.client.LoadContents(ctx, http.MethodGet, "/v1/account", nil, &acct)
if err != nil {
return nil, err
}
Expand All @@ -116,7 +116,7 @@ func (c *MetaLockerHTTPCaller) GetAccount(ctx context.Context, id string) (*acco
}

var acct account.Account
err := c.client.LoadContents(http.MethodGet, "/v1/account/"+id, nil, &acct)
err := c.client.LoadContents(ctx, http.MethodGet, "/v1/account/"+id, nil, &acct)
if err != nil {
return nil, err
}
Expand All @@ -129,7 +129,7 @@ func (c *MetaLockerHTTPCaller) UpdateAccount(ctx context.Context, acc *account.A
return errors.New("you need to log in before performing any operations")
}

res, err := c.client.SendRequest(http.MethodPut, "/v1/account", httpsecure.WithJSONBody(acc))
res, err := c.client.SendRequest(ctx, http.MethodPut, "/v1/account", httpsecure.WithJSONBody(acc))
if err != nil {
return err
}
Expand Down Expand Up @@ -161,7 +161,7 @@ func (c *MetaLockerHTTPCaller) PatchAccount(ctx context.Context, email, oldEncry
FamilyName: familyName,
}

res, err := c.client.SendRequest(http.MethodPatch, "/v1/account", httpsecure.WithJSONBody(patch))
res, err := c.client.SendRequest(ctx, http.MethodPatch, "/v1/account", httpsecure.WithJSONBody(patch))
if err != nil {
return err
}
Expand All @@ -186,7 +186,7 @@ func (c *MetaLockerHTTPCaller) DeleteAccount(ctx context.Context, id string) err

url := fmt.Sprintf("/v1/account/%s", id)

res, err := c.client.SendRequest(http.MethodDelete, url)
res, err := c.client.SendRequest(ctx, http.MethodDelete, url)
if err != nil {
return err
}
Expand All @@ -206,7 +206,7 @@ func (c *MetaLockerHTTPCaller) DeleteAccount(ctx context.Context, id string) err

func (c *MetaLockerHTTPCaller) GetAccountRecoveryCode(ctx context.Context, username string) (string, error) {
url := fmt.Sprintf("/v1/recovery-code?email=%s", username)
res, err := c.client.SendRequest(http.MethodGet, url, httpsecure.SkipAuthentication())
res, err := c.client.SendRequest(ctx, http.MethodGet, url, httpsecure.SkipAuthentication())
if err != nil {
return "", err
}
Expand All @@ -228,11 +228,11 @@ func (c *MetaLockerHTTPCaller) GetAccountRecoveryCode(ctx context.Context, usern
return rsp.Code, nil
}

func (c *MetaLockerHTTPCaller) RecoverAccount(userID string, privKey ed25519.PrivateKey, recoveryCode, newPassphrase string) (*account.Account, error) {
func (c *MetaLockerHTTPCaller) RecoverAccount(ctx context.Context, userID string, privKey ed25519.PrivateKey, recoveryCode, newPassphrase string) (*account.Account, error) {

req := account.BuildRecoveryRequest(userID, recoveryCode, privKey, newPassphrase, nil)

res, err := c.client.SendRequest(http.MethodPost, "/v1/recover-account",
res, err := c.client.SendRequest(ctx, http.MethodPost, "/v1/recover-account",
httpsecure.WithJSONBody(req),
httpsecure.SkipAuthentication())
if err != nil {
Expand Down Expand Up @@ -261,7 +261,7 @@ func (c *MetaLockerHTTPCaller) CreateSubAccount(ctx context.Context, acct *accou
return nil, errors.New("you need to log in before performing any operations")
}

res, err := c.client.SendRequest(http.MethodPost, "/v1/account", httpsecure.WithJSONBody(acct))
res, err := c.client.SendRequest(ctx, http.MethodPost, "/v1/account", httpsecure.WithJSONBody(acct))
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -289,7 +289,7 @@ func (c *MetaLockerHTTPCaller) ListSubAccounts(ctx context.Context, id string) (
}

var acctList []*account.Account
err := c.client.LoadContents(http.MethodGet, "/v1/account/"+id+"/children", nil, &acctList)
err := c.client.LoadContents(ctx, http.MethodGet, "/v1/account/"+id+"/children", nil, &acctList)
if err != nil {
return nil, err
}
Expand All @@ -303,7 +303,7 @@ func (c *MetaLockerHTTPCaller) CreateAccessKey(ctx context.Context, key *model.A
}

url := "/v1/account/" + c.currentAccountID + "/access-key"
res, err := c.client.SendRequest(http.MethodPost, url, httpsecure.WithJSONBody(key))
res, err := c.client.SendRequest(ctx, http.MethodPost, url, httpsecure.WithJSONBody(key))
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -332,7 +332,7 @@ func (c *MetaLockerHTTPCaller) DeleteAccessKey(ctx context.Context, keyID string
}

url := "/v1/account/" + c.currentAccountID + "/access-key/" + keyID
res, err := c.client.SendRequest(http.MethodDelete, url)
res, err := c.client.SendRequest(ctx, http.MethodDelete, url)
if err != nil {
return err
}
Expand All @@ -357,7 +357,7 @@ func (c *MetaLockerHTTPCaller) GetAccessKey(ctx context.Context, keyID string) (

var key model.AccessKey
url := "/v1/account/" + c.currentAccountID + "/access-key/" + keyID
err := c.client.LoadContents(http.MethodGet, url, nil, &key)
err := c.client.LoadContents(ctx, http.MethodGet, url, nil, &key)
if err != nil {
return nil, err
}
Expand All @@ -372,7 +372,7 @@ func (c *MetaLockerHTTPCaller) ListAccessKeys(ctx context.Context) ([]*model.Acc

var keyList []*model.AccessKey
url := "/v1/account/" + c.currentAccountID + "/access-key"
err := c.client.LoadContents(http.MethodGet, url, nil, &keyList)
err := c.client.LoadContents(ctx, http.MethodGet, url, nil, &keyList)
if err != nil {
return nil, err
}
Expand Down
Loading

0 comments on commit c14ef8b

Please sign in to comment.