/// <summary> /// /// </summary> /// <param name="requestObj"></param> /// <param name="injectFilePath"></param> public void SendLocalFileToClient(RequestObj requestObj, InstructionParams parameters) { if (requestObj == null) { throw new ProxyWarningException("Request object is invalid"); } if (parameters == null) { throw new ProxyWarningException("Parameters object is invalid"); } string injectFilePath = parameters.Data; if (string.IsNullOrEmpty(injectFilePath)) { throw new ProxyWarningException("Inject file is invalid"); } byte[] fileData = File.ReadAllBytes(injectFilePath); string redirectHeader = Header.SendFile.GetHeader(injectFilePath, fileData.Count(), requestObj.ClientRequestObj.RequestLine.NewlineString); byte[] redirectDataByteArray = Encoding.UTF8.GetBytes(redirectHeader); this.tcpClientConnection.SendToClient(redirectDataByteArray, requestObj.ClientRequestObj.ClientBinaryWriter); this.tcpClientConnection.SendToClient(fileData, requestObj.ClientRequestObj.ClientBinaryWriter); }
/// <summary> /// Initializes a new instance of the <see cref="PluginInstruction"/> class. /// /// </summary> public PluginInstruction() { this.Instruction = Instruction.DoNothing; this.InstructionParameters = new InstructionParams(); this.InstructionParameters.Url = string.Empty; this.InstructionParameters.Status = string.Empty; this.InstructionParameters.Data = string.Empty; this.InstructionParameters.HttpHeaders = new List <string>(); }
/// <summary> /// Initializes a new instance of the <see cref="PluginInstruction"/> class. /// /// </summary> /// <param name="instruction"></param> /// <param name="url"></param> /// <param name="status"></param> /// <param name="data"></param> /// <param name="httpHeaders"></param> public PluginInstruction(Instruction instruction, string url, string status, string data, List <string> httpHeaders) { this.Instruction = instruction; this.InstructionParameters = new InstructionParams(); this.InstructionParameters.Url = url; this.InstructionParameters.Status = status; this.InstructionParameters.Data = data; this.InstructionParameters.HttpHeaders = httpHeaders; }
/// <summary> /// /// </summary> /// <param name="requestObj"></param> /// <param name="redirectUrl"></param> public void Redirect(RequestObj requestObj, InstructionParams parameters) { if (requestObj == null) { throw new ProxyWarningException("Request object is invalid"); } if (string.IsNullOrEmpty(parameters.Data)) { throw new ProxyWarningException("Redirect URL is invalid"); } string redirectData = Header.Redirect.GetHeader(parameters.Status, parameters.StatusDescription, parameters.Data, requestObj.ClientRequestObj.RequestLine.NewlineString); byte[] redirectDataByteArray = Encoding.UTF8.GetBytes(redirectData); this.tcpClientConnection.SendToClient(redirectDataByteArray, requestObj.ClientRequestObj.ClientBinaryWriter); }
public JsonResult ProcessInstructions(InstructionParams obj) { try { var processLocation = new ProcessLocation(); var robot = processLocation.Parse(obj.InitialPositionX, obj.InitialPositionY, obj.InitialDirection); IEnumerable <IMove> robotMoves = ProcessMoves.Parse(obj.MovingInstructions); int totalPenalty = 0; foreach (var item in robotMoves) { item.ExecuteOn(robot, out int penalty); if (penalty > 0) { totalPenalty++; } } var result = new ProcessOutput { EndPositionX = robot.Coordinate.X.ToString(), EndPositionY = robot.Coordinate.Y.ToString(), EndDirection = robot.Direction.ToString(), Penalties = totalPenalty.ToString() }; return(Json(result, JsonRequestBehavior.AllowGet)); } catch (System.Exception ex) { return(Json(null, JsonRequestBehavior.AllowGet)); } }