public override IEnumerable <object> Pull(IRequest request, PullType pullType = PullType.AdapterDefault, ActionConfig actionConfig = null) { PullConfig pullConfig = actionConfig as PullConfig ?? new PullConfig(); RevisionRequest rr = request as RevisionRequest; if (rr != null) { return(GetRevisions(rr).OfType <object>()); } IssueRequest ir = request as IssueRequest; if (ir != null) { return(GetIssues(ir, pullConfig).OfType <object>()); } AuditRequest ar = request as AuditRequest; if (ar != null) { if (ar.Audit == null) { BH.Engine.Reflection.Compute.RecordWarning("Please specify the Audit whose Issues you want to pull from 3DRepo in the request."); return(null); } ir = new IssueRequest() { ModelId = ar.ModelId, RevisionId = ar.RevisionId, TeamSpace = ar.TeamSpace, UserAPIKey = ar.UserAPIKey }; Audit audit = ar.Audit.DeepClone(); // The conversion between 3DRepo issues and BHoM Issues // will need to be passed any Pulled media file Name, if they were pulled with the Issues. Dictionary <oM.Adapters.TDRepo.Issue, List <string> > mediaFilenames_perIssue = new Dictionary <oM.Adapters.TDRepo.Issue, List <string> >(); List <oM.Inspection.Issue> pulledIssues = GetIssues(ir, pullConfig, true, mediaFilenames_perIssue); // Return the Audit with the Pulled issues from 3DRepo. return(new List <object>() { audit }); } BH.Engine.Reflection.Compute.RecordWarning($"The specified request is not compatible with {this.GetType().Name}."); return(new List <object>()); }
public List <Revision> GetRevisions(RevisionRequest rr, bool enableMessages = true) { string modelId = rr.ModelId ?? m_modelId; string teamsSpace = rr.TeamSpace ?? m_teamspace; string endpoint = $"https://api1.www.3drepo.io/api/{teamsSpace}/{modelId}/revisions.json"; if (!string.IsNullOrWhiteSpace(rr.UserAPIKey)) { endpoint += $"?key={rr.UserAPIKey}"; } else if (!string.IsNullOrWhiteSpace(m_userAPIKey)) { endpoint += $"?key={m_userAPIKey}"; } // GET request HttpResponseMessage respMessage; string fullResponse = ""; using (var httpClient = new HttpClient()) { respMessage = httpClient.GetAsync(endpoint).Result; // Process response fullResponse = respMessage.Content.ReadAsStringAsync().Result; } // Deserialise the object. var serializerSettings = new Newtonsoft.Json.JsonSerializerSettings(); serializerSettings.ContractResolver = new RevisionContractResolver(); List <Revision> revisions_deserialised = new List <Revision>(); try { revisions_deserialised = Newtonsoft.Json.JsonConvert.DeserializeObject <List <Revision> >(fullResponse, serializerSettings); } catch { Revision rev = Newtonsoft.Json.JsonConvert.DeserializeObject <Revision>(fullResponse, serializerSettings); revisions_deserialised.Add(rev); } if (enableMessages) { BH.Engine.Reflection.Compute.RecordNote($"Returning {nameof(Revision)}s \nfrom the 3DRepo Model `{modelId}` in the Teamspace `{teamsSpace}`."); } return(revisions_deserialised); }