public ConfigurationModel Validate(ConfigurationFile ConfigFile) { var model = new ConfigurationModel(); model.ComponentName = ConfigFile.component_name; model.APIVersion = ConfigFile.api_version; if (ConfigFile.apex_class != null) { model.ApexClass = new List <GithubFile>(); foreach (var className in ConfigFile.apex_class) { model.ApexClass.Add(RetrieveRepositoryFile(_ghOrg, _ghRepo, className)); } } if (ConfigFile.events != null) { model.Events = new List <GithubFile>(); foreach (var eventName in ConfigFile.events) { model.Events.Add(RetrieveRepositoryFile(_ghOrg, _ghRepo, eventName)); } } if (ConfigFile.bundle_details != null) { if (!string.IsNullOrEmpty(ConfigFile.bundle_details.component)) { model.Component = RetrieveRepositoryFile(_ghOrg, _ghRepo, ConfigFile.bundle_details.component); } if (!string.IsNullOrEmpty(ConfigFile.bundle_details.controller)) { model.Controller = RetrieveRepositoryFile(_ghOrg, _ghRepo, ConfigFile.bundle_details.controller); } if (!string.IsNullOrEmpty(ConfigFile.bundle_details.design)) { model.Design = RetrieveRepositoryFile(_ghOrg, _ghRepo, ConfigFile.bundle_details.design); } if (!string.IsNullOrEmpty(ConfigFile.bundle_details.documentation)) { model.Documentation = RetrieveRepositoryFile(_ghOrg, _ghRepo, ConfigFile.bundle_details.documentation); } if (!string.IsNullOrEmpty(ConfigFile.bundle_details.helper)) { model.Helper = RetrieveRepositoryFile(_ghOrg, _ghRepo, ConfigFile.bundle_details.helper); } if (!string.IsNullOrEmpty(ConfigFile.bundle_details.renderer)) { model.Renderer = RetrieveRepositoryFile(_ghOrg, _ghRepo, ConfigFile.bundle_details.renderer); } if (!string.IsNullOrEmpty(ConfigFile.bundle_details.style)) { model.Style = RetrieveRepositoryFile(_ghOrg, _ghRepo, ConfigFile.bundle_details.style); } if (!string.IsNullOrEmpty(ConfigFile.bundle_details.svg)) { model.SVG = RetrieveRepositoryFile(_ghOrg, _ghRepo, ConfigFile.bundle_details.svg); } } return(model); }
public SalesforceResult UploadComponent(ConfigurationModel model) { HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Add("User-Agent", "Deploy2Org"); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + _sfToken); var compositeRequest = new SalesforceCompositeRequest() { allOrNone = true, compositeRequest = new List <CompositeSubrequest>() }; var bundleBody = new AuraDefinitionBundle() { ApiVersion = Double.Parse(model.APIVersion.Replace("v", "")), Description = model.ComponentName, DeveloperName = model.ComponentName, MasterLabel = model.ComponentName }; compositeRequest.compositeRequest.Add(new CompositeSubrequest() { method = "POST", body = bundleBody, url = "/services/data/" + _sfVersion + "/tooling/sobjects/AuraDefinitionBundle/", referenceId = "aura_bundle" }); //component compositeRequest.compositeRequest.Add(new CompositeSubrequest() { method = "POST", body = new AuraDefinition() { AuraDefinitionBundleId = "@{aura_bundle.id}", DefType = "COMPONENT", Format = "XML", Source = model.Component.fileContent() }, url = "/services/data/" + _sfVersion + "/tooling/sobjects/AuraDefinition/", referenceId = "aura_component" }); //controller if (model.Controller != null) { compositeRequest.compositeRequest.Add(new CompositeSubrequest() { method = "POST", body = new AuraDefinition() { AuraDefinitionBundleId = "@{aura_bundle.id}", DefType = "CONTROLLER", Format = "JS", Source = model.Controller.fileContent() }, url = "/services/data/" + _sfVersion + "/tooling/sobjects/AuraDefinition/", referenceId = "aura_controller" }); } //helper if (model.Helper != null) { compositeRequest.compositeRequest.Add(new CompositeSubrequest() { method = "POST", body = new AuraDefinition() { AuraDefinitionBundleId = "@{aura_bundle.id}", DefType = "HELPER", Format = "JS", Source = model.Helper.fileContent() }, url = "/services/data/" + _sfVersion + "/tooling/sobjects/AuraDefinition/", referenceId = "aura_helper" }); } //style if (model.Style != null) { compositeRequest.compositeRequest.Add(new CompositeSubrequest() { method = "POST", body = new AuraDefinition() { AuraDefinitionBundleId = "@{aura_bundle.id}", DefType = "STYLE", Format = "CSS", Source = model.Style.fileContent() }, url = "/services/data/" + _sfVersion + "/tooling/sobjects/AuraDefinition/", referenceId = "aura_style" }); } //documentation if (model.Documentation != null) { compositeRequest.compositeRequest.Add(new CompositeSubrequest() { method = "POST", body = new AuraDefinition() { AuraDefinitionBundleId = "@{aura_bundle.id}", DefType = "DOCUMENTATION", Format = "XML", Source = model.Documentation.fileContent() }, url = "/services/data/" + _sfVersion + "/tooling/sobjects/AuraDefinition/", referenceId = "aura_documentation" }); } //renderer if (model.Renderer != null) { compositeRequest.compositeRequest.Add(new CompositeSubrequest() { method = "POST", body = new AuraDefinition() { AuraDefinitionBundleId = "@{aura_bundle.id}", DefType = "RENDERER", Format = "JS", Source = model.Renderer.fileContent() }, url = "/services/data/" + _sfVersion + "/tooling/sobjects/AuraDefinition/", referenceId = "aura_renderer" }); } //design if (model.Design != null) { compositeRequest.compositeRequest.Add(new CompositeSubrequest() { method = "POST", body = new AuraDefinition() { AuraDefinitionBundleId = "@{aura_bundle.id}", DefType = "DESIGN", Format = "XML", Source = model.Design.fileContent() }, url = "/services/data/" + _sfVersion + "/tooling/sobjects/AuraDefinition/", referenceId = "aura_design" }); } //design if (model.SVG != null) { compositeRequest.compositeRequest.Add(new CompositeSubrequest() { method = "POST", body = new AuraDefinition() { AuraDefinitionBundleId = "@{aura_bundle.id}", DefType = "SVG", Format = "XML", Source = model.SVG.fileContent() }, url = "/services/data/" + _sfVersion + "/tooling/sobjects/AuraDefinition/", referenceId = "aura_svg" }); } var content = new StringContent(JsonSerializer.Serialize(compositeRequest), Encoding.UTF8, "application/json"); var response = client.PostAsync(_sfUrl + "tooling/composite", content).Result; //need to parse the response to identify errors return(new SalesforceResult() { StatusCode = response.StatusCode, BodyContent = response.Content.ReadAsStringAsync().Result }); }