nerzh/everscale-client-swift
--->
Get api keys and TVM endpoints:
You need to get an API-KEY here https://dashboard.evercloud.dev
Usage
All requests are async
import EverscaleClientSwift
var config: TSDKClientConfig = .init()
config.network = TSDKNetworkConfig(endpoints: ["https://net.ton.dev"])
let client: TSDKClientModule = .init(config: config)
// Crypto
client.crypto.factorize(TSDKParamsOfFactorize(composite: "17ED48941A08F981")) { (response) in
print(response.result?.factors)
}
// Boc
let payload: TSDKParamsOfParse = .init(boc: "te6ccgEBAQEAWAAAq2n+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE/zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzSsG8DgAAAAAjuOu9NAL7BxYpA")
client.boc.parse_message(payload) { (response) in
if let result = response.result, let parsed: [String: Any] = result.parsed.toDictionary() {
print(parsed["id"])
print(parsed["src"])
print(parsed["dst"])
}
}Errors
client.crypto.factorize(TSDKParamsOfFactorize(composite: "17ED48941A08F981")) { (response) in
if let error = response.error {
print(error.data.toJSON())
print(error.code)
}
}Setup TONSDK For Linux and MacOS
Install sdk with bash script
- This download SDK to current dirrectory, compile it and add library symlinks to your system
cd everscale-client-swift- For install or update the SDK version simply by running these command
bash scripts/install_tonsdk.shManual install sdk ( if you have any problem with script install_tonsdk.sh )
<details> <summary>SPOILER: Manual installation</summary>
- Install Rust to your OS
- git clone https://github.com/tonlabs/ever-sdk
- cd ./SDK
- cargo update
- cargo build --release
- copy or create symlink of dynamic library
macOS : ./SDK/target/release/libton_client.dylib to /usr/local/lib/libton_client.dylib
Linux : ./SDK/target/release/libton_client.so to /usr/lib/libton_client.so
- Create pkgConfig file :
macOS : /usr/local/lib/pkgconfig/libton_client.pc
prefix=/usr/local
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib
Name: ton_client
Description: ton_client
Version: 1.0.0
Cflags: -I${includedir}
Libs: -L${libdir} -lton_client
Linux: /usr/lib/pkgconfig/libton_client.pc
prefix=/usr
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib
Name: ton_client
Description: ton_client
Version: 1.0.0
Cflags: -I${includedir}
Libs: -L${libdir} -lton_client- Copy or create symlink of file
/SDK/ton_client/client/tonclient.h to MacOS: /usr/local/include/tonclient.h Linux: /usr/include/tonclient.h
</details>
Setup TONSDK For iOS
- Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh || true && \
source ~/.profile- Install "cargo lipo"
rustup target add aarch64-apple-ios x86_64-apple-ios || true && \
cargo install cargo-lipo- Build SDK for iOS
Go to your project folder and:
git clone https://github.com/tonlabs/SDK.git || true && \
cd ./SDKgit pull --ff-only || true && \
cargo update || true && \
cargo lipo --release⚠️ Wait installation
- In xcode File > Add files to "Name Your Project" navigate to ./SDK/ton_client/tonclient.h
- Create bridge. In xcode File > New > File, select Header File, set name for example Tonclient-Bridging-Header.h
and add
#include <stdbool.h>
#import "tonclient.h"
like this:
#ifndef Tonclient_Bridging_Header_h
#define Tonclient_Bridging_Header_h
#include <stdbool.h>
#import "tonclient.h"
#endif- Add path to Tonclient-Bridging-Header.h $(PROJECT_DIR)/Tonclient-Bridging-Header.h
- Add path to search for libraries ( path to directory withlibton_client.a ) $(PROJECT_DIR)/SDK/target/universal/release
- File > Swift Packages > Add Package Dependency https://github.com/nerzh/ton-client-swift
- Build project ...
Tests
If you use Xcode for Test
Please, set custom working directory to project folder for your xcode scheme. This is necessary for the relative path "./" to this library folders. You may change it with the xcode edit scheme menu Product > Scheme > Edit Scheme menu Run submenu Options enable checkbox "Use custom directory" and add custom working directory.
Or if above variant not available, then inside file path_to_this_library/.swiftpm/xcode/xcshareddata/xcschemes/TonClientSwift.xcscheme set to tag "LaunchAction" absolute path to this library with options: useCustomWorkingDirectory = "YES" customWorkingDirectory = "/path_to_this_library"
Tests
- inside root directory of everscale-client-swift create .env.debug file with
NET TON DEV
server_address=https://net.ton.dev
giver_address=0:653b9a6452c7a982c6dc92b2da9eba832ade1c467699ebb3b43dca6d77b780dd
giver_abi_name=Giver
giver_function=grantOptional: Install locale NodeSE for tests if you needed:
- launch docker
- docker run -d --name local-node -p 80:80 tonlabs/local-node
nodeSE will start on localhost:80
server_address=http://localhost:80
giver_abi_name=GiverNodeSE_v2
giver_amount=10000000000- Run Tests
MacOS: Run Tests inside Xcode Linux: swift test --generate-linuxmain swift test --enable-test-discovery
Update SDK
cd everscale-client-swiftbash api_generate.shPackage Metadata
Repository: nerzh/everscale-client-swift
Default branch: master
README: README.md