private void StartImportIntoEpiServerCommerceTest(string fileNameInCloud, Dictionary <string, string> settings) { using (ShimsContext.Create()) { //Arrange ShiminRiverContext.AllInstances.SettingsGet = settingsGet => settings; ShiminRiverContext.AllInstances.ExtensionManagerGet = extensionManager => new StubIinRiverManager() { ModelServiceGet = () => { return(new StubIModelService() { GetAllLinkTypes = () => new List <Remoting.Objects.LinkType>(), }); } }; ShiminRiverContext.AllInstances.LogLogLevelString = (cx, logLevel, message) => { Trace.WriteLine($"{logLevel.ToString().ToUpper().PadRight(12, ' ')} {message}"); }; ShiminRiverContext context = new ShiminRiverContext(); //Act EpiApi api = new EpiApi(context); Configuration configuration = new Configuration(context); api.StartImportIntoEpiServerCommerce(fileNameInCloud, Guid.NewGuid(), configuration); //Assert } }
public CvlUpdater(IConfiguration config, CatalogDocumentFactory catalogDocumentFactory, EpiApi epiApi, DocumentFileHelper documentFileHelper) { _config = config; _catalogDocumentFactory = catalogDocumentFactory; _epiApi = epiApi; _documentFileHelper = documentFileHelper; }
public DeleteUtility(Configuration deleteUtilConfig, inRiverContext context) { DeleteUtilConfig = deleteUtilConfig; _context = context; _epiApi = new EpiApi(context); _epiElement = new EpiElement(context); _channelPrefixHelper = new ChannelPrefixHelper(context); }
public new void Start() { ConnectorEvent startEvent = null; try { _config = new Configuration(Id); ConnectorEventHelper.CleanupOngoingEvents(_config); startEvent = ConnectorEventHelper.InitiateEvent(_config, ConnectorEventType.Start, "Connector is starting", 0); Entity channel = RemoteManager.DataService.GetEntity(_config.ChannelId, LoadLevel.Shallow); if (channel == null || channel.EntityType.Id != "Channel") { _started = false; ConnectorEventHelper.UpdateEvent(startEvent, "Channel id is not valid: Entity with given ID is not a channel, or doesn't exist. Unable to start", -1, true); return; } _pimFieldAdapter = new PimFieldAdapter(_config); _epiMappingHelper = new EpiMappingHelper(_config, _pimFieldAdapter); _entityService = new EntityService(_config, _epiMappingHelper); _catalogCodeGenerator = new CatalogCodeGenerator(_config, _entityService); _epiApi = new EpiApi(_config, _catalogCodeGenerator, _pimFieldAdapter); _catalogElementFactory = new CatalogElementFactory(_config, _epiMappingHelper, _catalogCodeGenerator, _pimFieldAdapter); _channelHelper = new ChannelHelper(_config, _entityService); _catalogDocumentFactory = new CatalogDocumentFactory(_config, _epiApi, _catalogElementFactory, _epiMappingHelper, _channelHelper, _catalogCodeGenerator, _entityService); _resourceElementFactory = new ResourceElementFactory(_catalogElementFactory, _epiMappingHelper, _catalogCodeGenerator, _config, _entityService); _documentFileHelper = new DocumentFileHelper(_config, _channelHelper); _cvlUpdater = new CvlUpdater(_config, _catalogDocumentFactory, _epiApi, _documentFileHelper); _publisher = new ChannelPublisher(_config, _catalogDocumentFactory, _catalogElementFactory, _resourceElementFactory, _epiApi, _epiMappingHelper, _documentFileHelper, _pimFieldAdapter, _entityService, _catalogCodeGenerator); AppDomain.CurrentDomain.AssemblyResolve += CurrentDomainAssemblyResolve; InitConnector(); base.Start(); _started = true; ConnectorEventHelper.UpdateEvent(startEvent, "Connector has started", 100); } catch (Exception ex) { IntegrationLogger.Write(LogLevel.Error, "Error while starting connector", ex); ConnectorEventHelper.UpdateEvent(startEvent, "Issue while starting connector, see log.", 100, true); throw; } }
public EpiDocument(inRiverContext context, Configuration configuration) { _context = context; _epiElement = new EpiElement(context); _channelHelper = new ChannelHelper(context); _epiMappingHelper = new EpiMappingHelper(context); _configuration = configuration; _epiApi = new EpiApi(context); }
public CvlUtility(Configuration cvlUtilConfig, inRiverContext inRiverContext) { CvlUtilConfig = cvlUtilConfig; _context = inRiverContext; _epiElement = new EpiElement(inRiverContext); _epiMappingHelper = new EpiMappingHelper(inRiverContext); _businessHelper = new BusinessHelper(_context); _epiDocument = new EpiDocument(_context, cvlUtilConfig); _channelHelper = new ChannelHelper(_context); _epiApi = new EpiApi(_context); }
public CatalogDocumentFactory(IConfiguration config, EpiApi epiApi, CatalogElementFactory catalogElementFactory, EpiMappingHelper epiMappingHelper, ChannelHelper channelHelper, CatalogCodeGenerator catalogCodeGenerator, IEntityService entityService) { _config = config; _epiApi = epiApi; _catalogElementFactory = catalogElementFactory; _epiMappingHelper = epiMappingHelper; _channelHelper = channelHelper; _catalogCodeGenerator = catalogCodeGenerator; _entityService = entityService; }
public new void Stop() { base.Stop(); var connectorEvent = ConnectorEventHelper.InitiateEvent(_config, ConnectorEventType.Stop, "Connector is stopping", 0); _started = false; _epiApi = null; _catalogElementFactory = null; _catalogDocumentFactory = null; _channelHelper = null; _resourceElementFactory = null; _epiMappingHelper = null; _catalogCodeGenerator = null; _publisher = null; _config = null; _documentFileHelper = null; _entityService = null; _cvlUpdater = null; ConnectorEventHelper.UpdateEvent(connectorEvent, "Connector has stopped.", 100); }
public ChannelPublisher(IConfiguration config, CatalogDocumentFactory catalogDocumentFactory, CatalogElementFactory catalogElementFactory, ResourceElementFactory resourceElementFactory, EpiApi epiApi, EpiMappingHelper mappingHelper, DocumentFileHelper documentFileHelper, PimFieldAdapter pimFieldAdapter, IEntityService entityService, CatalogCodeGenerator catalogCodeGenerator) { _config = config; _catalogDocumentFactory = catalogDocumentFactory; _catalogElementFactory = catalogElementFactory; _resourceElementFactory = resourceElementFactory; _epiApi = epiApi; _mappingHelper = mappingHelper; _documentFileHelper = documentFileHelper; _pimFieldAdapter = pimFieldAdapter; _entityService = entityService; _catalogCodeGenerator = catalogCodeGenerator; }
internal void Add(Entity channelEntity, ConnectorEvent connectorEvent, out bool resourceIncluded) { resourceIncluded = false; var channelHelper = new ChannelHelper(_context); var epiApi = new EpiApi(_context); var connectorEventHelper = new ConnectorEventHelper(_context); connectorEventHelper.UpdateConnectorEvent(connectorEvent, "Generating catalog.xml...", 11); Dictionary <string, List <XElement> > epiElements = _epiDocument.GetEPiElements(ConnectorConfig); XDocument doc = _epiDocument.CreateImportDocument( channelEntity, null, null, epiElements, ConnectorConfig); string folderDateTime = DateTime.Now.ToString("yyyyMMdd-HHmmss.fff"); if (!DocumentFileHelper.ZipDocumentAndUploadToAzure(XmlDocumentType.Catalog, doc, ConnectorConfig, folderDateTime)) { _context.Log(LogLevel.Information, "Failed to zip and upload the catalog file to azure from add utility Add() method"); } _context.Log(LogLevel.Information, "Catalog saved with the following:"); _context.Log(LogLevel.Information, string.Format("Nodes: {0}", epiElements["Nodes"].Count)); _context.Log(LogLevel.Information, string.Format("Entries: {0}", epiElements["Entries"].Count)); _context.Log(LogLevel.Information, string.Format("Relations: {0}", epiElements["Relations"].Count)); _context.Log(LogLevel.Information, string.Format("Associations: {0}", epiElements["Associations"].Count)); connectorEventHelper.UpdateConnectorEvent(connectorEvent, "Done generating catalog.xml", 25); connectorEventHelper.UpdateConnectorEvent(connectorEvent, "Generating Resource.xml and saving files to disk...", 26); Resources resourceHelper = new Resources(_context); XDocument resourceDocument = resourceHelper.GetResourcesDocument(ConnectorConfig.ChannelStructureEntities, ConnectorConfig); // Add all files included in resource document Dictionary <string, byte[]> files = new Dictionary <string, byte[]>(); IEnumerable <XElement> resourceFileElements = resourceDocument.Document.Element("Resources")?.Element("ResourceFiles")?.Elements("Resource"); if (resourceFileElements != null && resourceFileElements.Any()) { _context.Log(LogLevel.Information, $"Adding {resourceFileElements.Count()} resource files to zip archive."); foreach (XElement resourceFileElement in resourceFileElements) { int resourceEntityId; if (int.TryParse(resourceFileElement.Attribute("id").Value, out resourceEntityId)) { Entity targetEntity = _context.ExtensionManager.DataService.GetEntity(resourceEntityId, LoadLevel.DataOnly); _context.Log(LogLevel.Debug, $"Adding image file {targetEntity.DisplayName}({targetEntity.Id})"); int resourceFileId = resourceHelper.GetResourceFileId(targetEntity); foreach (string displayConfig in resourceHelper.GetDisplayConfigurations(targetEntity, ConnectorConfig)) { string fileName = resourceHelper.GetResourceFileName(targetEntity, resourceFileId, displayConfig, ConnectorConfig); byte[] resourceData = _context.ExtensionManager.UtilityService.GetFile(resourceFileId, displayConfig); if (resourceData != null) { files.Add($"{displayConfig}/{fileName}", resourceData); } } } } } else { string elementCount = resourceFileElements == null ? "null" : resourceFileElements.Count().ToString(); _context.Log(LogLevel.Information, $"No files linked to resource document. Document contains {elementCount} elements"); } DocumentFileHelper.ZipDocumentAndUploadToAzure(XmlDocumentType.Resources, resourceDocument, ConnectorConfig, folderDateTime, files); connectorEventHelper.UpdateConnectorEvent(connectorEvent, "Done generating/saving Resource.xml", 50); if (ConnectorConfig.ActivePublicationMode.Equals(PublicationMode.Automatic)) { _context.Log(LogLevel.Debug, "Starting automatic import!"); connectorEventHelper.UpdateConnectorEvent(connectorEvent, "Sending Catalog.xml to EPiServer...", 51); if (epiApi.StartImportIntoEpiServerCommerce(ConnectorConfig.CatalogPathInCloud, channelHelper.GetChannelGuid(channelEntity, ConnectorConfig), ConnectorConfig)) { connectorEventHelper.UpdateConnectorEvent(connectorEvent, "Done sending Catalog.xml to EPiServer", 75); } else { connectorEventHelper.UpdateConnectorEvent(connectorEvent, "Error while sending Catalog.xml to EPiServer", -1, true); return; } connectorEventHelper.UpdateConnectorEvent(connectorEvent, "Sending Resources to EPiServer...", 76); if (epiApi.StartAssetImportIntoEpiServerCommerce(ConnectorConfig.ResourceNameInCloud, Path.Combine(ConnectorConfig.ResourcesRootPath, folderDateTime), ConnectorConfig)) { connectorEventHelper.UpdateConnectorEvent(connectorEvent, "Done sending Resources to EPiServer...", 99); resourceIncluded = true; } else { connectorEventHelper.UpdateConnectorEvent(connectorEvent, "Error while sending resources to EPiServer", -1, true); } } }