| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Scatter C# library to interact with ScatterDesktop / ScatterMobile
git clone https://github.com/GetScatter/scatter-sharp --recursive
Visual Studio 2017+
scatter-sharp is now available throught nuget https://www.nuget.org/packages/scatter-sharp
Install-Package scatter-sharp
In order to use scatter you need to create a instance with AppName and a Network configuration, connect to scatter application, request a Identity and then fetch a new Eos instance.
Example:
var network = new Api.Network()
{
blockchain = Scatter.Blockchains.EOSIO,
host = "api.eossweden.se",
port = 443,
protocol = "https",
chainId = "aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906"
};
var scatter = new Scatter(new ScatterConfigurator()
{
AppName = "SCATTER-SHARP",
Network = network,
StorageProvider = storageProvider
});
await scatter.Connect();
var identity = await scatter.GetIdentity(new Api.IdentityRequiredFields()
{
accounts = new List<Api.Network>()
{
network
},
location = new List<Api.LocationFields>(),
personal = new List<Api.PersonalFields>()
});
var eos = new Eos(new EosSharp.Core.EosConfigurator() {
ChainId = network.chainId,
HttpEndpoint = network.GetHttpEndpoint(),
SignProvider = new ScatterSignatureProvider(scatter)
});
var account = scatter.Identity.accounts.First();
var result = await eos.CreateTransaction(new EosSharp.Core.Api.v1.Transaction()
{
actions = new List<EosSharp.Core.Api.v1.Action>()
{
new EosSharp.Core.Api.v1.Action()
{
account = "eosio.token",
authorization = new List<PermissionLevel>()
{
new PermissionLevel() {actor = account.name, permission = account.authority }
},
name = "transfer",
//Using a dictionary with key, object works on WEBGL
data = new Dictionary<string, object>()
{
{ "from", account.name },
{ "to", "eosio" },
{ "quantity", "0.0001 EOS" },
{ "memo", "Unity3D hello crypto world!" }
}
}
}
});
... **Use all eos api methods as usual from eos-sharp** ...
scatter.Dispose();Scatter uses a appKey and Nonce to help pair your application with the users permissions. By default this information is stored on memory but you may want to save on disk to be reused later.
Create a new Scatter instance and configure a FileStorageProvider with the target filePath.
var fileStorage = new FileStorageProvider(filePath);
using (var scatter = new Scatter(new ScatterConfigurator()
{
AppName = "SCATTER-SHARP",
Network = network,
StorageProvider = fileStorage
})
{
await scatter.Connect();
....
}Is useful to configure a proxy to investigate and debug all the information that goes through scatter-sharp <-> ScatterDesktop. Fiddler is a popular http/websocket proxy solution but you can configure any other.
Add a proxy object to scatter configurator that accepts Url and optionaly User and Password. Note that this is used in websocket-sharp and not the implementation for WebGL (not needed).
var scatter = new Scatter(new ScatterConfigurator()
{
AppName = "SCATTER-SHARP",
Network = network,
StorageProvider = storageProvider,
Proxy = new Proxy()
{
Url = "http://127.0.0.1:8888"
}
});On tab "FiddlerScript" add this code in the end of function "OnBeforeRequest"
static function OnBeforeRequest(oSession: Session) {
...
if (oSession.RequestHeaders.ExistsAndContains ("Sec-WebSocket-Extensions", "permessage-deflate")) {
oSession.RequestHeaders.Remove ( "Sec-WebSocket-Extensions");
}
}
Double click "ws" icon to open websocket tab
In websocket tab you can view in real-time all the communication between scatter-sharp <-> ScatterDesktop
To enable the proxy in unity editor go to the file:
C:\Program Files\Unity\Editor\Data\Mono\etc\mono\2.0\machine.config
Add this to the <system.net> node:
<defaultProxy> <proxy proxyaddress="http://localhost:8888"/> </defaultProxy>
await scatter.Connect();string version = await scatter.GetVersion();Identity identity = await scatter.GetIdentity(new Api.IdentityRequiredFields() {
accounts = new List<Api.Network>()
{
network
},
location = new List<Api.LocationFields>(),
personal = new List<Api.PersonalFields>()
});Returns:
public class Identity
{
public string hash;
public string publicKey;
public string name;
public bool kyc;
public List<IdentityAccount> accounts;
}Identity identity = await scatter.GetIdentityFromPermissions();Returns:
public class Identity
{
public string hash;
public string publicKey;
public string name;
public bool kyc;
public List<IdentityAccount> accounts;
}bool result = await scatter.ForgetIdentity();string signature = await scatter.Authenticate();string signature = await scatter.GetArbitrarySignature(string publicKey, string data, string whatfor = "", bool isHash = false);string pubKey = await scatter.GetPublicKey(string blockchain);bool result = await scatter.LinkAccount(string publicKey);bool result = await scatter.HasAccountFor();bool result = await scatter.SuggestNetwork();bool result = await scatter.AddToken(Token token);scatter.On(string type, Action<object> callback);scatter.Off(string type);
scatter.Off(string type, int index);
scatter.Off(Action<object> callback);
scatter.Off(string type, Action<object> callback);| Back | FazBrowse Home | New Git URL |