Example #1
0
        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();
        }
Example #2
0
        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)
            }));
        }
Example #3
0
 private void ThrowNoAuth()
 {
     if (!SocketService.IsConnected())
     {
         throw new Exception("Connect and Authenticate first - scatter.connect( appName )");
     }
 }
Example #4
0
        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);
        }
Example #5
0
        public async Task <string> GetVersion()
        {
            var result = await SocketService.SendApiRequest(new Request()
            {
                Type    = "getVersion",
                Payload = new { origin = AppName }
            });

            ThrowOnApiError(result);

            return(result.ToObject <string>());
        }
Example #6
0
        public async Task <SignaturesResult> RequestSignature(object payload)
        {
            ThrowNoAuth();

            var result = await SocketService.SendApiRequest <object, SignaturesResult>(new Request <object>()
            {
                type    = "requestSignature",
                payload = payload
            });

            return(result);
        }
Example #7
0
        public async Task <string> GetVersion()
        {
            var result = await SocketService.SendApiRequest <ApiBase, string>(new Request <ApiBase>()
            {
                type    = "getVersion",
                payload = new ApiBase()
                {
                    origin = AppName
                }
            });

            return(result);
        }
Example #8
0
        //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);
        }
Example #9
0
        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>());
        }
Example #10
0
        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>());
        }
Example #11
0
        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>());
        }
Example #12
0
        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>());
        }
Example #13
0
        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>());
        }
Example #14
0
        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>());
        }
Example #15
0
        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));
        }
Example #17
0
        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);
        }
Example #18
0
        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);
        }
Example #19
0
        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));
        }
Example #20
0
        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);
        }
Example #21
0
        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);
        }
Example #22
0
        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));
        }
Example #23
0
        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));
        }
Example #24
0
        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));
        }
Example #25
0
        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();
        }
Example #26
0
        //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);
        }
Example #27
0
        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);
        }
Example #29
0
        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);
        }
Example #30
0
        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);
        }