/// <summary> /// コンストラクタ /// </summary> /// <param name="settings"></param> /// <param name="logger"></param> /// <param name="shoppingListOwner"></param> internal RakutenRecipe(IBaseSettings settings, ILogger logger, IShoppingListOwner shoppingListOwner, IRecipeSitePlugin plugin) : base(settings, logger, shoppingListOwner, plugin) { this._httpClient = new HttpClient().AddTo(this.Disposable); this._httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36"); this._httpClient.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"); this._httpClient.DefaultRequestHeaders.Add("Accept-Language", "ja,en-US;q=0.9,en;q=0.8"); this._httpClient.DefaultRequestHeaders.Add("Connection", "keep-alive"); this._httpClient.DefaultRequestHeaders.Add("Cache-Control", "max-age=0"); }
/// <summary> /// レシピModel生成メソッド /// </summary> /// <param name="settings"></param> /// <param name="logger"></param> /// <param name="shoppingListOwner">お買物リスト保持インスタンス</param> /// <returns>レシピModelインスタンス</returns> public IRecipe CreateRecipeModelInstance(IBaseSettings settings, ILogger logger, IShoppingListOwner shoppingListOwner) { return(new CookienRecipe(settings, logger, shoppingListOwner, this)); }
/// <summary> /// コンストラクタ /// </summary> /// <param name="settings"></param> /// <param name="logger"></param> /// <param name="shoppingListOwner">お買物リスト保持インスタンス</param> /// <param name="plugin">親プラグイン</param> internal OriginalRecipe(IBaseSettings settings, ILogger logger, IShoppingListOwner shoppingListOwner, IRecipeSitePlugin plugin) : base(settings, logger, shoppingListOwner, plugin) { }
/// <summary> /// レシピIDをキーにしてレシピModelを作成 /// </summary> /// <param name="settings"></param> /// <param name="logger"></param> /// <param name="recipeId"></param> /// <param name="shoppingListOwner"></param> /// <returns></returns> internal static IRecipe CreateRecipeInstanceFromRecipeId(ISettings settings, ILogger logger, int recipeId, IShoppingListOwner shoppingListOwner = null) { using (var db = settings.GeneralSettings.GetMealRecipeDbContext()) { var pluginName = db.Recipes.SingleOrDefault(x => x.RecipeId == recipeId)?.PluginName; return(DispatcherHelper.UIDispatcher.Invoke(() => { var recipe = CreateRecipeInstanceFromPluginName(settings, logger, pluginName, shoppingListOwner); recipe.Id.Value = recipeId; return recipe; })); } }
/// <summary> /// URLをキーにしてレシピModelを生成 /// </summary> /// <param name="settings"></param> /// <param name="logger"></param> /// <param name="pluginName">URL</param> /// <param name="shoppingListOwner"></param> /// <returns>レシピModel</returns> internal static IRecipe CreateRecipeInstanceFromPluginName(ISettings settings, ILogger logger, string pluginName, IShoppingListOwner shoppingListOwner = null) { if (pluginName == null) { return(null); } return(DispatcherHelper.UIDispatcher.Invoke(() => { return RecipeSitePlugins .SingleOrDefault(p => p.GetType().FullName == pluginName) ?.CreateRecipeModelInstance(settings, logger, shoppingListOwner); })); }
/// <summary> /// コンストラクタ /// </summary> /// <param name="settings"></param> /// <param name="logger"></param> /// <param name="shoppingListOwner"></param> internal WeekCookRecipe(IBaseSettings settings, ILogger logger, IShoppingListOwner shoppingListOwner, IRecipeSitePlugin plugin) : base(settings, logger, shoppingListOwner, plugin) { this._httpClient = new HttpClient().AddTo(this.Disposable); }