/// <summary> /// UploadSrgsFile HTTP post handler /// </summary> /// <param name="postData"></param> /// <param name="post"></param> /// <returns></returns> private IEnumerator <ITask> UploadSrgsFileHttpPostHandler(HttpPostRequestData postData, HttpPost post) { string mountPointFileLocation = postData.Parameters["MountPointSaveLocation"]; if (string.IsNullOrEmpty(mountPointFileLocation)) { PostHttpPostParameterError(post, "No mount point save location was specified"); yield break; } HttpPostFile file = postData.Files["SrgsFile"]; if (file == null) { PostHttpPostParameterError(post, "No SRGS file uploaded"); yield break; } // Write file to mount service SuccessFailurePort writerResponsePort = new SuccessFailurePort(); yield return(new IterativeTask(delegate { return WriteFileToMountService( mountPointFileLocation, file.InputStream, writerResponsePort ); })); Exception writeException = (Exception)writerResponsePort; if (writeException != null) { LogWarning(writeException); post.ResponsePort.Post(new HttpResponseType( HttpStatusCode.BadRequest, Fault.FromException(writeException) )); yield break; } // Use newly uploaded file NameValueCollection parameters = new NameValueCollection(); parameters["SrgsFileLocation"] = mountPointFileLocation; yield return(new IterativeTask(delegate { return UseExistingSrgsFileHttpPostHandler( parameters, post ); })); // UseExistingSrgsFileHttpPostHandler already took care of posting // a result on the response port yield break; }
public IEnumerator <ITask> HttpPostHandler(HttpPost post) { HttpPostRequestData request = post.GetHeader <HttpPostRequestData>(); NameValueCollection collection = null; if (request == null) { LogError("No form data available with HttpPost"); } else { collection = request.Parameters; string location = collection["Location"]; if (location != null) { _state.CameraImageLocation = new Uri(location); yield return(Arbiter.Choice( SaveState(_state), delegate(DefaultReplaceResponseType success) { }, delegate(Fault fault) { LogError(null, "Unable to save state", fault); } )); } } yield return(new IterativeTask <HttpListenerContext, PortSet <HttpResponseType, Fault> >( post.Body.Context, post.ResponsePort, HttpHandler )); }
public void HttpPostHandler(HttpPost httpPost) { HttpPostRequestData formData = httpPost.GetHeader <HttpPostRequestData>(); try { DsspOperation operation = formData.TranslatedOperation; if (operation is DriveDistance) { _mainPort.Post((DriveDistance)operation); } else if (operation is SetDrivePower) { _mainPort.Post((SetDrivePower)operation); } else if (operation is RotateDegrees) { _mainPort.Post((RotateDegrees)operation); } else if (operation is EnableDrive) { _mainPort.Post((EnableDrive)operation); } else if (operation is AllStop) { _mainPort.Post((AllStop)operation); } else if (operation is ResetEncoders) { _mainPort.Post((ResetEncoders)operation); } else { NameValueCollection parameters = formData.Parameters; if (parameters["StartDashboard"] != null) { string Dashboardcontract = "http://schemas.microsoft.com/robotics/2006/01/simpledashboard.user.html"; ServiceInfoType info = new ServiceInfoType(Dashboardcontract); cons.Create create = new cons.Create(info); create.TimeSpan = DsspOperation.DefaultShortTimeSpan; ConstructorPort.Post(create); Activate(Arbiter.Choice( create.ResponsePort, delegate(CreateResponse createResponse) { }, delegate(Fault f) { LogError(f); } )); } else if (parameters["DrivePower"] != null) { double power = double.Parse(parameters["Power"]); SetDrivePowerRequest drivepower = new SetDrivePowerRequest(); drivepower.LeftWheelPower = power; drivepower.RightWheelPower = power; _mainPort.Post(new SetDrivePower(drivepower)); } else { throw new InvalidOperationException(); } } HttpPostSuccess(httpPost); } catch { HttpPostFailure(httpPost); } }
public IEnumerator <ITask> HttpPostHandler(HttpPost post) { // Use helper to read form data ReadAllFormData readForm = new ReadAllFormData(post); _httpUtilities.Post(readForm); yield return((Choice)readForm.ResultPort); Exception exception = (Exception)readForm.ResultPort; if (exception != null) { LogError(exception); post.ResponsePort.Post(new HttpResponseType( HttpStatusCode.OK, Fault.FromException(exception) )); yield break; } HttpPostRequestData postData = (HttpPostRequestData)readForm.ResultPort; NameValueCollection parameters = postData.Parameters; string cmd = parameters["cmd"]; if (cmd != null) { cmd = cmd.ToLowerInvariant(); switch (cmd) { case "savedictionary": yield return(new IterativeTask( delegate { return SaveDictionaryHttpPostHandler(parameters, post); } )); yield break; case "uploadsrgsfile": yield return(new IterativeTask( delegate { return UploadSrgsFileHttpPostHandler(postData, post); } )); yield break; case "useexistingsrgsfile": yield return(new IterativeTask( delegate { return UseExistingSrgsFileHttpPostHandler(parameters, post); } )); yield break; } } PostHttpPostParameterError(post, "Unknown post command"); yield break; }