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; } }
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)); }