public async Task <IActionResult> OnPostQueryAsync() { try { HttpClient httpclient = clientFactory.CreateClient(); SubmissionsClient client = new SubmissionsClient(httpclient); ProgrammingLanguage?lang = null; if (!string.IsNullOrEmpty(PostData.QueryLanguage)) { lang = Enum.Parse <ProgrammingLanguage>(PostData.QueryLanguage); } JudgeState?state = null; if (!string.IsNullOrEmpty(PostData.QueryJudgeState)) { state = Enum.Parse <JudgeState>(PostData.QueryJudgeState); } Core.Submissions.SubmissionMetadata[] ms = (await client.QueryAsync(PostData.Id, PostData.ProblemId, PostData.UserId, lang, state)).ToArray(); List <SubmissionModel> ss = new List <SubmissionModel>(); foreach (Core.Submissions.SubmissionMetadata v in ms) { ss.Add(await SubmissionModel.GetAsync(v, httpclient)); } Submissions = ss; } catch { Submissions = Array.Empty <SubmissionModel>(); } return(Page()); }
public static async Task <SubmissionModel> GetAsync(SubmissionMetadata metadata, HttpClient client) { SubmissionModel res = new SubmissionModel { Metadata = metadata }; try { SubmissionsClient scli = new SubmissionsClient(client); res.Result = await scli.GetResultAsync(metadata.Id); } catch { res.Result = new SubmissionResult { State = JudgeState.Pending }; } try { SubmissionsClient scli = new SubmissionsClient(client); using (FileResponse file = await scli.GetCodeAsync(metadata.Id)) using (StreamReader sr = new StreamReader(file.Stream)) res.Code = await sr.ReadToEndAsync(); } catch { res.Code = "<Loading error>."; } try { ProblemsClient pcli = new ProblemsClient(client); res.Problem = await pcli.GetAsync(metadata.ProblemId); } catch { res.Problem = new ProblemMetadata { Id = res.Metadata.ProblemId, Name = $"Not found: {res.Metadata.ProblemId}" }; } try { UsersClient ucli = new UsersClient(client); res.User = await ucli.GetAsync(metadata.UserId); } catch { res.User = new UserMetadata { Id = res.Metadata.UserId, Name = $"Not found: {res.Metadata.UserId}" }; } return(res); }
public async Task <IActionResult> OnPostDownloadCodeAsync() { if (!ModelState.IsValid) { return(BadRequest()); } HttpClient httpclient = clientFactory.CreateClient(); SubmissionsClient client = new SubmissionsClient(httpclient); try { FileResponse file = await client.GetCodeAsync(PostData.Id); return(File(file.Stream, "text/plain", $"{PostData.Id}.{ProgrammingLanguageHelper.Extends[PostData.Language]}")); } catch { return(NotFound()); } }
public async Task <IActionResult> OnPostSubmitAsync() { if (!ModelState.IsValid) { return(BadRequest()); } HttpClient httpclient = clientFactory.CreateClient(); SubmissionsClient client = new SubmissionsClient(httpclient); try { Core.Submissions.SubmissionMetadata meta = await client.SubmitAsync(PostData.SubmitData); return(RedirectToPage("/Submissions/View", new { id = meta.Id })); } catch { return(NotFound()); } }
public async Task OnGetAsync() { HttpClient httpclient = clientFactory.CreateClient(); SubmissionsClient client = new SubmissionsClient(httpclient); try { List <Core.Submissions.SubmissionMetadata> ms = (await client.GetAllAsync()).ToList(); ms.Sort((x, y) => y.Time.CompareTo(x.Time)); List <SubmissionModel> ss = new List <SubmissionModel>(); foreach (Core.Submissions.SubmissionMetadata v in ms) { ss.Add(await SubmissionModel.GetAsync(v, httpclient)); } Submissions = ss; } catch { Submissions = Array.Empty <SubmissionModel>(); } }
public async Task <IActionResult> OnGetAsync(string id) { if (string.IsNullOrEmpty(id)) { return(NotFound()); } HttpClient httpclient = clientFactory.CreateClient(); SubmissionsClient client = new SubmissionsClient(httpclient); try { Core.Submissions.SubmissionMetadata metadata = await client.GetAsync(id); Submission = await SubmissionModel.GetAsync(metadata, httpclient); } catch { return(NotFound()); } return(Page()); }
public async Task <IActionResult> OnPostDeleteAsync() { if (await GetModifyAuthorization() == false) { return(Forbid()); } if (!ModelState.IsValid) { return(BadRequest()); } HttpClient httpclient = clientFactory.CreateClient(); SubmissionsClient client = new SubmissionsClient(httpclient); try { await client.DeleteAsync(PostData.Id); return(RedirectToPage("./Index")); } catch { return(NotFound()); } }