public async Task Publish_ShouldThrowArgumentExceptionWhenExpoTokenIsInvalid(string token)
        {
            var pushClient = new PushClient();
            var message    = new PushMessage(token);

            await Assert.ThrowsAsync <ArgumentException>(async() => await pushClient.Publish(message));
        }
        public async Task Publish_ShouldThrowPushServerExceptionWhenHttpClientReturnsAnError()
        {
            var handler    = new TestHandler((message, token) => throw new InvalidOperationException());
            var httpClient = new HttpClient(handler);
            var pushClient = new PushClient(httpClient: httpClient);

            await Assert.ThrowsAsync <PushServerException>(async() => await pushClient.Publish(new PushMessage(Token)));
        }
        public async Task Publish_ShouldThrowHttpRequestExceptionWhenStatusCodeIsNot200()
        {
            var handler    = new TestHandler((message, token) => Task.FromResult(new HttpResponseMessage(HttpStatusCode.Forbidden)));
            var httpClient = new HttpClient(handler);
            var pushClient = new PushClient(httpClient: httpClient);

            await Assert.ThrowsAsync <HttpRequestException>(async() => await pushClient.Publish(new PushMessage(Token)));
        }
        private async Task SendExpoMessage(string token, string title, string message)
        {
            try
            {
                var client = new PushClient();

                var notification = new PushMessage(token, title: title, body: message);

                await client.Publish(notification);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        public async Task Publish_ShouldReturnOkResponse()
        {
            var handler = new TestHandler((message, token) => Task.FromResult(new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(
                    "{\r\n  \"data\": [\r\n    {\"status\": \"ok\"}\r\n  ]\r\n}",
                    Encoding.UTF8, "application/json")
            }));
            var httpClient = new HttpClient(handler);
            var pushClient = new PushClient(httpClient: httpClient);

            var response = await pushClient.Publish(new PushMessage(Token));

            Assert.Equal(PushResponseStatuses.Ok, response.Status);
        }
        public async Task Publish_ShouldThrowPushServerExceptionWhenResponseHasAMismatchedAmoundOfData()
        {
            var handler = new TestHandler((message, token) => Task.FromResult(new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(
                    "{\r\n  \"data\": [\r\n    {\"status\": \"ok\"},\r\n    {\"status\": \"ok\"}\r\n  ]\r\n}",
                    Encoding.UTF8, "application/json")
            }));
            var httpClient = new HttpClient(handler);
            var pushClient = new PushClient(httpClient: httpClient);

            var ex = await Record.ExceptionAsync(async() => await pushClient.Publish(new PushMessage(Token)));

            Assert.Equal("Mismatched response length. Expected 1, but only 2 received.", ex.Message);
        }
        public async Task Publish_ShouldThrowPushServerExceptionWhenResponseHasNoData()
        {
            var handler = new TestHandler((message, token) => Task.FromResult(new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(
                    "{\r\n  \"data\": null\r\n}",
                    Encoding.UTF8, "application/json")
            }));
            var httpClient = new HttpClient(handler);
            var pushClient = new PushClient(httpClient: httpClient);

            var ex = await Record.ExceptionAsync(async() => await pushClient.Publish(new PushMessage(Token)));

            Assert.Equal("Invalid server response.", ex.Message);
        }
예제 #8
0
        public async Task <PushResponse> SendNotification(string expoToken)
        {
            string ExpoToken    = expoToken;
            var    client       = new PushClient();
            var    notification = new PushMessage(expoToken, title: "A new message from your friend");

            try
            {
                return(await client.Publish(notification));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                throw;
            }
        }
        public async Task Publish_ShouldReturnErrorResponse()
        {
            const string error   = "DeviceNotRegistered";
            var          handler = new TestHandler((message, token) => Task.FromResult(new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(
                    "{\r\n  \"data\": [{\r\n    \"status\": \"error\",\r\n    \"message\": \"\\\"ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]\\\" is not a registered push notification recipient\",\r\n    \"details\": {\r\n      \"error\": \"" + error + "\"\r\n    }\r\n  }]\r\n}",
                    Encoding.UTF8, "application/json")
            }));
            var httpClient = new HttpClient(handler);
            var pushClient = new PushClient(httpClient: httpClient);

            var response = await pushClient.Publish(new PushMessage(Token));

            Assert.Equal(PushResponseStatuses.Error, response.Status);
            Assert.Equal(error, response.Details.Error);
            Assert.Equal("\"ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]\" is not a registered push notification recipient", response.Message);
        }
        public async Task Publish_ShouldThrowPushServerExceptionWhenResponseHasErrors()
        {
            const string code         = "INTERNAL_SERVER_ERROR";
            const string errorMessage = "An unknown error occurred.";
            var          handler      = new TestHandler((message, token) => Task.FromResult(new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(
                    "{\r\n  \"errors\": [{\r\n    \"code\": \"" + code + "\",\r\n    \"message\": \"" + errorMessage + "\"\r\n  }]\r\n}",
                    Encoding.UTF8, "application/json")
            }));
            var httpClient = new HttpClient(handler);
            var pushClient = new PushClient(httpClient: httpClient);

            var ex = await Record.ExceptionAsync(async() => await pushClient.Publish(new PushMessage(Token)));

            var pushEx = ex as PushServerException;

            Assert.NotNull(pushEx);
            Assert.Equal("Request failed.", ex.Message);
            Assert.Equal(code, pushEx.Errors.First().Code);
            Assert.Equal(errorMessage, pushEx.Errors.First().Message);
        }
예제 #11
0
        private void btnPublish_Click(object sender, EventArgs e)
        {
            if (push.ConnectionStatus != CONNECTION_STATUS.CS_CONNECTREADY)
            {
                AddInfo("Connection is not ready");
                return;
            }

            PB2001 pb2001 = new PB2001();

            pb2001.userNo    = push.UserNo;
            pb2001.account_h = txtAccount.Text.ToString()[0];
            pb2001.account   = Convert.ToInt32(txtAccount.Text.Substring(1, 9));
            pb2001.exchange  = '0';
            pb2001.market    = 'O';
            pb2001.setSymbol(txtSymbol.Text.Trim());
            pb2001.side        = (cmbSide.Text.Substring(0, 1).ToUpper() == "B") ? 'B' : 'S';
            pb2001.modify_type = 'N';
            pb2001.qty         = Convert.ToInt16(txtQty.Text);
            pb2001.price       = Convert.ToInt64(txtPrice.Text);
            pb2001.priceFlag   = (cmbOrdType.Text.Substring(0, 1).ToUpper() == "L") ? '2' : '1';
            switch (cmbTimeInForce.Text.Trim().ToUpper())
            {
            case "ROD":
                pb2001.timeInForce = 'R';
                break;

            case "IOC":
                pb2001.timeInForce = 'I';
                break;

            case "FOK":
                pb2001.timeInForce = 'F';
                break;
            }

            pb2001.positionEffect = (cmbPositionEffect.Text.Substring(0, 1).ToUpper() == "O") ? 'O' : 'C';
            pb2001.front_office   = '0';

            byte[] pb = StructToBytes(pb2001);

            push.Subscribe(pb2001.getAccount());
            //PB2001
            //byte[] pb = new byte[65];

            //ushort userNo = push.UserNo;
            //byte[] UserNo = ConvertIntToByteArray(userNo);

            //char account_h = 'A';
            //byte Account_h = Convert.ToByte(account_h);

            //int account = 233620030;
            //byte[] Account = ConvertIntToByteArray(account);

            //char exchange = '0';
            //byte Exchange = Convert.ToByte(exchange);

            //char market = 'O';
            //byte Market = Convert.ToByte(market);

            //string symbol = "90000461";
            //char[] Symbol = new char[20]; ;
            //Array.Copy(symbol.ToCharArray(), Symbol, symbol.Length);
            //byte[] bSymbol = Encoding.Default.GetBytes(Symbol);

            //char side = 'B';
            //byte Side = Convert.ToByte(side);

            //char modify = 'N';
            //byte Modify = Convert.ToByte(modify);

            //ushort qty = 1;
            //byte[] Qty = ConvertIntToByteArray(qty);

            //long price = 500;
            //byte[] Price = ConvertIntToByteArray(price);

            //char priceFlag = '2';
            //byte PriceFlag = Convert.ToByte(priceFlag);

            //char timeInForce = 'R';
            //byte TimeInForce = Convert.ToByte(timeInForce);

            //char positionEffect = 'O';
            //byte PositionEffect = Convert.ToByte(positionEffect);

            //char front_office = '0';
            //byte Front_office = Convert.ToByte(front_office);

            //Array.Copy(UserNo, pb, UserNo.Length);
            //pb[6] = Account_h;
            //Array.Copy(Account, 0, pb, 7, Account.Length);
            //pb[23] = Exchange;
            //pb[24] = Market;
            //Array.Copy(bSymbol, 0, pb, 25, bSymbol.Length);
            //pb[45] = Side;
            //pb[46] = Modify;
            //Array.Copy(Qty, 0, pb, 47, Qty.Length);
            //Array.Copy(Price, 0, pb, 49, Price.Length);
            //pb[57] = PriceFlag;
            //pb[58] = TimeInForce;
            //pb[59] = PositionEffect;
            //pb[64] = Front_office;

            //var s = System.Runtime.InteropServices.Marshal.SizeOf(pb); //to know struct length
            //Console.WriteLine(ConvertByteArrayToDouble(bUserNo));

            //long RequestId = push.Publish("SSEOrder.Sv", 2001, pb);
            long RequestId = push.Publish(subTopic1, 2001, pb, false, true);

            //AddInfo("Request Id SEND: " + RequestId);
            AddInfo(pb2001.toLog());
            //}
        }
        public async Task Publish_ShouldThrowArgumentNullExceptionWhenPushMessageIsEmpty()
        {
            var pushClient = new PushClient();

            await Assert.ThrowsAsync <ArgumentNullException>(async() => await pushClient.Publish(null));
        }