예제 #1
0
        public Exploration(IExplorable attempt, ExplorationJson exp)
        {
            if (exp.id == null)
            {
                throw new ArgumentNullException("exp");
            }

            this.attempt = attempt;
            this.exp     = exp;

            switch (exp.kind)
            {
            case "InternalError":
                // Should not happen
                this.errors = new string[] { exp.exception };
                break;

            case "CompilationError":
                this.errors = exp.errors.Select(e => e.ToString()).ToList();
                break;

            case "BadPuzzle":
                this.errors = new string[] { exp.description };
                break;

            case "BadDependency":
                this.errors = exp.referencedTypes;
                break;

            default:
                this.errors = null;
                break;
            }
        }
예제 #2
0
        public Exploration explore(IExplorable attempt, bool wait = false)
        {
            var postRequest = new RestRequest("explorations", Method.POST);

            postRequest.RequestFormat = DataFormat.Json;
            postRequest.AddBody(ExplorationBody.FromIExplorable(attempt));
            string id = JsonConvert.DeserializeObject <ExplorationResponse>(client.Execute(postRequest).Content).id;

            var             request = new RestRequest("explorations/" + id, Method.GET);
            var             result  = client.Execute(request);
            ExplorationJson exp     = JsonConvert.DeserializeObject <ExplorationJson>(result.Content);

            while (wait && !exp.isComplete)
            {
                System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));
                result = client.Execute(request);
                exp    = JsonConvert.DeserializeObject <ExplorationJson>(result.Content);
            }

            return(new Exploration(attempt, exp));
        }