Exemple #1
0
        public Response(string JSONResponse)
        {
            this.JSONString = JSONResponse;
            JObject baseObject = JObject.Parse(JSONResponse);

            this.Action   = baseObject["ACTION"].ToObject <string>();
            this.Payloads = new Collection <IResponsePayload>();
            this.Errors   = new Collection <ErrorPayload>();

            JEnumerable <JToken> errChildrens = baseObject["ERRORARRAY"].Children();

            foreach (JToken child in errChildrens)
            {
                ErrorPayload errPayload = new ErrorPayload();
                errPayload.Deserialize(child);

                this.Errors.Add(errPayload);
            }
            JEnumerable <JToken> childrens = baseObject["DATA"].Children();

            foreach (JToken child in childrens)
            {
                IResponsePayload payload = Utils.GetPayloadClass(this.Action);
                if (payload != null)
                {
                    payload.Deserialize(child);

                    this.Payloads.Add(payload);
                }
            }
        }
Exemple #2
0
        public void WriteFile(uint flashOffset, BufferedStream file)
        {
            byte[] buffer      = new byte[1024];
            uint   localOffset = flashOffset;
            int    read        = 0;

            log.DebugFormat("Writing file to offset {0:X8}", flashOffset);

            while ((read = file.Read(buffer, 0, 1024)) > 0)
            {
                PreloaderCommand response;
                PreloaderCommand cmd  = new PreloaderCommand(new WriteFlashPayload(localOffset, buffer));
                byte[]           data = cmd.Serialize();
                if (!transmitCommand(cmd, 1000, out response))
                {
                    throw new Exception("Failure during transmitting writeflash command");
                }
                if (response.payload is WriteFlashPayload)
                {
                    localOffset += (uint)read;
                }
                else if (response.payload is ErrorPayload)
                {
                    ErrorPayload errorpl = (ErrorPayload)response.payload;
                    log.ErrorFormat("Error received from device: {0} with Message: {1}", errorpl.ErrorCode, errorpl.Message);
                    throw new Exception(String.Format("Error received from device: {0} with Message: {1}", errorpl.ErrorCode, errorpl.Message));
                }
                else if (response.payload is MessagePayload)
                {
                    MessagePayload msgpl = (MessagePayload)response.payload;
                    log.ErrorFormat("Message received from device: {0}", msgpl.Message);
                    throw new Exception(String.Format("Message received from device: {0}", msgpl.Message));
                }
            }
        }
Exemple #3
0
 internal SharedErrorEventArgs(ErrorPayload data)
 {
     this.Error       = data.Error;
     this.Name        = data.Name;
     this.Description = data.Description;
     this.SourceId    = data.ClientId;
 }
Exemple #4
0
        // Continues a conversation with the server by receiving a response to a packet sent with 'Send' or 'SendReply'.
        public ValueTask <PayloadData> ReceiveReplyAsync(IOBehavior ioBehavior, CancellationToken cancellationToken)
        {
            ValueTask <ArraySegment <byte> > task;

            try
            {
                VerifyConnected();
                task = m_payloadHandler.ReadPayloadAsync(m_payloadCache, ProtocolErrorBehavior.Throw, ioBehavior);
            }
            catch (Exception ex)
            {
                if ((ex as MySqlException)?.Number == (int)MySqlErrorCode.CommandTimeoutExpired)
                {
                    HandleTimeout();
                }
                task = ValueTaskExtensions.FromException <ArraySegment <byte> >(ex);
            }

            if (task.IsCompletedSuccessfully)
            {
                var payload = new PayloadData(task.Result);
                if (payload.HeaderByte != ErrorPayload.Signature)
                {
                    return(new ValueTask <PayloadData>(payload));
                }

                var exception = ErrorPayload.Create(payload).ToException();
                return(ValueTaskExtensions.FromException <PayloadData>(exception));
            }

            return(new ValueTask <PayloadData>(task.AsTask().ContinueWith(TryAsyncContinuation, cancellationToken, TaskContinuationOptions.LazyCancellation | TaskContinuationOptions.ExecuteSynchronously, TaskScheduler.Default)));
        }
Exemple #5
0
        public async Task <PostBitmapResponse> PostBitmap(string url, Dictionary <string, string> json)
        {
            using (HttpClient client = new HttpClient())
            {
                client.DefaultRequestHeaders
                .Accept
                .Add(new MediaTypeWithQualityHeaderValue("application/json"));

                StringContent       content = new StringContent(JsonConvert.SerializeObject(json).ToString(), Encoding.UTF8, "application/json");
                HttpResponseMessage resp    = await client.PostAsync(url, content);

                int statusCode = (int)resp.StatusCode;
                if (statusCode == 400 || statusCode == 429 || statusCode == 500)
                {
                    ErrorPayload err       = JsonConvert.DeserializeObject <ErrorPayload>(await resp.Content.ReadAsStringAsync());
                    string       errorText = $"[{err.Title}] - {err.ErrorCode} : {err.Description}";
                    ConsoleEx.WriteColoredLine(Discord.LogSeverity.Critical, ConsoleTextFormat.TimeAndText, errorText);
                    return(new PostBitmapResponse(null, new ResponseStatus(false, errorText)));
                }
                Stream stream = await resp.Content.ReadAsStreamAsync();

                stream.Seek(0, SeekOrigin.Begin);
                Image <Rgba32> img = Image.Load(stream);
                return(new PostBitmapResponse(img, new ResponseStatus(true, "")));
            }
        }
        public void T_ErrorPayload_1()
        {
            var model = new ErrorPayload()
            {
                Data       = new Dictionary <string, string>(),
                Message    = "message",
                StackTrace = "stack trace",
                StatusCode = 200
            };

            model.Data.Add("k1", "v1");
            model.Data.Add("k2", "v2");

            Helpers.AssertHelper.AssertSerialization <ErrorPayload>(model, this.TestContext);
        }
Exemple #7
0
        public static PreloaderCommand Deserialize(byte[] packet, int length)
        {
            if (packet[0] != DELIMITER || packet[length - 1] != DELIMITER)
            {
                throw new ArgumentException("Not a valid Preloader command");
            }
            byte[] alldata = unescapeBuf(packet, 1, length - 2);
            byte[] payload = new byte[alldata.Length - 2];
            Array.Copy(alldata, payload, payload.Length);

            ushort crc       = Utilities.crc16(payload);
            ushort packetCrc = (ushort)(alldata[alldata.Length - 2] << 8 | (alldata[alldata.Length - 1] & 0xFF));

            if (crc != packetCrc)
            {
                Console.WriteLine("Crc not equal!? {0} {1}", crc, packetCrc);
            }

            CommandType       commandtype = (CommandType)Enum.ToObject(typeof(CommandType), payload[0]);
            IPreloaderPayload preloaderPayload;

            switch (commandtype)
            {
            case CommandType.MagicRsp:
                preloaderPayload = MagicPayload.Deserialize(payload);
                break;

            case CommandType.WriteFlashCmd:
            case CommandType.WriteFlashRsp:
                preloaderPayload = WriteFlashPayload.Deserialize(payload);
                break;

            case CommandType.MessageRsp:
                preloaderPayload = MessagePayload.Deserialize(payload);
                break;

            case CommandType.ErrorRsp:
                preloaderPayload = ErrorPayload.Deserialize(payload);
                break;

            default:
                preloaderPayload = BytePayload.Deserialize(payload);
                break;
            }

            return(new PreloaderCommand(preloaderPayload));
        }
Exemple #8
0
 private void RaiseMessageReceived(IEnumerable <Payload> events)
 {
     foreach (Payload payload in events)
     {
         MessagePayload messagePayload = (MessagePayload)payload;
         if (this.MessageReceived == null)
         {
             var error = new ErrorPayload(SharedObjects.Error.General, "Message ignored.",
                                          "Your client received a message.  The message was ignored because the MessageReceived handler is not registered.", messagePayload.ClientId, Payload.NextId);
             RaiseError(error);
         }
         else
         {
             this.MessageReceived(this, new MessageEventArgs(messagePayload.ClientId, messagePayload.Message));
         }
     }
 }
Exemple #9
0
        public async Task Post()
        {
            //Arrange
            ErrorPayload pushed = null;
            var          inbox  = new SerializedErrorsInbox();

            inbox.GetErrorsStream().Subscribe(p =>
            {
                pushed = p;
            });

            //Act
            await inbox.Post(new ErrorPayload("sourceId", new Error(), "errorId", string.Empty));

            //Assert
            Assert.NotNull(pushed);
            Assert.Equal("errorId", pushed.ErrorId);
        }
 public void TestGeneralErrorResponse()
 {
     SmartHomeResponse responseFromString = JsonConvert.DeserializeObject<SmartHomeResponse>(GENERAL_ERROR);
     //Context check
     Assert.Null(responseFromString.Context);
     //Event Check
     Assert.Equal(typeof(Event), responseFromString.Event.GetType());
     Event e = responseFromString.Event as Event;
     TestFunctionsV3.TestHeaderV3(e.Header, "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4", Namespaces.ALEXA, HeaderNames.ERROR_RESPONSE);
     Assert.Equal("dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==", e.Header.CorrelationToken);
     //Endpoint
     TestFunctionsV3.TestEndpointV3(e.Endpoint, "endpoint-001");
     TestFunctionsV3.TestBearerTokenV3(e.Endpoint.Scope, "access-token-from-Amazon");
     //Payload
     Assert.Equal(typeof(ErrorPayload), responseFromString.GetPayloadType());
     ErrorPayload p = e.Payload as ErrorPayload;
     Assert.Equal(ErrorTypes.ENDPOINT_UNREACHABLE, p.Type);
     Assert.Equal("Unable to reach endpoint-001 because it appears to be offline", p.Message);
 }
Exemple #11
0
        public static ObjectResult Error(HttpStatusCode httpStatusCode, string code, string messageToDeveloper, string messageToUserTh, string messageToUserEn)
        {
            var error = new ErrorPayload
            {
                errorId            = Guid.NewGuid().ToString(),
                code               = code,
                messageToDeveloper = messageToDeveloper,
                messageToUser      = new ErrorPayloadMessageToUserDetail
                {
                    langTh = messageToUserTh,
                    langEn = messageToUserEn
                },
                created = DateTimes.GetCurrentUtcDateTimeInThaiTimeZone(DateTimes.DateTimeFormat.YearMonthDayByDashTHourMinuteSecondByColonZ, DateTimes.LanguageCultureName.ENGLISH_UNITED_STATES, DateTimes.DateTimeUtcOffset.HHMM)
            };

            var objResult = new ObjectResult(new { error });

            objResult.StatusCode = (int)httpStatusCode;

            return(objResult);
        }
Exemple #12
0
        public void TestGeneralErrorResponse()
        {
            SmartHomeResponse responseFromString = JsonConvert.DeserializeObject <SmartHomeResponse>(GENERAL_ERROR);

            //Context check
            Assert.Null(responseFromString.Context);
            //Event Check
            Assert.Equal(typeof(Event), responseFromString.Event.GetType());
            Event e = responseFromString.Event as Event;

            TestFunctionsV3.TestHeaderV3(e.Header, "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4", Namespaces.ALEXA_THERMOSTATCONTROLLER, HeaderNames.ERROR_RESPONSE);
            Assert.Equal("dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==", e.Header.CorrelationToken);
            //Endpoint
            TestFunctionsV3.TestEndpointV3(e.Endpoint, "endpoint-001");
            TestFunctionsV3.TestBearerTokenV3(e.Endpoint.Scope, "access-token-from-Amazon");
            //Payload
            Assert.Equal(typeof(ErrorPayload), responseFromString.GetPayloadType());
            ErrorPayload p = e.Payload as ErrorPayload;

            Assert.Equal(ErrorTypes.THERMOSTAT_IS_OFF, p.Type);
            Assert.Equal("The thermostat is off, cannot turn on due to safety reasons", p.Message);
        }
Exemple #13
0
        public ErrorsMiddleware(OwinMiddleware next, IErrorsInbox inbox, string prefix)
            : base(next)
        {
            Router.Build(builder => builder

                         .WithPrefix(prefix)

                         .ForRoute("post-error", route => route
                                   .Post(async(environment, keys, form) =>
            {
                var errorText = Encoding.UTF8.GetString(Convert.FromBase64String(form.Get("error")));
                var sourceId  = RetrieveSourceId(form);
                var errorId   = form.Get("errorId");
                var infoUrl   = form.Get("infoUrl");

                var payload = new ErrorPayload(sourceId, JsonConvert.DeserializeObject <Error>(errorText), errorId, infoUrl);

                await inbox.Post(payload);

                return(payload);
            })
                                   )
                         );
        }
Exemple #14
0
        public void ResponseCreation_GeneralError_Test()
        {
            SmartHomeRequest  request  = JsonConvert.DeserializeObject <SmartHomeRequest>(SET_T_TEMPERATURE_TRIPLEMODE_REQUEST);
            SmartHomeResponse response = SmartHomeResponse.CreateErrorResponse(request.Directive.Header, ErrorTypes.THERMOSTAT_IS_OFF);

            Assert.Null(response.Context);
            Assert.NotNull(response.Event);
            Assert.Equal(typeof(Event), response.Event.GetType());
            Event e = response.Event as Event;

            TestFunctionsV3.CheckResponseCreatedBaseHeader(e.Header, request.Directive.Header, Namespaces.ALEXA_THERMOSTATCONTROLLER, HeaderNames.ERROR_RESPONSE);
            Assert.Null(e.Endpoint);
            e.Endpoint = new Endpoint("endpoint-001", new NET.JsonObjects.Scopes.BearerToken("access-token-from-Amazon"));
            Assert.NotNull(e.Payload);
            Assert.Equal(typeof(ErrorPayload), response.GetPayloadType());
            ErrorPayload p = response.Event.Payload as ErrorPayload;

            Assert.Equal(ErrorTypes.THERMOSTAT_IS_OFF, p.Type);
            Assert.Null(p.Message);
            Assert.Throws <JsonSerializationException>(() => JsonConvert.SerializeObject(response));
            p.Message = "The thermostat is off, cannot turn on due to safety reasons";
            Assert.NotNull(JsonConvert.SerializeObject(response));
            Util.Util.WriteJsonToConsole("GeneralErrorThermostat", response);
        }
Exemple #15
0
 public Task Post(ErrorPayload payload)
 {
     return(_errorsBacklog
            .Store(payload)
            .ContinueWith(_ => _queue.Add(payload)));
 }
Exemple #16
0
 public void Error(ErrorPayload payload)
 {
 }
Exemple #17
0
 public void Error(string user, ErrorPayload payload)
 {
     ErrorsHub.Error(user, payload);
 }
Exemple #18
0
 public static void Error(string user, ErrorPayload payload)
 {
     GlobalHost.ConnectionManager.GetHubContext <ErrorsHub>().Clients.User(user).error(payload);
 }
 internal void RaiseError(ErrorPayload payload)
 {
     RaiseError(payload.ToSharedErrorEventsArgs());
 }
 public Task Store(ErrorPayload payload)
 {
     return(Task.Factory.StartNew(() => _errors.Add(payload)));
 }
 public void Error(ErrorPayload payload)
 {
     _context.Clients.All.Error(payload);
 }
 internal void RaiseError(ErrorPayload payload)
 {
     RaiseError(payload.ToSharedErrorEventsArgs());
 }
Exemple #23
0
 public Task Post(ErrorPayload payload)
 {
     return(_errorsBacklog
            .Store(payload)
            .ContinueWith(_ => _errors.OnNext(payload)));
 }
Exemple #24
0
 public void Error(ErrorPayload payload)
 {
     Clients.Others.error(payload);
 }
Exemple #25
0
 public void Error(ErrorPayload payload)
 {
     _proxy.Invoke("Error", payload);
 }
Exemple #26
0
 public Task Store(ErrorPayload payload)
 {
     return(Task.FromResult((object)null));
 }