Skip to content

Commit b5bcd75

Browse files
committed
Keep vault commands SDK-compatible
1 parent 3bfffe4 commit b5bcd75

4 files changed

Lines changed: 39 additions & 24 deletions

File tree

‎cmd/vaults.go‎

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
"github.com/kernel/cli/pkg/util"
1414
kernel "github.com/kernel/kernel-go-sdk"
1515
"github.com/kernel/kernel-go-sdk/option"
16-
"github.com/kernel/kernel-go-sdk/packages/param"
1716
"github.com/pterm/pterm"
1817
)
1918

@@ -143,7 +142,7 @@ func (c VaultsCmd) ListItems(ctx context.Context, vault, output string) error {
143142
if err != nil {
144143
return err
145144
}
146-
rows = append(rows, []string{item.Key, item.Type, item.Spec.Provider, item.State.Status, util.OrDash(actions.RequiredAction), item.Description})
145+
rows = append(rows, []string{item.Key, item.Type, item.Spec.Provider, item.State.Status, util.OrDash(actions.RequiredAction), vaultItemDescription(&item)})
147146
}
148147
PrintTableNoPad(rows, true)
149148
return nil
@@ -197,14 +196,16 @@ func (c VaultsCmd) SaveCard(ctx context.Context, vault, key string, spec kernel.
197196
}
198197

199198
func (c VaultsCmd) CreatePaymentToken(ctx context.Context, vault, key string, spec map[string]json.RawMessage, output string) error {
200-
body := map[string]any{"type": "payment_token", "spec": spec}
201-
params := param.Override[kernel.VaultItemUpsertParams](body)
202-
params.IDOrName = vault
203-
item, err := c.vaults.Items.Upsert(ctx, key, params, option.WithMaxRetries(0))
199+
body, err := json.Marshal(map[string]any{"type": "payment_token", "spec": spec})
200+
if err != nil {
201+
return err
202+
}
203+
var item kernel.VaultItemUnion
204+
_, err = c.vaults.Items.Upsert(ctx, key, kernel.VaultItemUpsertParams{IDOrName: vault}, option.WithRequestBody("application/json", body), option.WithResponseBodyInto(&item), option.WithMaxRetries(0))
204205
if err != nil {
205206
return vaultPaymentTokenError(err)
206207
}
207-
return c.showItem(item, output, false)
208+
return c.showItem(&item, output, false)
208209
}
209210

210211
func (c VaultsCmd) Invoke(ctx context.Context, vault, key, operation string, spec map[string]json.RawMessage, output string) error {
@@ -240,8 +241,12 @@ func (c VaultsCmd) Invoke(ctx context.Context, vault, key, operation string, spe
240241
for name, value := range spec {
241242
body[name] = value
242243
}
243-
params := kernel.VaultItemPerformOperationParams{IDOrName: vault, FillVaultItemOperationRequest: param.Override[kernel.FillVaultItemOperationRequestParam](body)}
244-
result, err := c.vaults.Items.PerformOperation(ctx, key, params, option.WithMaxRetries(0))
244+
encoded, err := json.Marshal(body)
245+
if err != nil {
246+
return err
247+
}
248+
var result vaultFillOperationResult
249+
_, err = c.vaults.Items.PerformOperation(ctx, key, kernel.VaultItemPerformOperationParams{IDOrName: vault, Type: kernel.VaultItemPerformOperationParamsType("fill")}, option.WithRequestBody("application/json", encoded), option.WithResponseBodyInto(&result), option.WithMaxRetries(0))
245250
if err != nil {
246251
return util.CleanedUpSdkError{Err: err}
247252
}

‎cmd/vaults_output.go‎

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,18 @@ var vaultItemFields = vaultOutputFields{
5656
"authorization": vaultFieldsOf("id status psp merchant amount amount_cents currency created_at expires_at approval_url browser_id reason psp_error_code expected_cents actual_cents amount_authority amount_verified charged_amount_cents charged_currency charged_kind replay_attempted replay_status replay_delivered"),
5757
},
5858
}
59+
60+
type vaultFillOperationResult struct {
61+
Type string `json:"type"`
62+
Status string `json:"status"`
63+
Instruction string `json:"instruction,omitempty"`
64+
Fields []struct {
65+
Index int `json:"index"`
66+
Status string `json:"status"`
67+
ErrorCode string `json:"error_code,omitempty"`
68+
} `json:"fields"`
69+
}
70+
5971
var vaultFillResultFields = vaultOutputFields{
6072
"type": nil, "status": nil, "instruction": nil,
6173
"fields": vaultFieldsOf("index status error_code"),
@@ -155,15 +167,7 @@ func printVaultOperationResult(value any, output string) error {
155167
if output == "json" {
156168
return printVaultJSON(filtered)
157169
}
158-
var result struct {
159-
Status string `json:"status"`
160-
Instruction string `json:"instruction"`
161-
Fields []struct {
162-
Index int `json:"index"`
163-
Status string `json:"status"`
164-
ErrorCode string `json:"error_code"`
165-
} `json:"fields"`
166-
}
170+
var result vaultFillOperationResult
167171
if json.Unmarshal(filtered, &result) != nil || result.Status == "" {
168172
return fmt.Errorf("invalid vault operation response")
169173
}
@@ -243,6 +247,14 @@ func printVaultOperationHints(item *kernel.VaultItemUnion, vault, key, project s
243247
return nil
244248
}
245249

250+
func vaultItemDescription(item *kernel.VaultItemUnion) string {
251+
var value struct {
252+
Description string `json:"description"`
253+
}
254+
_ = json.Unmarshal([]byte(item.RawJSON()), &value)
255+
return value.Description
256+
}
257+
246258
func printVaultItem(item *kernel.VaultItemUnion, output string) error {
247259
raw, err := filterVaultJSON(json.RawMessage(item.RawJSON()), vaultItemFields)
248260
if err != nil {
@@ -264,8 +276,8 @@ func printVaultItem(item *kernel.VaultItemUnion, output string) error {
264276
{"Property", "Value"}, {"Key (immutable)", item.Key}, {"ID", item.ID},
265277
{"Type", item.Type}, {"Provider", item.Spec.Provider}, {"Status", item.State.Status},
266278
}
267-
if item.Description != "" {
268-
rows = append(rows, []string{"Description", item.Description})
279+
if description := vaultItemDescription(item); description != "" {
280+
rows = append(rows, []string{"Description", description})
269281
}
270282
if item.Type == "wallet" {
271283
configID, configName := item.Spec.ProviderConfig.ID, item.Spec.ProviderConfig.Name

‎go.mod‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,5 +60,3 @@ require (
6060
golang.org/x/text v0.37.0 // indirect
6161
gopkg.in/yaml.v3 v3.0.1 // indirect
6262
)
63-
64-
replace github.com/kernel/kernel-go-sdk => github.com/kernel/kernel-go-sdk-staging v0.86.1-0.20260912024014-71e3619e5ec4

‎go.sum‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2
6464
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
6565
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
6666
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
67-
github.com/kernel/kernel-go-sdk-staging v0.86.1-0.20260912024014-71e3619e5ec4 h1:3GFBNBm1GBZxH2ig2TGnNNRHTbcaJU5jkXfa0/S+Mp0=
68-
github.com/kernel/kernel-go-sdk-staging v0.86.1-0.20260912024014-71e3619e5ec4/go.mod h1:EeZzSuHZVeHKxKCPUzxou2bovNGhXaz0RXrSqKNf1AQ=
67+
github.com/kernel/kernel-go-sdk v0.101.0 h1:1Fj1kWosiWOH2C+P1/DspUl+2i0nR4tlvr37HRnndFY=
68+
github.com/kernel/kernel-go-sdk v0.101.0/go.mod h1:EeZzSuHZVeHKxKCPUzxou2bovNGhXaz0RXrSqKNf1AQ=
6969
github.com/klauspost/compress v1.18.5 h1:/h1gH5Ce+VWNLSWqPzOVn6XBO+vJbCNGvjoaGBFW2IE=
7070
github.com/klauspost/compress v1.18.5/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
7171
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=

0 commit comments

Comments
 (0)