diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index dc53ddac..2be5042d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -127,15 +127,28 @@ jobs: - build-packages name: Check C# snippets runs-on: ubuntu-latest + env: + DOTNET_INSTALL_DIR: "${{ github.workspace }}/dotnet" steps: - name: Checkout repo uses: actions/checkout@v4 + - name: Install Mono + run: sudo apt-get update && sudo apt-get install -y mono-complete + - name: Setup dotnet uses: actions/setup-dotnet@v4 with: dotnet-version: '7.0.x' + - name: Install Mono + run: | + sudo apt-get update + sudo apt-get install -y mono-complete + + - name: Setup nuget + uses: nuget/setup-nuget@v2 + - name: Download archived package uses: actions/download-artifact@v4 with: diff --git a/.gitignore b/.gitignore index d4809f0d..168bb956 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ book .DS_Store .idea +*.sln *.nupkg diff --git a/snippets/csharp/Messages.cs b/snippets/csharp/Messages.cs new file mode 100644 index 00000000..26457c4e --- /dev/null +++ b/snippets/csharp/Messages.cs @@ -0,0 +1,50 @@ +using Breez.Sdk; + +public class MessagesSnippets +{ + public void SignMessage(BlockingBreezServices sdk) + { + // ANCHOR: sign-message + var message = ""; + try + { + var signMessageResponse = sdk.SignMessage(new SignMessageRequest(message)); + + // Get the node info for your pubkey + var info = sdk.NodeInfo(); + + var signature = signMessageResponse?.signature; + var pubkey = info?.id; + + Console.WriteLine($"Pubkey: {pubkey}"); + Console.WriteLine($"Signature: {signature}"); + } + catch (Exception) + { + // Handle error + } + // ANCHOR_END: sign-message + } + + public void CheckMessage(BlockingBreezServices sdk) + { + // ANCHOR: check-message + var message = ""; + var pubkey = ""; + var signature = ""; + try + { + var checkMessageRequest = new CheckMessageRequest(message, pubkey, signature); + var checkMessageResponse = sdk.CheckMessage(checkMessageRequest); + + var isValid = checkMessageResponse?.isValid; + + Console.WriteLine($"Signature valid: {isValid}"); + } + catch (Exception) + { + // Handle error + } + // ANCHOR_END: check-message + } +} diff --git a/snippets/dart_snippets/lib/messages.dart b/snippets/dart_snippets/lib/messages.dart new file mode 100644 index 00000000..df8e414c --- /dev/null +++ b/snippets/dart_snippets/lib/messages.dart @@ -0,0 +1,37 @@ +import 'package:dart_snippets/sdk_instance.dart'; +import 'package:breez_sdk/bridge_generated.dart'; + +Future signMessage() async { + // ANCHOR: sign-message + SignMessageResponse signMessageResponse = await breezSDK.signMessage( + req: SignMessageRequest(message: ""), + ); + + // Get the node info for your pubkey + NodeState? info = await breezSDK.nodeInfo(); + + String signature = signMessageResponse.signature; + String? pubkey = info?.id; + + print("Pubkey: $pubkey"); + print("Signature: $signature"); + // ANCHOR_END: sign-message + return signMessageResponse; +} + +Future checkMessage() async { + // ANCHOR: check-message + CheckMessageResponse checkMessageResponse = await breezSDK.checkMessage( + req: CheckMessageRequest( + message: "", + pubkey: "", + signature: "" + ), + ); + + bool isValid = checkMessageResponse.isValid; + + print("Signature valid: $isValid"); + // ANCHOR_END: check-message + return checkMessageResponse; +} diff --git a/snippets/go/messages.go b/snippets/go/messages.go new file mode 100644 index 00000000..8ee79691 --- /dev/null +++ b/snippets/go/messages.go @@ -0,0 +1,60 @@ +package example + +import ( + "log" + + "github.com/breez/breez-sdk-go/breez_sdk" +) + +func SignMessage() { + // ANCHOR: sign-message + message := "" + + signMessageRequest := breez_sdk.SignMessageRequest{ + Message: message, + } + + signMessageResponse, err := sdk.SignMessage(signMessageRequest) + if err != nil { + log.Printf("Error: %#v", err) + return + } + + // Get the node info for your pubkey + info, err := sdk.NodeInfo() + if err != nil { + log.Printf("Error: %#v", err) + return + } + + signature := signMessageResponse.Signature + pubkey := info.Id + + log.Printf("Pubkey: %v", pubkey) + log.Printf("Signature: %v", signature) + // ANCHOR_END: sign-message +} + +func CheckMessage() { + // ANCHOR: check-message + message := "" + pubkey := "" + signature := "" + + checkMessageRequest := breez_sdk.CheckMessageRequest{ + Message: message, + Pubkey: pubkey, + Signature: signature, + } + + checkMessageResponse, err := sdk.CheckMessage(checkMessageRequest) + if err != nil { + log.Printf("Error: %#v", err) + return + } + + isValid := checkMessageResponse.IsValid + + log.Printf("Signature valid: %v", isValid) + // ANCHOR_END: check-message +} diff --git a/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Messages.kt b/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Messages.kt new file mode 100644 index 00000000..1151786d --- /dev/null +++ b/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Messages.kt @@ -0,0 +1,44 @@ +package com.example.kotlinmpplib + +import breez_sdk.* + +class Messages { + fun signMessage(sdk: BlockingBreezServices) { + // ANCHOR: sign-message + val message = "" + try { + val signMessageResponse = sdk.signMessage(SignMessageRequest(message)) + + // Get the node info for your pubkey + val info = sdk.nodeInfo() + + val signature = signMessageResponse?.signature + val pubkey = info?.id + + // Log.v("Breez", "Pubkey: ${pubkey}") + // Log.v("Breez", "Signature: ${signature}") + } catch (e: Exception) { + // handle error + } + // ANCHOR_END: sign-message + } + + fun checkMessage(sdk: BlockingBreezServices) { + // ANCHOR: check-message + val message = "" + val pubkey = "" + val signature = "" + try { + val checkMessageRequest = CheckMessageRequest(message, pubkey, signature) + val checkMessageResponse = sdk.checkMessage(checkMessageRequest) + + val isValid = checkMessageResponse?.isValid + + // Log.v("Breez", "Signature valid: ${isValid}") + } catch (e: Exception) { + // handle error + } + // ANCHOR_END: check-message + } + +} diff --git a/snippets/python/src/messages.py b/snippets/python/src/messages.py new file mode 100644 index 00000000..8e404c12 --- /dev/null +++ b/snippets/python/src/messages.py @@ -0,0 +1,39 @@ +import logging +import breez_sdk + + +def sign_message(sdk_services): + # ANCHOR: sign-message + message = "" + try: + sign_message_response = sdk_services.sign_message(breez_sdk.SignMessageRequest(message)) + + # Get the node info for your pubkey + info = sdk_services.node_info() + + signature = sign_message_response.signature + pubkey = info.id + + logging.debug(f"Pubkey: {pubkey}") + logging.debug(f"Signature: {signature}") + except Exception as error: + logging.error(error) + raise + # ANCHOR_END: sign-message + +def check_message(sdk_services): + # ANCHOR: check-message + message = "" + pubkey = "" + signature = "" + try: + check_message_request = breez_sdk.CheckMessageRequest(message, pubkey, signature) + check_message_response = sdk_services.check_message(check_message_request) + + is_valid = check_message_response.is_valid + + logging.debug(f"Signature valid: {is_valid}") + except Exception as error: + logging.error(error) + raise + # ANCHOR_END: check-message diff --git a/snippets/react-native/messages.ts b/snippets/react-native/messages.ts new file mode 100644 index 00000000..53e04b6c --- /dev/null +++ b/snippets/react-native/messages.ts @@ -0,0 +1,35 @@ +import { + checkMessage, + nodeInfo, + signMessage +} from '@breeztech/react-native-breez-sdk' + +const exampleSignMessage = async () => { + // ANCHOR: sign-message + const signMessageResponse = await signMessage({ + message: '' + }) + + // Get the node info for your pubkey + const info = await nodeInfo() + + const signature = signMessageResponse.signature + const pubkey = info.id + + console.log(`Pubkey: ${pubkey}`) + console.log(`Signature: ${signature}`) + // ANCHOR_END: sign-message +} + +const exampleCheckMessage = async () => { + // ANCHOR: check-message + const checkMessageResponse = await checkMessage({ + message: '', + pubkey: '', + signature: '' + }) + const isValid = checkMessageResponse.isValid + + console.log(`Signature valid: ${isValid}`) + // ANCHOR_END: check-message +} diff --git a/snippets/react-native/pay_onchain.ts b/snippets/react-native/pay_onchain.ts index 2080b1ec..06ce7399 100644 --- a/snippets/react-native/pay_onchain.ts +++ b/snippets/react-native/pay_onchain.ts @@ -1,13 +1,11 @@ import { type OnchainPaymentLimitsResponse, type PrepareOnchainPaymentResponse, - fetchReverseSwapFees, inProgressOnchainPayments, onchainPaymentLimits, payOnchain, prepareOnchainPayment, - SwapAmountType, - maxReverseSwapAmount + SwapAmountType } from '@breeztech/react-native-breez-sdk' const exampleFetchReverseSwapLimits = async () => { diff --git a/snippets/rust/Cargo.lock b/snippets/rust/Cargo.lock index 630561c4..fe777fe9 100644 --- a/snippets/rust/Cargo.lock +++ b/snippets/rust/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -1676,9 +1676,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.159" +version = "0.2.170" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828" [[package]] name = "libm" @@ -3369,9 +3369,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" dependencies = [ "backtrace", "bytes", @@ -3397,9 +3397,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", diff --git a/snippets/rust/Cargo.toml b/snippets/rust/Cargo.toml index cbb690db..109077a2 100644 --- a/snippets/rust/Cargo.toml +++ b/snippets/rust/Cargo.toml @@ -8,4 +8,4 @@ anyhow = "1" bip39 = { version = "2", features = ["rand"] } breez-sdk-core = { git = "https://github.com/breez/breez-sdk", tag = "0.6.1" } log = "0.4" -tokio = "1.29" +tokio = "1.41" diff --git a/snippets/rust/src/lnurl_auth.rs b/snippets/rust/src/lnurl_auth.rs index a97baaf7..d6fa7134 100644 --- a/snippets/rust/src/lnurl_auth.rs +++ b/snippets/rust/src/lnurl_auth.rs @@ -11,8 +11,8 @@ async fn auth(sdk: Arc) -> Result<()> { // keyauth://domain.com/auth?key=val let lnurl_auth_url = "lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4excttvdankjm3lw3skw0tvdankjm3xdvcn6vtp8q6n2dfsx5mrjwtrxdjnqvtzv56rzcnyv3jrxv3sxqmkyenrvv6kve3exv6nqdtyv43nqcmzvdsnvdrzx33rsenxx5unqc3cxgeqgntfgu"; - if let Ok(LnUrlAuth { data: ad }) = parse(lnurl_auth_url).await { - match sdk.lnurl_auth(ad).await { + if let Ok(LnUrlAuth { data }) = parse(lnurl_auth_url).await { + match sdk.lnurl_auth(data).await { Ok(LnUrlCallbackStatus::Ok) => { info!("Successfully authenticated") } diff --git a/snippets/rust/src/lnurl_pay.rs b/snippets/rust/src/lnurl_pay.rs index e3d5216d..7d62a15a 100644 --- a/snippets/rust/src/lnurl_pay.rs +++ b/snippets/rust/src/lnurl_pay.rs @@ -11,14 +11,14 @@ async fn pay(sdk: Arc) -> Result<()> { // lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4excttsv9un7um9wdekjmmw84jxywf5x43rvv35xgmr2enrxanr2cfcvsmnwe3jxcukvde48qukgdec89snwde3vfjxvepjxpjnjvtpxd3kvdnxx5crxwpjvyunsephsz36jf let lnurl_pay_url = "lightning@address.com"; - if let Ok(LnUrlPay { data: pd }) = parse(lnurl_pay_url).await { - let amount_msat = pd.min_sendable; + if let Ok(LnUrlPay { data, .. }) = parse(lnurl_pay_url).await { + let amount_msat = data.min_sendable; let use_trampoline = true; let optional_comment = Some("".to_string()); let optional_payment_label = Some("