/// <summary> /// コンストラクタ /// </summary> public Kindle(IBlogger blogger, ILogger <Kindle> logger, IOptions <KindleOptions> kindleOptions, IOptions <AmazonOptions> amazonOptions) : base(logger, amazonOptions) { this.logger = logger; options = kindleOptions?.Value; this.blogger = blogger; if (this.blogger != null) { this.blogger.BlogId = options?.BlogId; } // データベースの作成 using (var db = new KindleDbContext()) { db.Database.EnsureCreated(); } //var serializer = new XmlSerializer(typeof(KindleData)); //try //{ // using (var fs = new FileStream(options.GetDataFilePath(), FileMode.Open)) // { // data = (KindleData)serializer.Deserialize(fs); // } // logger.LogInformation("デシリアライズ完了"); //} //catch //{ // logger.LogError("デシリアライズ失敗"); // data = new KindleData(); //} }
public List <CategoryPair> GetCategoryList() { //プロキシクラスのインスタンスを作成 IBlogger proxy = (IBlogger) CookComputing.XmlRpc.XmlRpcProxyGen.Create( typeof(IBlogger)); //URLを指定 proxy.Url = this.Url; List <CategoryPair> lst = new List <CategoryPair>(); CategoryPair[] ret = proxy.getCategoryList("1", this.Username, this.Password); foreach (var f in ret) { lst.Add(f); } return(lst); }
/// <summary> /// 既存の記事を取得する /// </summary> /// <param name="post">投稿記事</param> /// <returns>投稿した記事のID</returns> public Post GetPost(string postid) { //プロキシクラスのインスタンスを作成 IBlogger proxy = (IBlogger) CookComputing.XmlRpc.XmlRpcProxyGen.Create( typeof(IBlogger)); //URLを指定 proxy.Url = this.Url; RetPost retpost = proxy.getPost( postid, this.Username, this.Password); if (retpost == null) { return(null); } Post post = new Post(); post.ID = retpost.postid.ToString(); post.Title = retpost.title; post.PostDate = retpost.dateCreated; post.Content = retpost.description; if (retpost.categories != null && retpost.categories.Count() > 0) { post.CategoryID = retpost.categories[0]; } if (retpost.custom_fields != null) { post.CustomFileds = new Dictionary <string, string>(); foreach (var f in retpost.custom_fields) { post.CustomFileds.Add(f.key, f.value); } } return(post); }
/// <summary> /// コンストラクタ /// </summary> public HRHM(IBlogger blogger, ILogger <HRHM> logger, IOptions <HRHMOptions> hrHMoptions, IOptions <AmazonOptions> amazonOptions) : base(logger, amazonOptions) { this.logger = logger; options = hrHMoptions?.Value; this.blogger = blogger; this.blogger.BlogId = options.BlogId; var serializer = new XmlSerializer(typeof(HRHMData)); try { using (var fs = new FileStream(options.GetDataFilePath(), FileMode.Open)) { data = (HRHMData)serializer.Deserialize(fs); } logger.LogInformation("デシリアライズ完了"); } catch { logger.LogError("デシリアライズ失敗"); data = new HRHMData(); } }
/// <summary> /// 新しい記事を投稿する /// </summary> /// <param name="post">投稿記事</param> /// <returns>投稿した記事のID</returns> public string NewPost(Post post) { //プロキシクラスのインスタンスを作成 IBlogger proxy = (IBlogger) CookComputing.XmlRpc.XmlRpcProxyGen.Create( typeof(IBlogger)); //URLを指定 proxy.Url = this.Url; string id = ""; // content を生成 Content cont = new Content(); cont.title = post.Title; cont.description = post.Content; if (post.PostDate == null) { post.PostDate = DateTime.Now; } cont.dateCreated = post.PostDate; cont.custom_fields = null; if (post.CustomFileds != null) { cont.custom_fields = new Fields[post.CustomFileds.Count]; int i = 0; foreach (var f in post.CustomFileds) { cont.custom_fields[i] = new Fields(); cont.custom_fields[i].key = f.Key; cont.custom_fields[i].value = f.Value; i++; } } else { cont.custom_fields = new Fields[0]; } try { if (post.ID == "") { //blogger.getRecentPostsを呼び出す id = proxy.newPost( "1", // 念のため1にしておく this.Username, this.Password, cont, post.Publish); } else { // 編集時 if (proxy.editPost( post.ID, this.Username, this.Password, cont, post.Publish)) { // 成功 id = post.ID; } else { id = ""; } } } catch (Exception ex) { Console.WriteLine("エラー:" + ex.Message); return(""); } if (post.CategoryID != "") { Category[] cat = new Category[1]; cat[0] = new Category(); cat[0].categoryId = post.CategoryID; cat[0].isPrimary = true; // カテゴリのエラーは無視する bool ret = proxy.setPostCategories( id, this.Username, this.Password, cat); } post.ID = id; return(id); }
/// <summary> /// 新しい画像を投稿する /// </summary> /// <param name="post">投稿記事</param> /// <returns>投稿した記事のID</returns> public RetUpFile NewImage(ImageFile post) { //プロキシクラスのインスタンスを作成 IBlogger proxy = (IBlogger) CookComputing.XmlRpc.XmlRpcProxyGen.Create( typeof(IBlogger)); //URLを指定 proxy.Url = this.Url; // ファイル名を小文字に変換 post.Filename = post.Filename.ToLower(); // UpFile を生成 UpFile upfile = new UpFile(); upfile.name = post.Filename; upfile.type = "image/jpeg"; upfile.bits = null; upfile.overwrite = true; // ファイルを読み込む long len = new FileInfo(post.Filename).Length; byte[] data = new byte[len]; BinaryReader rd = new BinaryReader( File.OpenRead(post.Filename)); rd.Read(data, 0, (int)len); rd.Close(); // BASE64に変換しない // upfile.bits = Convert.ToBase64String(data); upfile.bits = data; // ファイルタイプを変更 if (upfile.name.EndsWith(".jpg") || upfile.name.EndsWith(".jpeg")) { upfile.type = "image/jpeg"; } else if (upfile.name.EndsWith(".png")) { upfile.type = "image/png"; } else if (upfile.name.EndsWith(".gif")) { upfile.type = "image/gif"; } RetUpFile ret; try { //blogger.getRecentPostsを呼び出す ret = proxy.uploadFile( "1", // 念のため1にしておく this.Username, this.Password, upfile); } catch (Exception ex) { Console.WriteLine("エラー:" + ex.Message); return(null); } return(ret); }
public BlogController(IBlogger blogger) { _blogger = blogger; }
public SiteMapController(IBlogger blogger) { _blogger = blogger; }
public HomeController(IBlogger blogger) { _blogger = blogger; }