示例#1
0
        protected bool Login(HatenaBlogAtomPubCredential credential, out HatenaBlogAtomPubClient hatenaBlog)
        {
            hatenaBlog = CreateClient(credential);

            Console.Write("ログインしています ... ");

            var statusCode = hatenaBlog.Login(out _);

            if (statusCode == HttpStatusCode.OK)
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("ログインに成功しました。");
                Console.ResetColor();

                return(true);
            }
            else
            {
                hatenaBlog = null;

                Console.ForegroundColor = ConsoleColor.Red;
                Console.Error.WriteLine("ログインに失敗しました。 ({0:D} {0})", statusCode);
                Console.ResetColor();

                return(false);
            }
        }
示例#2
0
        protected HatenaBlogAtomPubClient CreateClient(HatenaBlogAtomPubCredential credential)
        {
            HatenaBlogAtomPubClient.InitializeHttpsServicePoint();

            var client = HatenaBlogAtomPubClient.Create(credential);

            client.UserAgent = UserAgent;

            return(client);
        }
示例#3
0
        protected bool ParseCommonCommandLineArgs(ref string[] args,
                                                  string[] argsNotRequireHatenaBlogClient,
                                                  out HatenaBlogAtomPubCredential credential)
        {
            credential = null;

            var _argsNotRequireHatenaBlogClient = new List <string>()
            {
                "/?",
                "/help",
                "-h",
                "--help",
            };

            _argsNotRequireHatenaBlogClient.AddRange(argsNotRequireHatenaBlogClient);

            var requireHatenaBlogClient = !(new HashSet <string>(args, StringComparer.Ordinal)).Overlaps(_argsNotRequireHatenaBlogClient);

            string hatenaId     = null;
            string blogId       = null;
            string apiKey       = null;
            var    unparsedArgs = new List <string>(args.Length);

            for (var i = 0; i < args.Length; i++)
            {
                switch (args[i])
                {
                case "--id":
                case "-id":
                    hatenaId = args[++i];
                    break;

                case "--blog-id":
                case "-blogid":
                    blogId = args[++i];
                    break;

                case "--api-key":
                case "-apikey":
                    apiKey = args[++i];
                    break;

                case "/?":
                case "/help":
                case "-h":
                case "--help":
                    Usage(null);
                    break;

                default:
                    unparsedArgs.Add(args[i]);
                    break;
                }
            }

            if (requireHatenaBlogClient)
            {
                if (string.IsNullOrEmpty(hatenaId))
                {
                    Usage("--idを指定してください");
                    return(false);
                }

                if (string.IsNullOrEmpty(blogId))
                {
                    Usage("--blog-idを指定してください");
                    return(false);
                }

                if (string.IsNullOrEmpty(apiKey))
                {
                    Usage("--api-keyを指定してください");
                    return(false);
                }

                credential = new HatenaBlogAtomPubCredential(hatenaId, blogId, apiKey);
            }

            args = unparsedArgs.ToArray();

            return(true);
        }
示例#4
0
 protected bool ParseCommonCommandLineArgs(ref string[] args, out HatenaBlogAtomPubCredential credential)
 {
     return(ParseCommonCommandLineArgs(ref args,
                                       Array.Empty <string>(),
                                       out credential));
 }