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(); } }
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(); }
private void OnHttpRequestFailed(object sender, HttpEventArgs e) { Request req = e.Request.Context as Request; e.Request.Context = null; ResponseRequest(req); }
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(); }
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(); }
internal void FireResponseHead(WebHeaderCollection headerCollection) { EventHandler <HttpEventArgs> handler = GetResponseHeadCollection; if (handler != null) { HttpEventArgs eventArgs = new HttpEventArgs(headerCollection); handler.Invoke(null, eventArgs); } }
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(); } }
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(); }
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(); }
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(); }
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(); }
/// <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(); }
protected void OnMessageResent(object sender, HttpEventArgs args) { if (MessageResent != null) MessageResent(sender, args); }
public abstract void onPost(object sender, HttpEventArgs e);
protected void OnTimeout(object sender, HttpEventArgs args) { if (Timeout != null) Timeout(sender, args); }
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); }
private void HttpEventFunctionGetWithDemoURL2(object t_Sender, HttpEventArgs t_HttpEventArgs) { Debug.Log(@"https://m.baidu.com" + "通过事件池的形式监听的Http Get 请求返回数据的事件: " + t_HttpEventArgs.HttpResponseData.StringData); }
public override void onPost(object sender, HttpEventArgs e) { throw new NotImplementedException(); }
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); }
private void OnTimeout(HttpEventArgs args) { OnTimeout(this, args); }
protected abstract void onPost(object sender, HttpEventArgs e);
public abstract void onOptions(object sender, HttpEventArgs e);
protected override void onGet(object sender, HttpEventArgs e) { e.response.OutputStream.Write(Encoding.UTF8.GetBytes(typeinfo), 0, typeinfo.Length); e.response.Close(); }
private void OnProcessRequest(HttpEventArgs e) { if (ProcessRequest != null) { ProcessRequest(this, e); } }
protected override void onPut(object sender, HttpEventArgs e) { throw new NotImplementedException(); }
public override void onPut(object sender, HttpEventArgs e) { PutHandler.handleRequest(e, Route, processReceivedGraph); }