public async Task Connect() { //Try connect with wss connection Uri wssURI = new Uri(string.Format(ScatterConstants.WSURI, ScatterConstants.WSS_PROTOCOL, ScatterConstants.WSS_HOST, ScatterConstants.WSS_PORT)); bool linked = await SocketService.Link(wssURI); if (!linked) { //try normal ws connection Uri wsURI = new Uri(string.Format(ScatterConstants.WSURI, ScatterConstants.WS_PROTOCOL, ScatterConstants.WS_HOST, ScatterConstants.WS_PORT)); linked = await SocketService.Link(wsURI); //TODO check for errors if (!linked) { throw new Exception("socket not available."); } } this.Identity = await this.GetIdentityFromPermissions(); }
public Eos Eos() { if (!SocketService.IsConnected()) { throw new Exception("Scatter is not connected."); } if (Network == null) { throw new ArgumentNullException("network"); } string httpEndpoint = ""; if (Network.Port == 443) { httpEndpoint += "https://" + Network.Host; } else { httpEndpoint += "http://" + Network.Host + ":" + Network.Port; } return(new Eos(new EosConfigurator() { ChainId = Network.ChainId, HttpEndpoint = httpEndpoint, SignProvider = new ScatterSignatureProvider(this) })); }
private void ThrowNoAuth() { if (!SocketService.IsConnected()) { throw new Exception("Connect and Authenticate first - scatter.connect( appName )"); } }
public async Task <Identity> GetIdentity(IdentityRequiredFields requiredFields = null) { ThrowNoAuth(); if (requiredFields == null) { requiredFields = new IdentityRequiredFields() { accounts = new List <Network>() { Network }, location = new List <LocationFields>(), personal = new List <PersonalFields>() }; } var result = await SocketService.SendApiRequest <IdentityRequest, Identity>(new Request <IdentityRequest>() { type = "getOrRequestIdentity", payload = new IdentityRequest() { fields = requiredFields, origin = AppName } }); return(Identity = result); }
public async Task <string> GetVersion() { var result = await SocketService.SendApiRequest(new Request() { Type = "getVersion", Payload = new { origin = AppName } }); ThrowOnApiError(result); return(result.ToObject <string>()); }
public async Task <SignaturesResult> RequestSignature(object payload) { ThrowNoAuth(); var result = await SocketService.SendApiRequest <object, SignaturesResult>(new Request <object>() { type = "requestSignature", payload = payload }); return(result); }
public async Task <string> GetVersion() { var result = await SocketService.SendApiRequest <ApiBase, string>(new Request <ApiBase>() { type = "getVersion", payload = new ApiBase() { origin = AppName } }); return(result); }
//TODO check public async Task <object> RequestTransfer(string to, string amount, object options = null) { ThrowNoAuth(); var result = await SocketService.SendApiRequest(new Request() { Type = "requestTransfer", Payload = new { network = Network, to, amount, options, origin = AppName } }); ThrowOnApiError(result); return(result); }
public async Task <string> Authenticate(string nonce) { ThrowNoAuth(); var result = await SocketService.SendApiRequest(new Request() { Type = "authenticate", Payload = new { nonce, origin = AppName } }); ThrowOnApiError(result); return(result.ToObject <string>()); }
public async Task <string> GetArbitrarySignature(string publicKey, string data, string whatfor = "", bool isHash = false) { ThrowNoAuth(); var result = await SocketService.SendApiRequest(new Request() { Type = "requestArbitrarySignature", Payload = new { publicKey, data, whatfor, isHash, origin = AppName } }); ThrowOnApiError(result); return(result.ToObject <string>()); }
public async Task <string> GetPublicKey(string blockchain) { ThrowNoAuth(); var result = await SocketService.SendApiRequest(new Request() { Type = "getPublicKey", Payload = new { blockchain, origin = AppName } }); ThrowOnApiError(result); return(result.ToObject <string>()); }
public async Task <SignaturesResult> RequestSignature(object payload) { ThrowNoAuth(); var result = await SocketService.SendApiRequest(new Request() { Type = "requestSignature", Payload = payload }); ThrowOnApiError(result); return(result.ToObject <SignaturesResult>()); }
public async Task <bool> LinkAccount(string publicKey) { ThrowNoAuth(); var result = await SocketService.SendApiRequest(new Request() { Type = "linkAccount", Payload = new { publicKey, network = Network, origin = AppName } }); ThrowOnApiError(result); return(result.ToObject <bool>()); }
public async Task <bool> SuggestNetwork() { ThrowNoAuth(); var result = await SocketService.SendApiRequest(new Request() { Type = "requestAddNetwork", Payload = new { network = Network, origin = AppName } }); ThrowOnApiError(result); return(result.ToObject <bool>()); }
public async Task <bool> ForgetIdentity() { ThrowNoAuth(); var result = await SocketService.SendApiRequest(new Request() { Type = "forgetIdentity", Payload = new { origin = AppName } }); ThrowOnApiError(result); Identity = null; return(result.ToObject <bool>()); }
/// <summary> /// Allows dapps to see if a user has an account for a specific blockchain. DOES NOT PROMPT and does not return an actual account, just a boolean. /// </summary> /// <param name="timeout">set response timeout that overrides the default one</param> /// <returns></returns> public async Task <bool> HasAccountFor(int?timeout = null) { ThrowNoAuth(); var result = await SocketService.SendApiRequest <NetworkRequest, string>(new Request <NetworkRequest>() { type = "hasAccountFor", payload = new NetworkRequest() { network = Network, origin = AppName } }, timeout); return(bool.Parse(result)); }
public async Task <Identity> GetIdentity(IdentityRequiredFields requiredFields) { ThrowNoAuth(); var result = await SocketService.SendApiRequest <IdentityRequest, Identity>(new Request <IdentityRequest>() { type = "getOrRequestIdentity", payload = new IdentityRequest() { fields = requiredFields, origin = AppName } }); return(Identity = result); }
public async Task <Identity> GetIdentity(IdentityRequiredFields requiredFields) { ThrowNoAuth(); var result = await SocketService.SendApiRequest(new Request() { Type = "getOrRequestIdentity", Payload = new { fields = requiredFields, origin = AppName } }); ThrowOnApiError(result); Identity = result.ToObject <Identity>(); return(Identity); }
public async Task <bool> SuggestNetwork() { ThrowNoAuth(); var result = await SocketService.SendApiRequest <NetworkRequest, string>(new Request <NetworkRequest>() { type = "requestAddNetwork", payload = new NetworkRequest() { network = Network, origin = AppName } }); return(bool.Parse(result)); }
public async Task <string> GetPublicKey(string blockchain) { ThrowNoAuth(); var result = await SocketService.SendApiRequest <GetPublicKeyRequest, string>(new Request <GetPublicKeyRequest>() { type = "getPublicKey", payload = new GetPublicKeyRequest() { blockchain = blockchain, origin = AppName } }); return(result); }
public async Task <string> UpdateIdentity(string name, string kyc = null) { ThrowNoAuth(); var result = await SocketService.SendApiRequest <UpdateIdentityRequest, string>(new Request <UpdateIdentityRequest>() { type = "updateIdentity", payload = new UpdateIdentityRequest() { name = name, kyc = kyc, origin = AppName } }); return(result); }
public async Task <bool> AddToken(Token token) { ThrowNoAuth(); var result = await SocketService.SendApiRequest <TokenRequest, string>(new Request <TokenRequest>() { type = "addToken", payload = new TokenRequest() { token = token, network = Network, origin = AppName } }); return(bool.Parse(result)); }
public async Task <bool> ForgetIdentity() { ThrowNoAuth(); var result = await SocketService.SendApiRequest <ApiBase, string>(new Request <ApiBase>() { type = "forgetIdentity", payload = new ApiBase() { origin = AppName } }); Identity = null; return(bool.Parse(result)); }
public async Task <bool> LinkAccount(LinkAccount account) { ThrowNoAuth(); var result = await SocketService.SendApiRequest <LinkAccountRequest, string>(new Request <LinkAccountRequest>() { type = "linkAccount", payload = new LinkAccountRequest() { account = account, network = Network, origin = AppName } }); return(bool.Parse(result)); }
public async Task Connect(CancellationToken?cancellationToken = null) { try { //Try connect with wss connection Uri wssURI = new Uri(string.Format(WSURI, "wss", "local.get-scatter.com", "50006")); await SocketService.Link(wssURI, cancellationToken); } catch (WebSocketException) { //try normal ws connection SocketService = new SocketService(new MemoryStorageProvider(), AppName); Uri wsURI = new Uri(string.Format(WSURI, "ws", "127.0.0.1", "50005")); await SocketService.Link(wsURI, cancellationToken); } this.Identity = await this.GetIdentityFromPermissions(); }
//TODO test on new branch public async Task <string> GetEncryptionKey(string fromPublicKey, string toPublicKey, UInt64 nonce) { ThrowNoAuth(); var result = await SocketService.SendApiRequest <GetEncryptionKeyRequest, string>(new Request <GetEncryptionKeyRequest>() { type = "getEncryptionKey", payload = new GetEncryptionKeyRequest() { fromPublicKey = fromPublicKey, toPublicKey = toPublicKey, nonce = nonce, origin = AppName } }); return(result); }
public async Task <string> Authenticate(string nonce, string data = null, string publicKey = null) { ThrowNoAuth(); var result = await SocketService.SendApiRequest <AuthenticateRequest, string>(new Request <AuthenticateRequest>() { type = "authenticate", payload = new AuthenticateRequest() { nonce = nonce, data = data, publicKey = publicKey, origin = AppName } }); return(result); }
//TODO check /// <summary> /// Request transfer of funds. /// </summary> /// <param name="to"></param> /// <param name="amount"></param> /// <param name="options"></param> /// <param name="timeout">set response timeout that overrides the default one</param> /// <returns></returns> public async Task <object> RequestTransfer(string to, string amount, object options = null, int?timeout = null) { ThrowNoAuth(); var result = await SocketService.SendApiRequest <TransferRequest, object>(new Request <TransferRequest>() { type = "requestTransfer", payload = new TransferRequest() { network = Network, to = to, amount = amount, options = options, origin = AppName } }, timeout); return(result); }
public async Task <Identity> GetIdentityFromPermissions() { ThrowNoAuth(); var result = await SocketService.SendApiRequest(new Request() { Type = "identityFromPermissions", Payload = new { origin = AppName } }); ThrowOnApiError(result); if (result.Type == JTokenType.Object) { Identity = result.ToObject <Identity>(); } return(Identity); }
public async Task <string> GetArbitrarySignature(string publicKey, string data, string whatfor = "", bool isHash = false) { ThrowNoAuth(); var result = await SocketService.SendApiRequest <ArbitrarySignatureRequest, string>(new Request <ArbitrarySignatureRequest>() { type = "requestArbitrarySignature", payload = new ArbitrarySignatureRequest() { publicKey = publicKey, data = data, whatfor = whatfor, isHash = isHash, origin = AppName } }); return(result); }