public IHttpActionResult CodeAnswerCheck(CodeAnswerDTO codeAnswerDTO) { try { CSharpCodeProvider provider = new CSharpCodeProvider(); CompilerParameters cp = new CompilerParameters { GenerateInMemory = true, }; string code = codeAnswerDTO.CodeAnswerText; CompilerResults compileResult = provider.CompileAssemblyFromSource(cp, code); if (compileResult.Errors.Count > 0) { codeAnswerDTO.CodeAnswerText = "ERROR\r\n"; compileResult.Errors.Cast <CompilerError>().ToList() .ForEach(error => codeAnswerDTO.CodeAnswerText += error.ErrorText + "\r\n"); codeAnswerDTO.IsRight = false; } else { codeAnswerDTO.CodeAnswerText = "Compile succeeded \r\n"; CodeAnswerTests codeAnswerTests = new CodeAnswerTests(); bool isAnswerRight = codeAnswerTests.IsAnswerRight(codeAnswerDTO.CardId, compileResult); if (isAnswerRight) { codeAnswerDTO.CodeAnswerText += "Your answer is correct"; codeAnswerDTO.IsRight = true; } else { codeAnswerDTO.CodeAnswerText += "Your answer is uncorrect"; codeAnswerDTO.IsRight = false; } } return(Ok(codeAnswerDTO)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public JsonResult Compile(CodeRequestDTO codeRequest) { try { IOrangeLanguage dstLanguage = compiler.GetConcreteLanguageImplementation(codeRequest.DstLanguage); string compiledCode = compiler.Compile(dstLanguage, codeRequest.Code); CodeAnswerDTO translatedCode = new CodeAnswerDTO(compiledCode); return(Json(translatedCode)); } catch (Exception ex) { // Log something somewhere ...maybe later return(Json(new CodeAnswerDTO("Error", ex.Message))); } }