Beispiel #1
0
        public override void onPost(object sender, HttpEventArgs e)
        {
            HttpListenerRequest request = e.request;

            try
            {
                if (request.ContentType.Equals("application/json"))
                {
                    using (Stream input = request.InputStream)
                    {
                        using (StreamReader reader = new StreamReader(input, Encoding.UTF8))
                        {
                            string receivedData = reader.ReadToEnd();
                            var    deserialized = JsonConvert.DeserializeObject <T>(receivedData);
                            Value = deserialized;
                        }
                    }
                }
                else if (request.ContentType.Equals("application/xml"))
                {
                    Value = (T)xmlSerializer.Deserialize(request.InputStream);
                }
                e.response.StatusCode = 204;
                e.response.Close();
            }
            catch (Exception ex)
            {
                e.response.StatusCode = 500;
                string genericError = "Something went wrong when processing the request.";
                e.response.OutputStream.Write(Encoding.UTF8.GetBytes(genericError), 0, genericError.Length);
                e.response.Close();
            }
        }
Beispiel #2
0
        public override void onGet(object sender, HttpEventArgs e)
        {
            HttpListenerRequest  request  = e.request;
            HttpListenerResponse response = e.response;

            System.IO.StringWriter stringWriter = new System.IO.StringWriter();
            string valueAsString = "";

            if (request.AcceptTypes.Contains("application/xml"))
            {
                xmlSerializer.Serialize(stringWriter, _value);
                valueAsString        = stringWriter.ToString();
                response.ContentType = "application/xml";
            }
            else if (request.AcceptTypes.Contains("application/json"))
            {
                valueAsString        = JsonConvert.SerializeObject(_value);
                response.ContentType = "application/json";
            }
            else if (request.AcceptTypes.Contains("text/turtle"))
            {
                CompressingTurtleWriter ttlWriter = new CompressingTurtleWriter();
                ttlWriter.Save(RDFGraph, stringWriter);
                valueAsString        = stringWriter.ToString();
                response.ContentType = "text/turtle";
            }
            response.OutputStream.Write(Encoding.UTF8.GetBytes(valueAsString), 0, valueAsString.Length);
            response.Close();
        }
Beispiel #3
0
        private void OnHttpRequestFailed(object sender, HttpEventArgs e)
        {
            Request req = e.Request.Context as Request;

            e.Request.Context = null;
            ResponseRequest(req);
        }
Beispiel #4
0
        public static void handleRequest(HttpEventArgs e, string Route, Action <Graph> resultProcessor)
        {
            string responseString = "";

            if (e.request.ContentType.Equals("text/turtle"))
            {
                try
                {
                    handleTurtle(e.request.InputStream, resultProcessor);
                    e.response.StatusCode = 201;
                    responseString        = Route;
                }
                catch (Exception ex)
                {
                    e.response.StatusCode = 500;
                    responseString        = "Could not process provided data. Reason: " + ex.Message;
                }
            }
            else
            {
                responseString        = "Provided MIME type is not supported. Expected text/turtle as Content-Type.";
                e.response.StatusCode = 415;
            }
            e.response.OutputStream.Write(Encoding.UTF8.GetBytes(responseString), 0, responseString.Length);
            e.response.OutputStream.Close();
        }
Beispiel #5
0
        protected override void onGet(object sender, HttpEventArgs e)
        {
            string graphAsTTL = graph.GetTTL();

            e.response.OutputStream.Write(Encoding.UTF8.GetBytes(graphAsTTL), 0, graphAsTTL.Length);
            e.response.OutputStream.Flush();
            e.response.OutputStream.Close();
        }
Beispiel #6
0
        internal void FireResponseHead(WebHeaderCollection headerCollection)
        {
            EventHandler <HttpEventArgs> handler = GetResponseHeadCollection;

            if (handler != null)
            {
                HttpEventArgs eventArgs = new HttpEventArgs(headerCollection);
                handler.Invoke(null, eventArgs);
            }
        }
Beispiel #7
0
        public override void onOptions(object sender, HttpEventArgs e)
        {
            writer.Save(SubscriptionDescription, sw);
            string graphAsString = sw.ToString();

            e.response.StatusCode = 200;
            e.response.OutputStream.Write(Encoding.UTF8.GetBytes(graphAsString), 0, graphAsString.Length);
            e.response.ContentType = "text/turtle";
            e.response.OutputStream.Flush();
            e.response.OutputStream.Close();
        }
        private void server_Request(object sender, HttpEventArgs e)
        {
            Debug.WriteLine("server_Request");
            String str = InterpretCommand(sender, e);

            Server.SendResponse(e.P, str);

            if (cancellationRequest)
            {
                shutDown();
            }
        }
Beispiel #9
0
        protected override void onGet(object sender, HttpEventArgs e)
        {
            HttpListenerRequest  request  = e.request;
            HttpListenerResponse response = e.response;

            System.IO.StringWriter  stringWriter = new System.IO.StringWriter();
            CompressingTurtleWriter ttlWriter    = new CompressingTurtleWriter();

            ttlWriter.Save(RDFGraph, stringWriter);
            string graph = stringWriter.ToString();

            response.OutputStream.Write(Encoding.UTF8.GetBytes(graph), 0, graph.Length);
            response.Close();
        }
Beispiel #10
0
        public void webserver_ProcessRequest(object sender, HttpEventArgs e)
        {
            HttpEventArgs args = e as HttpEventArgs;
            var context = args.Context;

            HttpListenerRequest request  = context.Request;
            HttpListenerResponse response = context.Response;
            byte[] buff;
            try
            {
                    var data = datasource.GetData();
                    buff = Encoding.UTF8.GetBytes(string.Join(Environment.NewLine, data));
                    response.StatusCode = (int)HttpStatusCode.OK;
                    response.StatusDescription = "OK";
            }
            catch(Exception ex)
            {
                buff = Encoding.UTF8.GetBytes(ex.Message);
                response.StatusCode = (int)HttpStatusCode.InternalServerError;
                response.StatusDescription = "Internal Server Error";
            }

            response.ContentType = datasource.ContentType;
            response.ProtocolVersion = new Version("1.1");
            response.KeepAlive = false;

            response.OutputStream.Write(buff, 0, buff.Length);

            try
            {
                Log.Log("{0} - {1} [{2}] \"{3} {4} HTTP/{5}\" {6} {7}",
                    request.RemoteEndPoint.Address,
                    context.User == null ? "-":context.User.ToString(),
                    DateTime.Now.ToString("dd/MM/yyyy:HH:mm:ss zzz"),
                    request.HttpMethod,
                    request.Url.AbsolutePath,
                    request.ProtocolVersion,
                    response.StatusCode,
                    buff.Length);
            }
            catch (Exception ex)
            {
                Log.Log(ex.ToString());
            }
            response.Close();
        }
Beispiel #11
0
        protected void onSparql(HttpEventArgs e)
        {
            string       query = e.request.QueryString.Get("query");
            StreamWriter w     = new StreamWriter(e.response.OutputStream);

            try
            {
                var result = SparqlExecutor.PerformQuery(query, completeGraph.RDFGraph);
                e.response.ContentType = "application/json";
                e.response.StatusCode  = 200;
                w.Write(JsonConvert.SerializeObject(result));
            }
            catch (Exception ex)
            {
                string errorMessage = "Provided query produced an error: " + ex.Message;
                e.response.StatusCode = 400;
                w.Write(errorMessage);
            }
            w.Flush();
            e.response.OutputStream.Close();
        }
Beispiel #12
0
        public override void onGet(object sender, HttpEventArgs e)
        {
            if (e.request.QueryString.Get("query") != null)
            {
                onSparql(e);
            }

            string graphAsTTL;
            string entailment = e.request.QueryString.Get("entailment");

            if (entailment != null && entailment.Equals("complete"))
            {
                graphAsTTL = completeGraph.GetTTL();
            }
            else
            {
                graphAsTTL = graph.GetTTL();
            }
            e.response.OutputStream.Write(Encoding.UTF8.GetBytes(graphAsTTL), 0, graphAsTTL.Length);
            e.response.OutputStream.Flush();
            e.response.OutputStream.Close();
        }
Beispiel #13
0
        /// <summary>
        /// POST Endpoint accepts a valid turtle snippet that specifies containment of entities in a remote endpoint,
        /// comparable to the RDF-Graph in ttl that the Entity Collection Datapoint produces upon a GET request.
        /// Example for a valid Turtle-RDF:
        ///
        /// @prefix ldp: <http://www.w3.org/ns/ldp#>.  // Prefix needs to be included to allow parsing
        ///
        /// <http://host:port/base-path/> ldp:contains <http://host:port/base-path/entity-path>
        ///
        /// The above snippet will lead to the EntityCollectionDatapoint contain the triples
        /// <collectionDataPoint> rdf:seeAlso <http://host:port/base-path/> .
        /// <collectionDataPoint> foaf:knows <http://host:port/base-path/entity-path> .
        ///
        /// These triples express that information about additional entities can be retrieved from the remote host.
        /// The local EntityCollection is aware of more entities, which are hosted on remote hosts, but of which data is
        /// not present in the local dataset.
        /// </summary>
        public override void onPost(object sender, HttpEventArgs e)
        {
            e.response.StatusCode = 201;
            string returnMessage = "Object created";

            if (e.request.ContentType.Contains("text/turtle"))
            {
                try
                {
                    var receivedGraph = parseTurtle(new Graph(), e.request.InputStream);
                    processGraph(receivedGraph);
                }
                catch (Exception ex)
                {
                    e.response.StatusCode = 400;
                    returnMessage         = "Could not process the supplied turtle code. Exception: " + ex.Message;
                }
            }

            e.response.OutputStream.Write(Encoding.UTF8.GetBytes(returnMessage), 0, returnMessage.Length);
            e.response.OutputStream.Close();
        }
Beispiel #14
0
 protected void OnMessageResent(object sender, HttpEventArgs args)
 {
     if (MessageResent != null) MessageResent(sender, args);
 }
Beispiel #15
0
 public abstract void onPost(object sender, HttpEventArgs e);
Beispiel #16
0
 protected void OnTimeout(object sender, HttpEventArgs args)
 {
     if (Timeout != null) Timeout(sender, args);
 }
Beispiel #17
0
 protected void OnQuotaExceeded(object sender, HttpEventArgs args)
 {
     if (QuotaExceeded != null) QuotaExceeded(sender, args);
 }
        /// <summary>
        ///     Passes the command with the provided ID on to the device.
        ///     <param name="sender">The object which triggered the event.</param>
        ///     <param name="args">Parameter needed for the interpretation.</param>
        /// </summary>
        public String InterpretCommand(object sender, HttpEventArgs args)
        {
            String devId = args.Dev;
            String cmd   = args.Cmd;
            String value = args.Val;
            Dictionary <String, String> parameters = json_paramReader.deserializeValueDict(value);
            JsonResponse response = new JsonResponse();
            String       wlanAdr  = args.ClientIp;
            String       lang     = args.Language;

            User    user    = Data.GetUserByIp(wlanAdr);
            Device  device  = null;
            String  retStr  = "";
            String  msg     = "";
            Boolean success = false;

            String paramDevId;



            if (Thread.CurrentThread.CurrentCulture.Name != lang)
            {
                Thread.CurrentThread.CurrentCulture   = new System.Globalization.CultureInfo(lang);
                Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(lang);
            }


            if (cmd != "popup" && cmd != "pollDevice")
            {
                logger.enqueueEntry(String.Format("Command arrived! devID: {0}; cmdID: {1}; value: {2}; wlanAdr: {3}", devId, cmd, value, wlanAdr));
            }

            if (devId == "server")
            {
                // return JSON formatted message
                args.P.WriteSuccess("application/json");


                response.addCmd(cmd);

                switch (cmd)
                {
                case "addUser":

                    AddUser(wlanAdr, out success);
                    if (Data.GetUserByIp(wlanAdr) != null)
                    {
                        if (Tracker.isKinectAvailable())
                        {
                            response.addTrackingId(SkeletonIdToUser(wlanAdr));
                        }
                        else
                        {
                            msg = Properties.Resources.NoKinAvailable;
                        }
                    }

                    break;

                case "close":
                    success = DelUser(wlanAdr);
                    if (!success)
                    {
                        msg = Properties.Resources.UserNotExists;
                    }
                    break;

                case "activateGestureCtrl":
                    if (!Tracker.isKinectAvailable())
                    {
                        msg = Properties.Resources.NoKinAvailable;
                        break;
                    }

                    if (user != null)
                    {
                        int id = SkeletonIdToUser(wlanAdr);

                        if (id >= 0)
                        {
                            success = true;
                        }
                        else if (id == UserTracker.NO_GESTURE_FOUND)
                        {
                            msg = Properties.Resources.NoGestureFound;
                        }
                        else if (id == UserTracker.NO_BODIES_IN_FRAME)
                        {
                            msg = Properties.Resources.NoUserInImage;
                        }

                        // attach tracking state
                        response.addTrackingId(id);
                        break;
                    }

                    if (!success)
                    {
                        msg = Properties.Resources.GesturecontrolError;
                    }

                    break;

                case "pollDevice":
                case "selectDevice":
                    if (!Tracker.isKinectAvailable())
                    {
                        msg = Properties.Resources.NoKinAvailable;
                        break;
                    }

                    if (user == null || !user.TrackingState)
                    {
                        msg = Properties.Resources.RegistrationRequest;
                        break;
                    }

                    List <Device> foundDevices = coreMethods.chooseDevice(user);
                    if (foundDevices.Count > 0)
                    {
                        success = true;
                    }

                    response.addDevices(foundDevices);
                    break;


                case "list":


                    Data.updateRepoDevices();
                    response.addDevices(Data.getCompleteDeviceList());
                    success = true;
                    break;

                case "discoverDevices":
                    success = true;
                    // Data.newDevices = discoverDevices();
                    response.addDevices(Data.newDevices);
                    break;

                case "addDevice":
                    if (parameters == null)
                    {
                        msg = Properties.Resources.NoValues;
                        break;
                    }

                    msg     = AddDevice(parameters);
                    success = true;

                    break;

                //case "addDeviceFromList":
                //    // find device in newDevices list
                //    if (parameters == null)
                //    {
                //        msg = Properties.Resources.NoValues;
                //        break;
                //    }

                //    if(!json_paramReader.getDevID(parameters, out paramDevId))
                //    {
                //        msg = paramDevId;
                //        break;
                //    }

                //    device = Data.newDevices.Find(d => d.Id.Equals(paramDevId));

                //    if (device != null)
                //    {
                //        success = true;
                //        if (!json_paramReader.getDevName(parameters, out paramDevName))
                //        {
                //            msg = paramDevName;
                //            break;
                //        }
                //        String type = device.GetType().Name;

                //        String newDeviceId = AddDevice(type, "", paramDevName, device.Path);

                //        // remove from new devices list
                //        Data.newDevices.Remove(device);
                //        response.addDeviceId(newDeviceId);
                //    }

                //    break;

                case "resetDeviceVectorList":

                    if (parameters == null)
                    {
                        msg = Properties.Resources.NoValues;
                        break;
                    }

                    if (!json_paramReader.getDevID(parameters, out paramDevId))
                    {
                        msg = paramDevId;
                        break;
                    }

                    device = Data.getDeviceByID(paramDevId);

                    if (device == null)
                    {
                        msg = Properties.Resources.NoDevFound;
                        break;
                    }

                    success = true;
                    device.skelPositions.Clear();

                    //attach vector numbers
                    response.addVectorMinAndCount(device.skelPositions.Count, coreMethods.getMinVectorsPerDevice());
                    break;

                case "addDeviceVector":

                    if (parameters == null)
                    {
                        msg = Properties.Resources.NoValues;
                        break;
                    }

                    if (!json_paramReader.getDevID(parameters, out paramDevId))
                    {
                        msg = paramDevId;
                        break;
                    }

                    device = Data.getDeviceByID(paramDevId);

                    if (device == null)
                    {
                        msg = Properties.Resources.NoDevFound;
                        break;
                    }

                    if (user == null || !user.TrackingState)
                    {
                        msg = Properties.Resources.RegistrationRequest;
                        break;
                    }

                    success = true;
                    msg     = addDeviceVector(device, user);

                    //attach vector numbers
                    response.addVectorMinAndCount(device.skelPositions.Count, coreMethods.getMinVectorsPerDevice());
                    break;

                case "setDevicePosition":

                    if (parameters == null)
                    {
                        msg = Properties.Resources.NoValues;
                        break;
                    }

                    if (!json_paramReader.getDevID(parameters, out paramDevId))
                    {
                        msg = paramDevId;
                        break;
                    }

                    device = Data.getDeviceByID(paramDevId);

                    if (device == null)
                    {
                        msg = Properties.Resources.NoDevFound;
                        break;
                    }

                    success = true;
                    msg     = coreMethods.train(device);
                    break;

                case "deleteDevice":

                    if (!json_paramReader.getDevID(parameters, out paramDevId))
                    {
                        msg = Properties.Resources.DevNotFoundDeletion;
                        break;
                    }

                    device = Data.getDeviceByID(paramDevId);

                    if (device == null)
                    {
                        msg = Properties.Resources.DevNotFoundDeletion;
                        break;
                    }

                    msg     = Data.deleteDevice(device.Id);
                    success = true;
                    break;

                case "popup":
                    if (user != null)
                    {
                        success = true;
                        msg     = user.Errors;
                        user.ClearErrors();

                        // attach tracking state
                        response.addTrackingId(user.SkeletonId);
                    }
                    break;
                //TODO: Already implemented but no GUI-Interface for these functionalities
                //case "setPlugwisePath":
                //    success = setPlugwiseComponents(parameters);
                //    if (success)
                //    {
                //        msg = Properties.Resources.PWCompChange;
                //    } else
                //    {
                //        msg = Properties.Resources.UnknownError;
                //    }
                //    break;
                //case "setKinectComponents":
                //    success = setKinectPositionWithDict(parameters);
                //    if (success)
                //    {
                //        msg = Properties.Resources.KinectPlacementChanged;
                //    } else
                //    {
                //        msg = "";
                //    }
                //    break;
                //case "setRoomMeasures":
                //    success = setRoomMeasures(parameters);
                //    if (success)
                //    {
                //        msg = Properties.Resources.RoommeasuresChanged;
                //    } else
                //    {
                //        msg = "";
                //    }
                //    break;


                //TODO: Already implemented but no GUI-Interface for these functionalities
                case "getDeviceTypes":
                    success = true;
                    response.addDeviceTypes(getDeviceTypeJSON());

                    break;
                }
                response.addSuccess(success);
                response.addMsg(msg);



                if ((cmd != "popup" || msg != "") && (cmd != "pollDevice"))
                {
                    logger.enqueueEntry(String.Format("Respronse to '{0}' : {1}", cmd, retStr));
                }

                return(response.serialize());
            }
            else if (Data.getDeviceByID(devId) != null && cmd != null)
            {
                switch (cmd)
                {
                case "getControlPath":

                    response.addReturnString(getControlPagePathHttp(devId));

                    args.P.WriteRedirect(response.getReturnString(), 301);
                    break;

                default:
                    Device dev = Data.getDeviceByID(devId);
                    if (dev.connection != null && NativeTransmittingDevice.checkIfTransmitting(dev))
                    {
                        response.addReturnString(((NativeTransmittingDevice)dev).Transmit(cmd, value));
                    }
                    break;
                }

                logger.enqueueEntry(String.Format("Response to Request {0} : {1} ", cmd, retStr));

                return(response.serialize());
            }
            else
            {
                retStr = Properties.Resources.UnknownError;
                logger.enqueueEntry(String.Format("Response to Request {0} : {1}", cmd, retStr));


                response.addReturnString(retStr);

                return(response.serialize());
            }
        }
        /// <summary>
        ///     Part of the design pattern: observer(HttpEvent).
        ///     Takes place for the update-method in the observer design pattern.
        /// </summary>


        private void server_Post_Request(object sender, HttpEventArgs e)
        {
            String str = "";

            Server.SendResponse(e.P, str);
        }
Beispiel #20
0
 private void HttpEventFunctionGetWithDemoURL2(object t_Sender, HttpEventArgs t_HttpEventArgs)
 {
     Debug.Log(@"https://m.baidu.com" + "通过事件池的形式监听的Http Get 请求返回数据的事件: " + t_HttpEventArgs.HttpResponseData.StringData);
 }
Beispiel #21
0
 public override void onPost(object sender, HttpEventArgs e)
 {
     throw new NotImplementedException();
 }
Beispiel #22
0
 private void HttpEventFunctionPostDemo(object t_Sender, HttpEventArgs t_HttpEventArgs)
 {
     Debug.Log("通过事件池的形式监听的Http Post 请求返回数据的事件: " + t_HttpEventArgs.HttpResponseData.StringData);
 }
 protected override void onGet(object sender, HttpEventArgs e)
 {
     base.onGet(sender, e);
 }
Beispiel #24
0
 private void OnTimeout(HttpEventArgs args)
 {
     OnTimeout(this, args);
 }
 protected abstract void onPost(object sender, HttpEventArgs e);
Beispiel #26
0
 public abstract void onOptions(object sender, HttpEventArgs e);
Beispiel #27
0
 protected override void onGet(object sender, HttpEventArgs e)
 {
     e.response.OutputStream.Write(Encoding.UTF8.GetBytes(typeinfo), 0, typeinfo.Length);
     e.response.Close();
 }
Beispiel #28
0
 private void OnProcessRequest(HttpEventArgs e)
 {
     if (ProcessRequest != null)
     {
         ProcessRequest(this, e);
     }
 }
Beispiel #29
0
 protected override void onPut(object sender, HttpEventArgs e)
 {
     throw new NotImplementedException();
 }
Beispiel #30
0
 public override void onPut(object sender, HttpEventArgs e)
 {
     PutHandler.handleRequest(e, Route, processReceivedGraph);
 }