Exemplo n.º 1
0
        public async Task <ActionResult <ProblemMetadata> > Import([FromBody] ProblemPackage data)
        {
            IProblemProvider res = await _workspace.Problems.Create(data.Metadata);

            await res.SetDescription(data.Description);

            if (data.Samples != null)
            {
                foreach (ProblemPackage.TestCasePackage v in data.Samples)
                {
                    ITestCaseProvider item = await res.Samples.Create(v.Metadata);
                    await UpdateIOData(new TestCaseData
                    {
                        Input  = v.Input,
                        Output = v.Output
                    }, item);
                }
            }

            if (data.Tests != null)
            {
                foreach (ProblemPackage.TestCasePackage v in data.Tests)
                {
                    ITestCaseProvider item = await res.Tests.Create(v.Metadata);
                    await UpdateIOData(new TestCaseData
                    {
                        Input  = v.Input,
                        Output = v.Output
                    }, item);
                }
            }

            return(Created($"problems/{res.Id}", await res.GetMetadata()));
        }
Exemplo n.º 2
0
        public async Task <ActionResult <ProblemMetadata> > Create([FromBody] ProblemData data)
        {
            IProblemProvider res = await _workspace.Problems.Create(data.Metadata);

            await res.SetDescription(data.Description);

            if (data.Samples != null)
            {
                foreach (TestCaseData v in data.Samples)
                {
                    ITestCaseProvider item = await res.Samples.Create(v.Metadata);
                    await UpdateIOData(v, item);
                }
            }

            if (data.Tests != null)
            {
                foreach (TestCaseData v in data.Tests)
                {
                    ITestCaseProvider item = await res.Tests.Create(v.Metadata);
                    await UpdateIOData(v, item);
                }
            }

            return(Created($"problems/{res.Id}", await res.GetMetadata()));
        }
Exemplo n.º 3
0
        public async Task <ActionResult <ProblemPackage> > Export(string id)
        {
            IProblemProvider res = await _workspace.Problems.Get(id);

            if (res == null)
            {
                return(NotFound());
            }

            try
            {
                ProblemPackage package = new ProblemPackage
                {
                    Metadata    = await res.GetMetadata(),
                    Description = await res.GetDescription(),
                };

                {
                    List <ProblemPackage.TestCasePackage> ls = new List <ProblemPackage.TestCasePackage>();
                    IEnumerable <ITestCaseProvider>       ss = await res.Samples.GetAll();

                    foreach (ITestCaseProvider s in ss)
                    {
                        ProblemPackage.TestCasePackage t = new ProblemPackage.TestCasePackage
                        {
                            Metadata = await s.GetMetadata(),
                            Input    = await TextIO.ToString(await s.GetInput()),
                            Output   = await TextIO.ToString(await s.GetOutput()),
                        };
                        ls.Add(t);
                    }
                    package.Samples = ls;
                }

                {
                    List <ProblemPackage.TestCasePackage> ls = new List <ProblemPackage.TestCasePackage>();
                    IEnumerable <ITestCaseProvider>       ss = await res.Tests.GetAll();

                    foreach (ITestCaseProvider s in ss)
                    {
                        ProblemPackage.TestCasePackage t = new ProblemPackage.TestCasePackage
                        {
                            Metadata = await s.GetMetadata(),
                            Input    = await TextIO.ToString(await s.GetInput()),
                            Output   = await TextIO.ToString(await s.GetOutput()),
                        };
                        ls.Add(t);
                    }
                    package.Tests = ls;
                }

                return(Ok(package));
            }
            catch
            {
                return(NoContent());
            }
        }
Exemplo n.º 4
0
        public async Task DeleteTest(string id, string tid)
        {
            IProblemProvider res = await _workspace.Problems.Get(id);

            if (res == null)
            {
                return;
            }
            await res.Tests.Delete(tid);
        }
Exemplo n.º 5
0
        public async Task ClearTest(string id)
        {
            IProblemProvider res = await _workspace.Problems.Get(id);

            if (res == null)
            {
                return;
            }
            await res.Tests.Clear();
        }
Exemplo n.º 6
0
        public async Task <ActionResult <ProblemDescription> > GetDescription(string id)
        {
            IProblemProvider res = await _workspace.Problems.Get(id);

            if (res != null)
            {
                return(Ok(await res.GetDescription()));
            }
            else
            {
                return(NotFound());
            }
        }
Exemplo n.º 7
0
        public async Task <ActionResult> UpdateMetadata(string id, [FromBody] ProblemMetadata data)
        {
            IProblemProvider res = await _workspace.Problems.Get(id);

            if (res == null)
            {
                return(NotFound());
            }

            await res.SetMetadata(data);

            return(Accepted());
        }
Exemplo n.º 8
0
        public async Task <ActionResult <TestCaseMetadata> > GetTest(string id, string tid)
        {
            IProblemProvider res = await _workspace.Problems.Get(id);

            if (res != null)
            {
                return(Ok(await(await res.Tests.Get(tid)).GetMetadata()));
            }
            else
            {
                return(NotFound());
            }
        }
Exemplo n.º 9
0
        public async Task <ActionResult <TestCaseMetadata> > CreateTest(string id, [FromBody] TestCaseData data)
        {
            IProblemProvider res = await _workspace.Problems.Get(id);

            if (res == null)
            {
                return(NotFound());
            }
            ITestCaseProvider item = await res.Tests.Create(data.Metadata);

            await UpdateIOData(data, item);

            return(Created($"problems/{res.Id}/tests/{item.Id}", await item.GetMetadata()));
        }
Exemplo n.º 10
0
        public async Task <ActionResult> GetTestOutput(string id, string tid)
        {
            IProblemProvider res = await _workspace.Problems.Get(id);

            if (res == null)
            {
                return(NotFound());
            }
            ITestCaseProvider item = await res.Tests.Get(tid);

            if (item == null)
            {
                return(NotFound());
            }
            return(File(await item.GetOutput(), "text/plain", $"{tid}.out"));
        }
Exemplo n.º 11
0
        public async Task <ActionResult <DataPreview> > GetTestOutputPreview(string id, string tid, int num)
        {
            IProblemProvider res = await _workspace.Problems.Get(id);

            if (res == null)
            {
                return(NotFound());
            }
            ITestCaseProvider item = await res.Tests.Get(tid);

            if (item == null)
            {
                return(NotFound());
            }
            return(Ok(await item.GetOutputPreview(num)));
        }
Exemplo n.º 12
0
        public async Task <ActionResult <TestCaseMetadata> > UpdateTest(string id, string tid, [FromBody] TestCaseData data)
        {
            IProblemProvider res = await _workspace.Problems.Get(id);

            if (res == null)
            {
                return(NotFound());
            }
            ITestCaseProvider item = await res.Tests.Get(tid);

            if (item == null)
            {
                return(NotFound());
            }
            await item.SetMetadata(data.Metadata);

            await UpdateIOData(data, item);

            return(Accepted());
        }
Exemplo n.º 13
0
        public async Task <ActionResult <IEnumerable <TestCaseMetadata> > > GetTests(string id)
        {
            IProblemProvider res = await _workspace.Problems.Get(id);

            if (res != null)
            {
                IEnumerable <ITestCaseProvider> all = await res.Tests.GetAll();

                List <TestCaseMetadata> ans = new List <TestCaseMetadata>();
                foreach (ITestCaseProvider v in all)
                {
                    ans.Add(await v.GetMetadata());
                }
                return(Ok(ans));
            }
            else
            {
                return(NotFound());
            }
        }