Ejemplo n.º 1
0
        public override void SetUp()
        {
            base.SetUp();

            stream     = new MemoryStream();
            serializer = Mocks.CreateMock <IActionScriptSerializer>();
            input      = new AMFDataInput(stream, serializer);
        }
Ejemplo n.º 2
0
        private object FromAMF(byte[] bytes)
        {
            IActionScriptSerializer serializer = serializerFactory.CreateSerializer();
            MemoryStream            stream     = new MemoryStream(bytes);
            AMFDataInput            dataInput  = new AMFDataInput(stream, serializer);

            dataInput.BeginObjectStream();
            IASValue asValue = dataInput.ReadObject();

            dataInput.EndObjectStream();
            object nativeValue = serializer.ToNative(asValue, null);

            return(nativeValue);
        }
Ejemplo n.º 3
0
            protected override IEnumerable <Step> GetSteps()
            {
                // Set properties from context.
                context.Request.IsSecureConnection = context.HttpContext.Request.IsSecureConnection;

                // Read the AMF message and prepare the response context.
                AMFDataInput dataInput         = new AMFDataInput(context.HttpContext.Request.InputStream, context.Serializer);
                AMFMessage   amfRequestMessage = AMFMessageReader.ReadAMFMessage(dataInput);

                context.Request.SetMessage(amfRequestMessage);
                context.Response.PrepareResponseMessage(amfRequestMessage);

                // Process all message bodies.
                foreach (AMFBody requestBody in amfRequestMessage.Bodies)
                {
                    object nativeContent;
                    try
                    {
                        nativeContent = context.Serializer.ToNative(requestBody.Content, null);
                    }
                    catch (Exception ex)
                    {
                        context.Response.AddErrorResponse(requestBody.ResponseTarget,
                                                          "An error occurred while deserializing the request body.", ex);
                        continue;
                    }

                    if (requestBody.RequestTarget == "null")
                    {
                        IMessage requestMessage = nativeContent as IMessage;
                        if (requestMessage == null)
                        {
                            object[] array = nativeContent as object[];
                            if (array != null)
                            {
                                requestMessage = array[0] as IMessage;
                            }

                            if (requestMessage != null)
                            {
                                IAsyncResult result;
                                try
                                {
                                    result = messageBroker.BeginProcessRequest(context, requestMessage, OnAsyncResultCallbackResume, null);
                                }
                                catch (Exception ex)
                                {
                                    ErrorMessage errorMessage = ErrorMessage.CreateErrorResponse(requestMessage,
                                                                                                 "An error occurred while the message broker was processing the message.",
                                                                                                 "Gateway.MessageBroker.BeginProcessRequestFailed",
                                                                                                 ex);

                                    context.Response.AddErrorResponse(requestBody.ResponseTarget, errorMessage);
                                    continue;
                                }

                                yield return(new Step("Waiting for message broker."));

                                try
                                {
                                    IMessage responseMessage = messageBroker.EndProcessRequest(result);
                                    context.Response.AddResultResponse(requestBody.ResponseTarget, responseMessage);
                                }
                                catch (Exception ex)
                                {
                                    ErrorMessage errorMessage = ErrorMessage.CreateErrorResponse(requestMessage,
                                                                                                 "An error occurred while the message broker was processing the message.",
                                                                                                 "Gateway.MessageBroker.EndProcessRequestFailed",
                                                                                                 ex);

                                    context.Response.AddErrorResponse(requestBody.ResponseTarget, errorMessage);
                                }

                                continue;
                            }
                        }
                    }

                    // Don't know what to do with this message.
                    context.Response.AddErrorResponse(requestBody.ResponseTarget,
                                                      String.Format(CultureInfo.CurrentCulture,
                                                                    "Received a message for unsupported request target '{0}'.", requestBody.RequestTarget), null);
                }

                // Generate the response.
                AMFDataOutput dataOutput = new AMFDataOutput(context.HttpContext.Response.OutputStream, context.Serializer);

                AMFMessageWriter.WriteAMFMessage(dataOutput, context.Response.Message);

                context.HttpContext.Response.ContentType = AMFContentType;
                context.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
                yield break;
            }