public BlogService(IBlogRepository blogRepository, MarkdownTransformer markdownTransformer, RazorTransformer razorTransformer, IAdminRepository adminRepository) { _blogRepository = blogRepository; _markdownTransformer = markdownTransformer; _razorTransformer = razorTransformer; _adminRepository = adminRepository; }
public void AddContent(IContentTransformer transformer, IContentSource source, byte[] content) { ITransformerStoreModel currentTransformer = GetTransformer(transformer, source); string contentFileName = $"{Guid.NewGuid():N}.bin"; string contentFilePath = Path.Combine(_storeContentDirectoryName, currentTransformer.Id.ToString(), contentFileName); int contentHash = BitConverter.ToInt32(new MD5CryptoServiceProvider().ComputeHash(content), 0); try { lock (_dbConnection) { if (ExistContent(currentTransformer.Id, contentHash)) { return; } _dbConnection.Execute($"INSERT INTO Contents (TransformerId, Created, ContentHash, ContentFileName) VALUES ({currentTransformer.Id}, '{DateTime.Now:yyyy-MM-dd hh:mm:ss}', '{contentHash}', '{contentFileName}')"); File.WriteAllBytes(contentFilePath, content); } } catch { if (File.Exists(contentFilePath)) { File.Delete(contentFilePath); } } }
public void Init() { TransformerCatalog transformerCatalog = TransformerCatalog.TryLoad(); foreach (TransformerConfig transformerConfig in transformerCatalog.Transformers) { Type transformerType = Type.GetType(transformerConfig.TypeName); if (transformerType == null) { throw new Exception($"The type '{transformerConfig.TypeName}' was not found."); } if (!typeof(IContentTransformer).IsAssignableFrom(transformerType)) { throw new Exception($"The type '{transformerType.FullName}' is not assignable to type '{typeof(IContentTransformer).FullName}'."); } IContentTransformer transformer = (IContentTransformer)_container.Resolve(transformerType); if (transformerConfig.ContentSource == null || string.IsNullOrEmpty(transformerConfig.ContentSource.Name)) { throw new Exception($"The transformer '{transformerType.Name}' does not have any content source."); } IContentSource source = _contentSourceService.Build(transformerConfig.ContentSource.Name); source.Init(transformerConfig.ContentSource.Config); ITransformerStoreModel transformerStoreModel = _contentTransformerStorage.AddOrGetTransformer(transformer, source); _transformerProcessors.Add(transformerStoreModel.Id, new TransformerProcessor(_contentTransformerStorage, transformer, source)); } }
/// <summary> /// Initializes a new instance of the <see cref="PostTranslator"/> class. /// </summary> /// <param name="authData"></param> public PostTranslator(ICatiAuthDataLayer authData, IContentTransformer contentTransformer, ICatiImageDataLayer imageDataLayer, IImageUploader uploader) { this.authDataLayer = authData; this.contentTransformer = contentTransformer; this.imageDataLayer = imageDataLayer; this.uploader = uploader; }
public TransformerProcessor(IContentTransformerStorage storage, IContentTransformer transformer, IContentSource source) { _storage = storage; _transformer = transformer; _source = source; _source.SourceChanged += SourceChanged; _source.Start(); }
public ITransformerStoreModel AddOrGetTransformer(IContentTransformer transformer, IContentSource source) { ITransformerStoreModel currentTransformer = _transformers.Find(model => model.TransformerType == transformer.GetType().FullName&& model.SourceIdentity == source.Identity); if (currentTransformer != null) { return(currentTransformer); } _dbConnection.Execute($"INSERT INTO Transformers (Created, Name, TransformerType, SourceIdentity) VALUES ('{DateTime.Now:yyyy-MM-dd hh:mm:ss}', '{transformer.GetType().Assembly.GetName().Name}', '{transformer.GetType().FullName}', '{source.Identity}')"); TransformerStoreModel transformerStoreModel = (TransformerStoreModel)GetTransformer(transformer, source); Directory.CreateDirectory(Path.Combine(_storeContentDirectoryName, transformerStoreModel.Id.ToString())); _transformers.Add(transformerStoreModel); return(transformerStoreModel); }
/// <summary> /// Initializes the post controller. /// </summary> /// <param name="datalayer">The data layer.</param> public PostController(ICatiDataLayer datalayer, IContentTransformer contentTransformer) { this.datalayer = datalayer; this.contentTransformer = contentTransformer; }
/// <summary> /// Initializes a new instance of the <see cref="AdminPostController"/> class. /// </summary> /// <param name="catiDataLayer">The cati data layer.</param> /// <param name="contentTransformer">The content transformer.</param> public AdminPostController(ICatiDataLayer catiDataLayer, IContentTransformer contentTransformer) { this.catiDatalayer = catiDataLayer; this.contentTransformer = contentTransformer; }
private ITransformerStoreModel GetTransformer(IContentTransformer transformer, IContentSource source) { TransformerStoreModel currentTransformer = _transformers.FirstOrDefault(x => x.TransformerType == transformer.GetType().FullName&& x.SourceIdentity == source.Identity); return(currentTransformer ?? _dbConnection.QueryFirst <TransformerStoreModel>($"SELECT * FROM Transformers WHERE TransformerType='{transformer.GetType().FullName}' AND SourceIdentity='{source.Identity}'")); }
private bool ExistTransformer(IContentTransformer transformer, IContentSource source) { return(_dbConnection.QuerySingleOrDefault <bool>($"SELECT 1 FROM Transformers WHERE TransformerType='{transformer.GetType().FullName}' AND SourceIdentity='{source.Identity}'")); }
public void RegisterModifier(IContentTransformer modifier) { ContentModifiers.Add(modifier); }
/// <summary> /// Initializes a new instance of the <see cref="AdminMarkdownController"/> class. /// </summary> /// <param name="contentTransformer">The content transformer.</param> public AdminMarkdownController(IContentTransformer contentTransformer) { this.contentTransformer = contentTransformer; }
/// <summary> /// Creates a default post translator instance. /// </summary> /// <param name="authdata">The auth data retreiver.</param> /// <param name="transformer">The content transformer.</param> /// <param name="imageDataLayer">The image data layer.</param> /// <param name="imageUploader">The image uploader.</param> /// <returns>The post translator.</returns> public static IPostTranslator Create(ICatiAuthDataLayer authdata, IContentTransformer transformer, ICatiImageDataLayer imageDataLayer, IImageUploader imageUploader) { return(new PostTranslator(authdata, transformer, imageDataLayer, imageUploader)); }