From 41ef4dee3ee80fdcd8391f8fb929d938942fa235 Mon Sep 17 00:00:00 2001 From: vacwmX Date: Thu, 18 Jan 2024 09:45:25 +0100 Subject: [PATCH 1/5] feat: adding docs for payment metadata fix: fixing language typos --- snippets/csharp/Metadata.cs | 78 +++++ snippets/dart_snippets/lib/metadata.dart | 51 +++ snippets/go/metadata.go | 73 ++++ .../com/example/kotlinmpplib/Metadata.kt | 57 +++ snippets/python/src/metadata.py | 64 ++++ snippets/react-native/metadata.ts | 66 ++++ snippets/rust/src/metadata.rs | 73 ++++ .../BreezSDKExamples/Sources/Metadata.swift | 62 ++++ src/guide/payment_metadata.md | 326 ++++++++++++++++++ 9 files changed, 850 insertions(+) create mode 100644 snippets/csharp/Metadata.cs create mode 100644 snippets/dart_snippets/lib/metadata.dart create mode 100644 snippets/go/metadata.go create mode 100644 snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Metadata.kt create mode 100644 snippets/python/src/metadata.py create mode 100644 snippets/react-native/metadata.ts create mode 100644 snippets/rust/src/metadata.rs create mode 100644 snippets/swift/BreezSDKExamples/Sources/Metadata.swift create mode 100644 src/guide/payment_metadata.md diff --git a/snippets/csharp/Metadata.cs b/snippets/csharp/Metadata.cs new file mode 100644 index 00000000..000b2f86 --- /dev/null +++ b/snippets/csharp/Metadata.cs @@ -0,0 +1,78 @@ +using Breez.Sdk; +using System.Text.Json; + +public class ServiceStatusSnippets +{ + public void SetPaymentMetadata(BlockingBreezServices sdk) + { + // ANCHOR: set-payment-metadata + sdk.SetPaymentMetadata("target-payment-hash", "{\"myCustomValue\":true}"); + // ANCHOR_END: set-payment-metadata + } + + public void FilterPaymentMetadata(BlockingBreezServices sdk) + { + // ANCHOR: filter-payment-metadata + try + { + MetadataFilter[] metadataFilters = { + new MetadataFilter( + jsonPath: "myCustomValue", + jsonValue: "true", + ), + }; + + var payments = ListPayments( + new ListPaymentsRequest( + metadataFilters: metadataFilters, + ) + ); + } + catch (Exception) + { + // Handle error + } + // ANCHOR_END: filter-payment-metadata + } + + public void FilterPaymentMetadataString(BlockingBreezServices sdk) + { + // ANCHOR: filter-payment-metadata-string + MetadataFilter[] metadataFilters = { + new MetadataFilter( + jsonPath: "customerName", + jsonValue: "\"Satoshi Nakamoto\"", + ), + new MetadataFilter( + jsonPath: "customerName", + jsonValue: JsonSerializer.Serialize("Satoshi Nakamoto"), + ), + }; + // ANCHOR_END: filter-payment-metadata-string + } + + public void FilterPaymentMetadataObject(BlockingBreezServices sdk) + { + // ANCHOR: filter-payment-metadata-object + // This will *NOT* work + MetadataFilter[] metadataFilters = { + new MetadataFilter( + jsonPath: "parent.nestedArray", + jsonValue: "[1, 2, 3]", + ), + }; + + // This will work + MetadataFilter[] metadataFilters = { + new MetadataFilter( + jsonPath: "parent.nestedArray", + jsonValue: "[1,2,3]", + ), + new MetadataFilter( + jsonPath: "parent.nestedArray", + jsonValue: JsonSerializer.Serialize(new int[] {1, 2, 3}), + ), + }; + // ANCHOR_END: filter-payment-metadata-object + } +} diff --git a/snippets/dart_snippets/lib/metadata.dart b/snippets/dart_snippets/lib/metadata.dart new file mode 100644 index 00000000..33f07490 --- /dev/null +++ b/snippets/dart_snippets/lib/metadata.dart @@ -0,0 +1,51 @@ +import 'package:breez_sdk/breez_sdk.dart'; + +Future setPaymentMetadata({required String paymentHash, required String metadata}) async { + // ANCHOR: set-payment-metadata + await BreezSDK().setPaymentMetadata(hash: "target-payment-hash", metadata: '{"myCustomValue":true}'); + // ANCHOR_END: set-payment-metadata +} + +Future filterPaymentMetadata() async { + // ANCHOR: filter-payment-metadata + List metadataFilters = [ + MetadataFilter( + jsonPath: "myCustomValue", + jsonValue: "true", + ), + ]; + + await BreezSDK().listPayments(ListPaymentsRequest( + metadataFilters: metadataFilters + )).catchError((_err) { + // handle error + }); + // ANCHOR_END: filter-payment-metadata + + // ANCHOR: filter-payment-metadata-string + List metadataFilters = [ + MetadataFilter( + jsonPath: "customerName", + jsonValue: '"Satoshi Nakamoto"', + ), + ]; + // ANCHOR_END: filter-payment-metadata-string + + // ANCHOR: filter-payment-metadata-object + // This will *NOT* work + List metadataFilters = [ + MetadataFilter( + jsonPath: "parent.nestedArray", + jsonValue: "[1, 2, 3]", + ), + ]; + + // This will work + List metadataFilters = [ + MetadataFilter( + jsonPath: "parent.nestedArray", + jsonValue: "[1,2,3]", + ), + ]; + // ANCHOR_END: filter-payment-metadata-object +} diff --git a/snippets/go/metadata.go b/snippets/go/metadata.go new file mode 100644 index 00000000..35c4d56f --- /dev/null +++ b/snippets/go/metadata.go @@ -0,0 +1,73 @@ +package example + +import ( + "encoding/json" + "log" + + "github.com/breez/breez-sdk-go/breez_sdk" +) + +func SetPaymentMetadata() { + // ANCHOR: set-payment-metadata + sdk.SetPaymentMetadata("target-payment-hash", `{"myCustomValue":true}`) + // ANCHOR_END: set-payment-metadata +} + +func FilterPaymentMetadata() { + // ANCHOR: filter-payment-metadata + metadataFilters := []breez_sdk.PaymentMetadata { + { JsonPath: "myCustomValue", JsonValue: "true" }, + } + + payments, err := sdk.ListPayments(breez_sdk.ListPaymentsRequest{ + MetadataFilters: &metadataFilters, + }); + + if err != nil { + // handle error + } + // ANCHOR_END: filter-payment-metadata + log.Printf("%#v", payments) +} + + +func FilterPaymentMetadataString() { + // ANCHOR: filter-payment-metadata-string + metadataFilters := []breez_sdk.PaymentMetadata { + { JsonPath: "customerName", JsonValue: "\"Satoshi Nakamoto\"" }, + } + + jsonValue, _ := json.Marshal("Satoshi Nakamoto") + metadataFilters = []breez_sdk.PaymentMetadata { + { + JsonPath: "customerName", + JsonValue: string(jsonValue), + }, + } + // ANCHOR_END: filter-payment-metadata-string + + sdk.ListPayments(breez_sdk.ListPaymentsRequest{ + MetadataFilters: &metadataFilters, + }) +} + +func FilterPaymentMetadataObject() { + // ANCHOR: filter-payment-metadata-object + // This will *NOT* work + metadataFilters := []breez_sdk.PaymentMetadata { + { JsonPath: "parent.nestedArray", JsonValue: "[1, 2, 3]" }, + } + + // This will work + jsonValue, _ := json.Marshal([]int{1, 2, 3}) + + metadataFilters = []breez_sdk.PaymentMetadata { + { JsonPath: "parent.nestedArray", JsonValue: "[1,2,3]" }, + { JsonPath: "parent.nestedArray", JsonValue: string(jsonValue) }, + } + // ANCHOR_END: filter-payment-metadata-object + + sdk.ListPayments(breez_sdk.ListPaymentsRequest{ + MetadataFilters: &metadataFilters, + }) +} diff --git a/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Metadata.kt b/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Metadata.kt new file mode 100644 index 00000000..6086a56e --- /dev/null +++ b/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Metadata.kt @@ -0,0 +1,57 @@ +package com.example.kotlinmpplib + +import breez_sdk.* +class Metadata { + fun SetPaymentMetadata(sdk: BlockingBreezServices) { + // ANCHOR: set-payment-metadata + try { + sdk.setPaymentMetadata("target-payment-hash", """{"myCustomValue":true}""") + } catch (e: Exception) { + // Handle error + } + // ANCHOR_END: set-payment-metadata + } + + fun FilterPaymentMetadata(sdk: BlockingBreezServices) { + // ANCHOR: filter-payment-metadata + val metadataFilters = listOf(MetadataFilter( + jsonPath = "myCustomValue", + jsonValue = "true" + )) + + try { + sdk.listPayments( + ListPaymentsRequest( + metadataFilters = metadataFilters + )) + } catch (e: Exception) { + // handle error + } + // ANCHOR_END: filter-payment-metadata + } + + fun FilterPaymentMetadataString(sdk: BlockingBreezServices) { + // ANCHOR: filter-payment-metadata-string + val metadataFilters = listOf(MetadataFilter( + jsonPath = "customerName", + jsonValue = "\"Satoshi Nakamoto\"" + )) + // ANCHOR_END: filter-payment-metadata-string + } + + fun FilterPaymentMetadataObject(sdk: BlockingBreezServices) { + // ANCHOR: filter-payment-metadata-object + // This will *NOT* work + val _metadataFilters = listOf(MetadataFilter( + jsonPath = "parent.nestedArray", + jsonValue = "[1, 2, 3]" + )) + + // This will work + val metadataFilters = listOf(MetadataFilter( + jsonPath = "parent.nestedArray", + jsonValue = "[1,2,3]" + )) + // ANCHOR_END: filter-payment-metadata-object + } +} diff --git a/snippets/python/src/metadata.py b/snippets/python/src/metadata.py new file mode 100644 index 00000000..974e575d --- /dev/null +++ b/snippets/python/src/metadata.py @@ -0,0 +1,64 @@ +import breez_sdk + +def set_payment_metadata(sdk_services): + try: + # ANCHOR: set-payment-metadata + sdk_services.set_payment_metadata("target-payment-hash", '{"myCustomValue":true}') + # ANCHOR_END: set-payment-metadata + except Exception as error: + # handle error + raise + +def filter_payment_metadata(sdk_services): + # ANCHOR: filter-payment-metadata + metadata_filters = [ + breez_sdk.MetadataFilter( + json_path: "myCustomValue", + json_value: "true", + ) + ] + + try: + sdk_services.list_payments(breez_sdk.ListPaymentsRequest( + metadata_filters = metadata_filters + )) + except Exception as error: + # handle error + raise + # ANCHOR_END: filter-payment-metadata + + # ANCHOR: filter-payment-metadata-string + metadata_filters = [ + breez_sdk.MetadataFilter( + json_path: "customerName", + json_value: '"true"', + ), + breez_sdk.MetadataFilter( + json_path: "customerName", + json_value: json.dumps("true"), + ) + ] + # ANCHOR_END: filter-payment-metadata-string + + # ANCHOR: filter-payment-metadata-object + # This will *NOT* work + metadata_filters = [ + breez_sdk.MetadataFilter( + json_path: "parent.nestedArray", + json_value: '[1, 2, 3]', + ) + ] + + # This will work + metadata_filters = [ + breez_sdk.MetadataFilter( + json_path: "parent.nestedArray", + json_value: '[1,2,3]', + ), + breez_sdk.MetadataFilter( + json_path: "parent.nestedArray", + json_value: json.dumps([1,2,3], separators=(',', ':')) + ), + + ] + # ANCHOR_END: filter-payment-metadata-object diff --git a/snippets/react-native/metadata.ts b/snippets/react-native/metadata.ts new file mode 100644 index 00000000..4ebac385 --- /dev/null +++ b/snippets/react-native/metadata.ts @@ -0,0 +1,66 @@ +import { setPaymentMetadata, listPayments } from '@breeztech/react-native-breez-sdk' + +const setPaymentMetadata = async () => { + // ANCHOR: set-payment-metadata + await setPaymentMetadata('target-payment-hash', `{"myCustomValue":true}`) + // ANCHOR_END: set-payment-metadata +} + +const filterPaymentMetadata = async () => { + // ANCHOR: filter-payment-metadata + let metadataFilters = [ + { + jsonPath: "myCustomValue", + jsonValue: "true" + } + ] + + try { + await listPayments({ + metadataFilters + }) + } catch(err) { + // handle error + } + // ANCHOR_END: filter-payment-metadata +} + +const filterPaymentMetadataString = async () => { + // ANCHOR: filter-payment-metadata-string + // Note: These are equivalent + const metadataFilters = [ + { + jsonPath: "customerName", + jsonValue: "Satoshi Nakamoto", + }, + { + jsonPath: "customerName", + jsonValue: JSON.stringify("Satoshi Nakamoto"), + }, + ] + // ANCHOR_END: filter-payment-metadata-string +} + +const filterPaymentMetadataObject = async () => { + // ANCHOR: filter-payment-metadata-object + // This will *NOT* work + const _metadataFilters = [ + { + jsonPath: "parent.nestedArray", + jsonValue: "[1, 2, 3]", + }, + ] + + // This will work + const metadataFilters = [ + { + jsonPath: "parent.nestedArray", + jsonValue: "[1,2,3]", + }, + { + jsonPath: "parent.nestedArray", + jsonValue: JSON.stringify([1, 2, 3]), + }, + ] + // ANCHOR_END: filter-payment-metadata-object +} diff --git a/snippets/rust/src/metadata.rs b/snippets/rust/src/metadata.rs new file mode 100644 index 00000000..91a0bcb9 --- /dev/null +++ b/snippets/rust/src/metadata.rs @@ -0,0 +1,73 @@ +use std::sync::Arc; +use anyhow::Result; +use breez_sdk_core::*; + +async fn set_payment_metadata(sdk: Arc) -> Result<()> { + // ANCHOR: set-payment-metadata + sdk.set_payment_metadata("target-payment-hash", r#"{"myCustomValue":true}"#).await?; + // ANCHOR_END: set-payment-metadata + + Ok(()) +} + +async fn filter_payment_metadata(sdk: Arc) -> Result<()> { + // ANCHOR: filter-payment-metadata + let metadata_filters = vec![ + MetadataFilter { + json_path: "myCustomValue".to_string(), + json_value: "true".to_string(), + }, + ]; + + sdk.list_payments(ListPaymentsRequest { + metadata_filters, + ..Default::default(), + }).await?; + // ANCHOR_END: filter-payment-metadata +} + +async fn filter_payment_metadata_string(sdk: Arc) -> Result<()> { + // ANCHOR: filter-payment-metadata-string + // Note: The following are equivalent + let metadata_filters = vec![ + MetadataFilter { + json_path: "customerName".to_string(), + json_value: r#""Satoshi Nakamoto""#.to_string(), + }, + MetadataFilter { + json_path: "customerName".to_string(), + json_value: serde_json::json!("Satoshi Nakamoto").to_string(), + }, + ]; + // ANCHOR_END: filter-payment-metadata-string +} + +async fn filter_payment_metadata_object(sdk: Arc) -> Result<()> { + // ANCHOR: filter-payment-metadata-object + // This will *NOT* work + let metadata_filters = vec![ + MetadataFilter { + json_path: "parent.nestedArray".to_string(), + json_value: r#"[1, 2, 3]"#.to_string(), + }, + ]; + + // This will work + let metadata_filters = vec![ + MetadataFilter { + json_path: "parent.nestedArray".to_string(), + json_value: r#"[1,2,3]"#.to_string(), + }, + ]; + // ANCHOR_END: filter-payment-metadata-object + + // ANCHOR: filter-payment-metadata-object-serde + let metadata_filters = vec![ + MetadataFilter { + json_path: "parent.nestedArray".to_string(), + json_value: serde_json::json!(&[1, 2, 3]).to_string(), + }, + ]; + // ANCHOR_END: filter-payment-metadata-object-serde + Ok(()) +} diff --git a/snippets/swift/BreezSDKExamples/Sources/Metadata.swift b/snippets/swift/BreezSDKExamples/Sources/Metadata.swift new file mode 100644 index 00000000..13c0228c --- /dev/null +++ b/snippets/swift/BreezSDKExamples/Sources/Metadata.swift @@ -0,0 +1,62 @@ +// +// Metadata.swift +// +// +// + +import Foundation +import BreezSDK + +func SetPaymentMetadata(sdk: BlockingBreezServices) throws { + // ANCHOR: set-payment-metadata + try sdk.setPaymentMetadata(hash: "target-payment-hash", metadata: #"{"myCustomValue":true}"#) + // ANCHOR_END: set-payment-metadata +} + +func FilterPaymentMetadata(sdk: BlockingBreezServices) throws { + // ANCHOR: filter-payment-metadata + let metadataFilters = [ + MetadataFilter( + jsonPath: "myCustomValue", + jsonValue: "true", + ), + ] + + try? sdk.listPayments( + req: ListPaymentsRequest( + metadataFilters: metadataFilters + ), + ) + // ANCHOR_END: filter-payment-metadata +} + +func FilterPaymentMetadataString(sdk: BlockingBreezServices) throws { + // ANCHOR: filter-payment-metadata-string + let metadataFilters = [ + MetadataFilter( + jsonPath: "myCustomValue", + jsonValue: #""true""#, + ), + ] + // ANCHOR_END: filter-payment-metadata-string +} + +func FilterPaymentMetadataObject(sdk: BlockingBreezServices) throws { + // ANCHOR: filter-payment-metadata-object + // This will *NOT* work + let _metadataFilters = [ + MetadataFilter( + jsonPath: "myCustomValue", + jsonValue: #"[1, 2, 3]"#, + ), + ] + + // This will work + let metadataFilters = [ + MetadataFilter( + jsonPath: "myCustomValue", + jsonValue: #"[1,2,3]"#, + ), + ] + // ANCHOR_END: filter-payment-metadata-object +} diff --git a/src/guide/payment_metadata.md b/src/guide/payment_metadata.md new file mode 100644 index 00000000..18e3e90e --- /dev/null +++ b/src/guide/payment_metadata.md @@ -0,0 +1,326 @@ +# Adding and filtering for payment metadata + +## Usage + +As developers, we understand the necessity to associate external metadata to a certain payment. The Breez SDK allows you to easily do so with the `set_payment_metadata` method: + + +
Rust
+
+ +```rust,ignore +{{#include ../../snippets/rust/src/metadata.rs:set-payment-metadata}} +``` +
+ +
Swift
+
+ +```swift,ignore +{{#include ../../snippets/swift/BreezSDKExamples/Sources/Metadata.swift:set-payment-metadata}} +``` +
+ +
Kotlin
+
+ +```kotlin,ignore +{{#include ../../snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Metadata.kt:set-payment-metadata}} +``` +
+ +
React Native
+
+ +```typescript +{{#include ../../snippets/react-native/metadata.ts:set-payment-metadata}} +``` +
+ +
Dart
+
+ +```dart,ignore +{{#include ../../snippets/dart_snippets/lib/metadata.dart:set-payment-metadata}} +``` +
+ +
Python
+
+ +```python,ignore +{{#include ../../snippets/python/src/metadata.py:set-payment-metadata}} +``` +
+ +
Go
+
+ +```go,ignore +{{#include ../../snippets/go/metadata.go:set-payment-metadata}} +``` +
+ +
C#
+
+ +```cs,ignore +{{#include ../../snippets/csharp/Metadata.cs:set-payment-metadata}} +``` +
+ +
+ +Once the metadata has been set, you can filter for the specified value using the `list_payments` method: + + +
Rust
+
+ +```rust,ignore +{{#include ../../snippets/rust/src/metadata.rs:filter-payment-metadata}} +``` +
+ +
Swift
+
+ +```swift,ignore +{{#include ../../snippets/swift/BreezSDKExamples/Sources/Metadata.swift:filter-payment-metadata}} +``` +
+ +
Kotlin
+
+ +```kotlin,ignore +{{#include ../../snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Metadata.kt:filter-payment-metadata}} +``` +
+ +
React Native
+
+ +```typescript +{{#include ../../snippets/react-native/metadata.ts:filter-payment-metadata}} +``` +
+ +
Dart
+
+ +```dart,ignore +{{#include ../../snippets/dart_snippets/lib/metadata.dart:filter-payment-metadata}} +``` +
+ +
Python
+
+ +```python,ignore +{{#include ../../snippets/python/src/metadata.py:filter-payment-metadata}} +``` +
+ +
Go
+
+ +```go,ignore +{{#include ../../snippets/go/metadata.go:filter-payment-metadata}} +``` +
+ +
C#
+
+ +```cs,ignore +{{#include ../../snippets/csharp/Metadata.cs:filter-payment-metadata}} +``` +
+ +
+ +## Caveats + +Searching for metadata is flexible, allowing you to search and compare all JSON-supported types (nested ones too, using [JSONPath](https://www.ibm.com/docs/en/netezza?topic=ddt-jsonpath)), but with a couple of caveats: + +### 2.1 Filtering for Strings + +Since the filter works as a one-to-one comparison to the JSON value, strings **must** be wrapped in double-quotes in order to be properly filtered: + + +
Rust
+
+ +```rust,ignore +{{#include ../../snippets/rust/src/metadata.rs:filter-payment-metadata-string}} +``` + +
+ +
Swift
+
+ +```swift,ignore +{{#include ../../snippets/swift/BreezSDKExamples/Sources/Metadata.swift:filter-payment-metadata-string}} +``` +
+ +
Kotlin
+
+ +```kotlin,ignore +{{#include ../../snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Metadata.kt:filter-payment-metadata-string}} +``` +
+ +
React Native
+
+ +```typescript +{{#include ../../snippets/react-native/metadata.ts:filter-payment-metadata-string}} +``` +
+ +
Dart
+
+ +```dart,ignore +{{#include ../../snippets/dart_snippets/lib/metadata.dart:filter-payment-metadata-string}} +``` +
+ +
Python
+
+ +```python,ignore +{{#include ../../snippets/python/src/metadata.py:filter-payment-metadata-string}} +``` +
+ +
Go
+
+ +```go,ignore +{{#include ../../snippets/go/metadata.go:filter-payment-metadata-string}} +``` +
+ +
C#
+
+ +```cs,ignore +{{#include ../../snippets/csharp/Metadata.cs:filter-payment-metadata-string}} +``` +
+ +
+ +### 2.2 Filtering for Objects/Arrays + +You can also compare complex objects against one another, but be careful of whitespaces! Since those are stripped during insertion, passing non-stripped filters will result in improper matching. For example, given the following metadata: + +
+
+{
+ "isNested": true,
+ "parent": {  
+  "nestedArray": [1, 2, 3]
+ }
+}
+
+
+ +You would filter for payments matching the nested array as follows: + + +
Rust
+
+ +```rust,ignore +{{#include ../../snippets/rust/src/metadata.rs:filter-payment-metadata-object}} +``` + +In Rust's case, this check can easily be overcome by using the [serde_json](https://docs.rs/serde_json/latest/serde_json/) crate (which you probably should be using anyway to serialize and insert the metadata): + +```rust,ignore +{{#include ../../snippets/rust/src/metadata.rs:filter-payment-metadata-object-serde}} +``` +
+ +
Swift
+
+ +```swift,ignore +{{#include ../../snippets/swift/BreezSDKExamples/Sources/Metadata.swift:filter-payment-metadata-object}} +``` +
+ +
Kotlin
+
+ +```kotlin,ignore +{{#include ../../snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Metadata.kt:filter-payment-metadata-object}} +``` +
+ +
React Native
+
+ +```typescript +{{#include ../../snippets/react-native/metadata.ts:filter-payment-metadata-object}} +``` +
+ +
Dart
+
+ +```dart,ignore +{{#include ../../snippets/dart_snippets/lib/metadata.dart:filter-payment-metadata-object}} +``` +
+ +
Python
+
+ +```python,ignore +{{#include ../../snippets/python/src/metadata.py:filter-payment-metadata-object}} +``` +
+ +
Go
+
+ +```go,ignore +{{#include ../../snippets/go/metadata.go:filter-payment-metadata-object}} +``` +
+ +
C#
+
+ +```cs,ignore +{{#include ../../snippets/csharp/Metadata.cs:filter-payment-metadata-object}} +``` +
+ +
+ +### 2.3 Same-key Insertion + +In case the same key were to be specified twice during insertion, the _last_ one occurring in the string is taken as valid by default. E.g. + +
+
+{
+ "completed": true,
+ "completed": false
+}
+
+
+ +will insert the value as `false`. + +### 2.4 Size Limits + +Currently, the SDK limits metadata storage per payment to 1,000 UTF-8 encoded characters, and any insertion beyond that will fail. From f6ae4da2e20f043bdec1a4b9a3834d1a0612d5d3 Mon Sep 17 00:00:00 2001 From: vacwmX Date: Thu, 25 Jan 2024 10:30:39 +0100 Subject: [PATCH 2/5] fix: fixing imports --- .github/workflows/main.yml | 2 +- snippets/csharp/Metadata.cs | 46 ++++++++++++------------ snippets/dart_snippets/lib/metadata.dart | 14 ++++---- snippets/go/metadata.go | 37 ++++++++++--------- snippets/python/src/metadata.py | 31 ++++------------ snippets/react-native/metadata.ts | 44 +++++++++++------------ snippets/rust/src/receive_onchain.rs | 2 +- 7 files changed, 79 insertions(+), 97 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 876c5713..073b86a3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -25,7 +25,7 @@ jobs: name: setup runs-on: ubuntu-latest outputs: - sdk-ref: ${{ inputs.sdk-ref || '0.2.14' }} + sdk-ref: ${{ inputs.sdk-ref || '19e614db145d9e8190999bc9fc9aada39a6a4a4d' }} package-version: '0.2.14' steps: - run: echo "set pre-setup output variables" diff --git a/snippets/csharp/Metadata.cs b/snippets/csharp/Metadata.cs index 000b2f86..14ffc29b 100644 --- a/snippets/csharp/Metadata.cs +++ b/snippets/csharp/Metadata.cs @@ -1,7 +1,7 @@ using Breez.Sdk; using System.Text.Json; -public class ServiceStatusSnippets +public class MetadataSnippets { public void SetPaymentMetadata(BlockingBreezServices sdk) { @@ -15,16 +15,16 @@ public void FilterPaymentMetadata(BlockingBreezServices sdk) // ANCHOR: filter-payment-metadata try { - MetadataFilter[] metadataFilters = { + var metadataFilters = new List( new MetadataFilter( jsonPath: "myCustomValue", - jsonValue: "true", - ), - }; + jsonValue: "true" + ) + ); - var payments = ListPayments( + var payments = sdk.ListPayments( new ListPaymentsRequest( - metadataFilters: metadataFilters, + metadataFilters: metadataFilters ) ); } @@ -36,43 +36,43 @@ public void FilterPaymentMetadata(BlockingBreezServices sdk) } public void FilterPaymentMetadataString(BlockingBreezServices sdk) - { + { // ANCHOR: filter-payment-metadata-string - MetadataFilter[] metadataFilters = { + var metadataFilters = new List( new MetadataFilter( jsonPath: "customerName", - jsonValue: "\"Satoshi Nakamoto\"", + jsonValue: "\"Satoshi Nakamoto\"" ), new MetadataFilter( jsonPath: "customerName", - jsonValue: JsonSerializer.Serialize("Satoshi Nakamoto"), - ), - }; + jsonValue: JsonSerializer.Serialize("Satoshi Nakamoto") + ) + ); // ANCHOR_END: filter-payment-metadata-string } public void FilterPaymentMetadataObject(BlockingBreezServices sdk) - { + { // ANCHOR: filter-payment-metadata-object // This will *NOT* work - MetadataFilter[] metadataFilters = { + var _metadataFilters = new List( new MetadataFilter( jsonPath: "parent.nestedArray", - jsonValue: "[1, 2, 3]", - ), - }; + jsonValue: "[1, 2, 3]" + ) + ); // This will work - MetadataFilter[] metadataFilters = { + var metadataFilters = new List( new MetadataFilter( jsonPath: "parent.nestedArray", - jsonValue: "[1,2,3]", + jsonValue: "[1,2,3]" ), new MetadataFilter( jsonPath: "parent.nestedArray", - jsonValue: JsonSerializer.Serialize(new int[] {1, 2, 3}), - ), - }; + jsonValue: JsonSerializer.Serialize(new int[] {1, 2, 3}) + ) + ); // ANCHOR_END: filter-payment-metadata-object } } diff --git a/snippets/dart_snippets/lib/metadata.dart b/snippets/dart_snippets/lib/metadata.dart index 33f07490..c18279d2 100644 --- a/snippets/dart_snippets/lib/metadata.dart +++ b/snippets/dart_snippets/lib/metadata.dart @@ -1,4 +1,5 @@ import 'package:breez_sdk/breez_sdk.dart'; +import 'package:breez_sdk/bridge_generated.dart'; Future setPaymentMetadata({required String paymentHash, required String metadata}) async { // ANCHOR: set-payment-metadata @@ -15,15 +16,16 @@ Future filterPaymentMetadata() async { ), ]; - await BreezSDK().listPayments(ListPaymentsRequest( - metadataFilters: metadataFilters - )).catchError((_err) { + await BreezSDK().listPayments( + req: ListPaymentsRequest( + metadataFilters: metadataFilters + )).catchError((_) { // handle error }); // ANCHOR_END: filter-payment-metadata // ANCHOR: filter-payment-metadata-string - List metadataFilters = [ + metadataFilters = [ MetadataFilter( jsonPath: "customerName", jsonValue: '"Satoshi Nakamoto"', @@ -33,7 +35,7 @@ Future filterPaymentMetadata() async { // ANCHOR: filter-payment-metadata-object // This will *NOT* work - List metadataFilters = [ + metadataFilters = [ MetadataFilter( jsonPath: "parent.nestedArray", jsonValue: "[1, 2, 3]", @@ -41,7 +43,7 @@ Future filterPaymentMetadata() async { ]; // This will work - List metadataFilters = [ + metadataFilters = [ MetadataFilter( jsonPath: "parent.nestedArray", jsonValue: "[1,2,3]", diff --git a/snippets/go/metadata.go b/snippets/go/metadata.go index 35c4d56f..7486ab45 100644 --- a/snippets/go/metadata.go +++ b/snippets/go/metadata.go @@ -15,13 +15,13 @@ func SetPaymentMetadata() { func FilterPaymentMetadata() { // ANCHOR: filter-payment-metadata - metadataFilters := []breez_sdk.PaymentMetadata { - { JsonPath: "myCustomValue", JsonValue: "true" }, + metadataFilters := []breez_sdk.MetadataFilter{ + {JsonPath: "myCustomValue", JsonValue: "true"}, } payments, err := sdk.ListPayments(breez_sdk.ListPaymentsRequest{ - MetadataFilters: &metadataFilters, - }); + MetadataFilters: &metadataFilters, + }) if err != nil { // handle error @@ -30,44 +30,43 @@ func FilterPaymentMetadata() { log.Printf("%#v", payments) } - func FilterPaymentMetadataString() { // ANCHOR: filter-payment-metadata-string - metadataFilters := []breez_sdk.PaymentMetadata { - { JsonPath: "customerName", JsonValue: "\"Satoshi Nakamoto\"" }, + metadataFilters := []breez_sdk.MetadataFilter{ + {JsonPath: "customerName", JsonValue: "\"Satoshi Nakamoto\""}, } jsonValue, _ := json.Marshal("Satoshi Nakamoto") - metadataFilters = []breez_sdk.PaymentMetadata { - { - JsonPath: "customerName", - JsonValue: string(jsonValue), - }, + metadataFilters = []breez_sdk.MetadataFilter{ + { + JsonPath: "customerName", + JsonValue: string(jsonValue), + }, } // ANCHOR_END: filter-payment-metadata-string sdk.ListPayments(breez_sdk.ListPaymentsRequest{ - MetadataFilters: &metadataFilters, + MetadataFilters: &metadataFilters, }) } func FilterPaymentMetadataObject() { // ANCHOR: filter-payment-metadata-object // This will *NOT* work - metadataFilters := []breez_sdk.PaymentMetadata { - { JsonPath: "parent.nestedArray", JsonValue: "[1, 2, 3]" }, + metadataFilters := []breez_sdk.MetadataFilter{ + {JsonPath: "parent.nestedArray", JsonValue: "[1, 2, 3]"}, } // This will work jsonValue, _ := json.Marshal([]int{1, 2, 3}) - metadataFilters = []breez_sdk.PaymentMetadata { - { JsonPath: "parent.nestedArray", JsonValue: "[1,2,3]" }, - { JsonPath: "parent.nestedArray", JsonValue: string(jsonValue) }, + metadataFilters = []breez_sdk.MetadataFilter{ + {JsonPath: "parent.nestedArray", JsonValue: "[1,2,3]"}, + {JsonPath: "parent.nestedArray", JsonValue: string(jsonValue)}, } // ANCHOR_END: filter-payment-metadata-object sdk.ListPayments(breez_sdk.ListPaymentsRequest{ - MetadataFilters: &metadataFilters, + MetadataFilters: &metadataFilters, }) } diff --git a/snippets/python/src/metadata.py b/snippets/python/src/metadata.py index 974e575d..c3077315 100644 --- a/snippets/python/src/metadata.py +++ b/snippets/python/src/metadata.py @@ -12,10 +12,7 @@ def set_payment_metadata(sdk_services): def filter_payment_metadata(sdk_services): # ANCHOR: filter-payment-metadata metadata_filters = [ - breez_sdk.MetadataFilter( - json_path: "myCustomValue", - json_value: "true", - ) + breez_sdk.MetadataFilter("myCustomValue", "true") ] try: @@ -29,36 +26,20 @@ def filter_payment_metadata(sdk_services): # ANCHOR: filter-payment-metadata-string metadata_filters = [ - breez_sdk.MetadataFilter( - json_path: "customerName", - json_value: '"true"', - ), - breez_sdk.MetadataFilter( - json_path: "customerName", - json_value: json.dumps("true"), - ) + breez_sdk.MetadataFilter("customerName", "\"Satoshi Nakamoto\""), + breez_sdk.MetadataFilter("customerName", json.dumps("Satoshi Nakamoto")), ] # ANCHOR_END: filter-payment-metadata-string # ANCHOR: filter-payment-metadata-object # This will *NOT* work metadata_filters = [ - breez_sdk.MetadataFilter( - json_path: "parent.nestedArray", - json_value: '[1, 2, 3]', - ) + breez_sdk.MetadataFilter("parent.nestedArray", "[1, 2, 3]") ] # This will work metadata_filters = [ - breez_sdk.MetadataFilter( - json_path: "parent.nestedArray", - json_value: '[1,2,3]', - ), - breez_sdk.MetadataFilter( - json_path: "parent.nestedArray", - json_value: json.dumps([1,2,3], separators=(',', ':')) - ), - + breez_sdk.MetadataFilter("parent.nestedArray", "[1,2,3]"), + breez_sdk.MetadataFilter("parent.nestedArray", json.dumps([1,2,3], separators=(',', ':'))), ] # ANCHOR_END: filter-payment-metadata-object diff --git a/snippets/react-native/metadata.ts b/snippets/react-native/metadata.ts index 4ebac385..a07b6729 100644 --- a/snippets/react-native/metadata.ts +++ b/snippets/react-native/metadata.ts @@ -1,17 +1,17 @@ import { setPaymentMetadata, listPayments } from '@breeztech/react-native-breez-sdk' -const setPaymentMetadata = async () => { +const testSetPaymentMetadata = async () => { // ANCHOR: set-payment-metadata - await setPaymentMetadata('target-payment-hash', `{"myCustomValue":true}`) + await setPaymentMetadata('target-payment-hash', '{"myCustomValue":true}') // ANCHOR_END: set-payment-metadata } -const filterPaymentMetadata = async () => { +const testFilterPaymentMetadata = async () => { // ANCHOR: filter-payment-metadata - let metadataFilters = [ + const metadataFilters = [ { - jsonPath: "myCustomValue", - jsonValue: "true" + jsonPath: 'myCustomValue', + jsonValue: 'true' } ] @@ -19,48 +19,48 @@ const filterPaymentMetadata = async () => { await listPayments({ metadataFilters }) - } catch(err) { + } catch (err) { // handle error } // ANCHOR_END: filter-payment-metadata } -const filterPaymentMetadataString = async () => { +const testFilterPaymentMetadataString = async () => { // ANCHOR: filter-payment-metadata-string // Note: These are equivalent const metadataFilters = [ { - jsonPath: "customerName", - jsonValue: "Satoshi Nakamoto", + jsonPath: 'customerName', + jsonValue: 'Satoshi Nakamoto' }, { - jsonPath: "customerName", - jsonValue: JSON.stringify("Satoshi Nakamoto"), - }, + jsonPath: 'customerName', + jsonValue: JSON.stringify('Satoshi Nakamoto') + } ] // ANCHOR_END: filter-payment-metadata-string } -const filterPaymentMetadataObject = async () => { +const testFilterPaymentMetadataObject = async () => { // ANCHOR: filter-payment-metadata-object // This will *NOT* work const _metadataFilters = [ { - jsonPath: "parent.nestedArray", - jsonValue: "[1, 2, 3]", - }, + jsonPath: 'parent.nestedArray', + jsonValue: '[1, 2, 3]' + } ] // This will work const metadataFilters = [ { - jsonPath: "parent.nestedArray", - jsonValue: "[1,2,3]", + jsonPath: 'parent.nestedArray', + jsonValue: '[1,2,3]' }, { - jsonPath: "parent.nestedArray", - jsonValue: JSON.stringify([1, 2, 3]), - }, + jsonPath: 'parent.nestedArray', + jsonValue: JSON.stringify([1, 2, 3]) + } ] // ANCHOR_END: filter-payment-metadata-object } diff --git a/snippets/rust/src/receive_onchain.rs b/snippets/rust/src/receive_onchain.rs index 452c3216..b94580f1 100644 --- a/snippets/rust/src/receive_onchain.rs +++ b/snippets/rust/src/receive_onchain.rs @@ -59,7 +59,7 @@ async fn get_channel_opening_fees(sdk: Arc, amount_msat: u64) -> // ANCHOR: get-channel-opening-fees let channel_fees = sdk .open_channel_fee(OpenChannelFeeRequest { - amount_msat, + amount_msat: Some(amount_msat), expiry: None, }) .await?; From 9a4dc9eecd794e859d013ccc830a60e270690003 Mon Sep 17 00:00:00 2001 From: yse Date: Sun, 11 Feb 2024 01:38:25 +0000 Subject: [PATCH 3/5] fix: comments and rust --- snippets/csharp/Metadata.cs | 2 +- snippets/dart_snippets/lib/metadata.dart | 2 +- snippets/go/metadata.go | 2 +- .../src/commonMain/kotlin/com/example/kotlinmpplib/Metadata.kt | 2 +- snippets/python/src/metadata.py | 2 +- snippets/react-native/metadata.ts | 2 +- snippets/rust/src/metadata.rs | 2 +- snippets/rust/src/receive_onchain.rs | 2 +- snippets/swift/BreezSDKExamples/Sources/Metadata.swift | 2 +- src/SUMMARY.md | 1 + 10 files changed, 10 insertions(+), 9 deletions(-) diff --git a/snippets/csharp/Metadata.cs b/snippets/csharp/Metadata.cs index 14ffc29b..0729d377 100644 --- a/snippets/csharp/Metadata.cs +++ b/snippets/csharp/Metadata.cs @@ -62,7 +62,7 @@ public void FilterPaymentMetadataObject(BlockingBreezServices sdk) ) ); - // This will work + // Any of these will work var metadataFilters = new List( new MetadataFilter( jsonPath: "parent.nestedArray", diff --git a/snippets/dart_snippets/lib/metadata.dart b/snippets/dart_snippets/lib/metadata.dart index c18279d2..0464299f 100644 --- a/snippets/dart_snippets/lib/metadata.dart +++ b/snippets/dart_snippets/lib/metadata.dart @@ -42,7 +42,7 @@ Future filterPaymentMetadata() async { ), ]; - // This will work + // Any of these will work metadataFilters = [ MetadataFilter( jsonPath: "parent.nestedArray", diff --git a/snippets/go/metadata.go b/snippets/go/metadata.go index 7486ab45..97d5b7d5 100644 --- a/snippets/go/metadata.go +++ b/snippets/go/metadata.go @@ -57,7 +57,7 @@ func FilterPaymentMetadataObject() { {JsonPath: "parent.nestedArray", JsonValue: "[1, 2, 3]"}, } - // This will work + // Any of these will work jsonValue, _ := json.Marshal([]int{1, 2, 3}) metadataFilters = []breez_sdk.MetadataFilter{ diff --git a/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Metadata.kt b/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Metadata.kt index 6086a56e..3097ded6 100644 --- a/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Metadata.kt +++ b/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Metadata.kt @@ -47,7 +47,7 @@ class Metadata { jsonValue = "[1, 2, 3]" )) - // This will work + // Any of these will work val metadataFilters = listOf(MetadataFilter( jsonPath = "parent.nestedArray", jsonValue = "[1,2,3]" diff --git a/snippets/python/src/metadata.py b/snippets/python/src/metadata.py index c3077315..ebab54c2 100644 --- a/snippets/python/src/metadata.py +++ b/snippets/python/src/metadata.py @@ -37,7 +37,7 @@ def filter_payment_metadata(sdk_services): breez_sdk.MetadataFilter("parent.nestedArray", "[1, 2, 3]") ] - # This will work + # Any of these will work metadata_filters = [ breez_sdk.MetadataFilter("parent.nestedArray", "[1,2,3]"), breez_sdk.MetadataFilter("parent.nestedArray", json.dumps([1,2,3], separators=(',', ':'))), diff --git a/snippets/react-native/metadata.ts b/snippets/react-native/metadata.ts index a07b6729..efeedbcc 100644 --- a/snippets/react-native/metadata.ts +++ b/snippets/react-native/metadata.ts @@ -51,7 +51,7 @@ const testFilterPaymentMetadataObject = async () => { } ] - // This will work + // Any of these will work const metadataFilters = [ { jsonPath: 'parent.nestedArray', diff --git a/snippets/rust/src/metadata.rs b/snippets/rust/src/metadata.rs index 91a0bcb9..f06c17f5 100644 --- a/snippets/rust/src/metadata.rs +++ b/snippets/rust/src/metadata.rs @@ -52,7 +52,7 @@ async fn filter_payment_metadata_object(sdk: Arc) -> Result<()> { }, ]; - // This will work + // Any of these will work let metadata_filters = vec![ MetadataFilter { json_path: "parent.nestedArray".to_string(), diff --git a/snippets/rust/src/receive_onchain.rs b/snippets/rust/src/receive_onchain.rs index 8411c6df..be79cc40 100644 --- a/snippets/rust/src/receive_onchain.rs +++ b/snippets/rust/src/receive_onchain.rs @@ -65,7 +65,7 @@ async fn get_channel_opening_fees(sdk: Arc, amount_msat: Option Date: Sun, 11 Feb 2024 13:10:47 +0000 Subject: [PATCH 4/5] fix: csharp and swift --- snippets/csharp/Metadata.cs | 16 ++++++++-------- .../BreezSDKExamples/Sources/Metadata.swift | 18 +++++++++--------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/snippets/csharp/Metadata.cs b/snippets/csharp/Metadata.cs index 0729d377..4420c5a3 100644 --- a/snippets/csharp/Metadata.cs +++ b/snippets/csharp/Metadata.cs @@ -15,12 +15,12 @@ public void FilterPaymentMetadata(BlockingBreezServices sdk) // ANCHOR: filter-payment-metadata try { - var metadataFilters = new List( + var metadataFilters = new List() { new MetadataFilter( jsonPath: "myCustomValue", jsonValue: "true" ) - ); + }; var payments = sdk.ListPayments( new ListPaymentsRequest( @@ -38,7 +38,7 @@ public void FilterPaymentMetadata(BlockingBreezServices sdk) public void FilterPaymentMetadataString(BlockingBreezServices sdk) { // ANCHOR: filter-payment-metadata-string - var metadataFilters = new List( + var metadataFilters = new List() { new MetadataFilter( jsonPath: "customerName", jsonValue: "\"Satoshi Nakamoto\"" @@ -47,7 +47,7 @@ public void FilterPaymentMetadataString(BlockingBreezServices sdk) jsonPath: "customerName", jsonValue: JsonSerializer.Serialize("Satoshi Nakamoto") ) - ); + }; // ANCHOR_END: filter-payment-metadata-string } @@ -55,15 +55,15 @@ public void FilterPaymentMetadataObject(BlockingBreezServices sdk) { // ANCHOR: filter-payment-metadata-object // This will *NOT* work - var _metadataFilters = new List( + var _metadataFilters = new List() { new MetadataFilter( jsonPath: "parent.nestedArray", jsonValue: "[1, 2, 3]" ) - ); + }; // Any of these will work - var metadataFilters = new List( + var metadataFilters = new List() { new MetadataFilter( jsonPath: "parent.nestedArray", jsonValue: "[1,2,3]" @@ -72,7 +72,7 @@ public void FilterPaymentMetadataObject(BlockingBreezServices sdk) jsonPath: "parent.nestedArray", jsonValue: JsonSerializer.Serialize(new int[] {1, 2, 3}) ) - ); + }; // ANCHOR_END: filter-payment-metadata-object } } diff --git a/snippets/swift/BreezSDKExamples/Sources/Metadata.swift b/snippets/swift/BreezSDKExamples/Sources/Metadata.swift index 54e9a1a2..af895ccb 100644 --- a/snippets/swift/BreezSDKExamples/Sources/Metadata.swift +++ b/snippets/swift/BreezSDKExamples/Sources/Metadata.swift @@ -18,14 +18,14 @@ func FilterPaymentMetadata(sdk: BlockingBreezServices) throws { let metadataFilters = [ MetadataFilter( jsonPath: "myCustomValue", - jsonValue: "true", - ), + jsonValue: "true" + ) ] try? sdk.listPayments( req: ListPaymentsRequest( metadataFilters: metadataFilters - ), + ) ) // ANCHOR_END: filter-payment-metadata } @@ -35,8 +35,8 @@ func FilterPaymentMetadataString(sdk: BlockingBreezServices) throws { let metadataFilters = [ MetadataFilter( jsonPath: "myCustomValue", - jsonValue: #""true""#, - ), + jsonValue: #""true""# + ) ] // ANCHOR_END: filter-payment-metadata-string } @@ -47,16 +47,16 @@ func FilterPaymentMetadataObject(sdk: BlockingBreezServices) throws { let _metadataFilters = [ MetadataFilter( jsonPath: "myCustomValue", - jsonValue: #"[1, 2, 3]"#, - ), + jsonValue: #"[1, 2, 3]"# + ) ] // Any of these will work let metadataFilters = [ MetadataFilter( jsonPath: "myCustomValue", - jsonValue: #"[1,2,3]"#, - ), + jsonValue: #"[1,2,3]"# + ) ] // ANCHOR_END: filter-payment-metadata-object } From e89e882ff49e32767998a67deb1d5a76281358e9 Mon Sep 17 00:00:00 2001 From: yse Date: Thu, 29 Feb 2024 22:58:02 +0100 Subject: [PATCH 5/5] fix: dart and swift warnings --- snippets/dart_snippets/lib/metadata.dart | 4 +-- .../BreezSDKExamples/Sources/Metadata.swift | 26 ++++++++++++++----- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/snippets/dart_snippets/lib/metadata.dart b/snippets/dart_snippets/lib/metadata.dart index 0464299f..dd54fe69 100644 --- a/snippets/dart_snippets/lib/metadata.dart +++ b/snippets/dart_snippets/lib/metadata.dart @@ -19,9 +19,7 @@ Future filterPaymentMetadata() async { await BreezSDK().listPayments( req: ListPaymentsRequest( metadataFilters: metadataFilters - )).catchError((_) { - // handle error - }); + )); // ANCHOR_END: filter-payment-metadata // ANCHOR: filter-payment-metadata-string diff --git a/snippets/swift/BreezSDKExamples/Sources/Metadata.swift b/snippets/swift/BreezSDKExamples/Sources/Metadata.swift index af895ccb..0141533d 100644 --- a/snippets/swift/BreezSDKExamples/Sources/Metadata.swift +++ b/snippets/swift/BreezSDKExamples/Sources/Metadata.swift @@ -13,7 +13,7 @@ func SetPaymentMetadata(sdk: BlockingBreezServices) throws { // ANCHOR_END: set-payment-metadata } -func FilterPaymentMetadata(sdk: BlockingBreezServices) throws { +func FilterPaymentMetadata(sdk: BlockingBreezServices) -> [Payment]? { // ANCHOR: filter-payment-metadata let metadataFilters = [ MetadataFilter( @@ -22,15 +22,17 @@ func FilterPaymentMetadata(sdk: BlockingBreezServices) throws { ) ] - try? sdk.listPayments( + let payments = try? sdk.listPayments( req: ListPaymentsRequest( metadataFilters: metadataFilters ) ) // ANCHOR_END: filter-payment-metadata + + return payments } -func FilterPaymentMetadataString(sdk: BlockingBreezServices) throws { +func FilterPaymentMetadataString(sdk: BlockingBreezServices) -> [Payment]? { // ANCHOR: filter-payment-metadata-string let metadataFilters = [ MetadataFilter( @@ -39,12 +41,18 @@ func FilterPaymentMetadataString(sdk: BlockingBreezServices) throws { ) ] // ANCHOR_END: filter-payment-metadata-string + + return try? sdk.listPayments( + req: ListPaymentsRequest( + metadataFilters: metadataFilters + ) + ) } -func FilterPaymentMetadataObject(sdk: BlockingBreezServices) throws { +func FilterPaymentMetadataObject(sdk: BlockingBreezServices) -> [Payment]? { // ANCHOR: filter-payment-metadata-object // This will *NOT* work - let _metadataFilters = [ + var metadataFilters = [ MetadataFilter( jsonPath: "myCustomValue", jsonValue: #"[1, 2, 3]"# @@ -52,11 +60,17 @@ func FilterPaymentMetadataObject(sdk: BlockingBreezServices) throws { ] // Any of these will work - let metadataFilters = [ + metadataFilters = [ MetadataFilter( jsonPath: "myCustomValue", jsonValue: #"[1,2,3]"# ) ] // ANCHOR_END: filter-payment-metadata-object + + return try? sdk.listPayments( + req: ListPaymentsRequest( + metadataFilters: metadataFilters + ) + ) }