async Task AddAssets(IList <string> assets, BlogPost post, IBlogStorage storage, bool isAttachement) { if (assets.Any()) { foreach (var item in assets) { var uri = ""; try { uri = ValidateUrl(item); var path = string.Format("{0}/{1}", post.Published.Year, post.Published.Month); var asset = await storage.UploadFromWeb(new Uri(uri), _model.Root, path); asset.ProfileId = post.ProfileId; asset.LastUpdated = SystemClock.Now(); if (isAttachement) { asset.AssetType = AssetType.Attachment; } post.Content = post.Content.ReplaceIgnoreCase(uri.ToString(), asset.Url); _db.Assets.Add(asset); _db.Complete(); } catch (Exception ex) { _logger.LogError(string.Format("Error importing [{0}] : {1}", item, ex.Message)); } } } }
async Task ImportAttachements(BlogPost post, IBlogStorage storage) { var attachements = GetAttachements(post.Content); await AddAssets(attachements, post, storage, true); }
async Task ImportImages(BlogPost post, IBlogStorage storage) { var images = GetImages(post.Content); await AddAssets(images, post, storage, false); }
static Post() { AssemblyCatalog catalog = new AssemblyCatalog(typeof(Post).Assembly); CompositionContainer container = new CompositionContainer(catalog); _storage = container.GetExportedValues<IBlogStorage>().ElementAt(0); }