Example #1
0
        /// <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();
            //}
        }
Example #2
0
        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);
        }
Example #3
0
        /// <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);
        }
Example #4
0
        /// <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();
            }
        }
Example #5
0
        /// <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);
        }
Example #6
0
        /// <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);
        }
Example #7
0
 public BlogController(IBlogger blogger)
 {
     _blogger = blogger;
 }
 public SiteMapController(IBlogger blogger)
 {
     _blogger = blogger;
 }
Example #9
0
 public HomeController(IBlogger blogger)
 {
     _blogger = blogger;
 }