Пример #1
0
        private static void Deploy(DeployArgs args, IMusicDataTable <IMusicDataTableUnit> musicDataTable, string minLevelText, string maxLevelText, string currentHash = "")
        {
            var        client           = new HttpClient();
            var        getCurrent       = args.CreateRequestMessage(HttpMethod.Get);
            var        getCurrentResult = client.SendAsync(getCurrent).Result;
            var        currentSource    = Encoding.UTF8.GetString(getCurrentResult.Content.ReadAsByteArrayAsync().Result);
            var        currentDocument  = XDocument.Parse(currentSource);
            XNamespace ns             = "http://www.w3.org/2005/Atom";
            var        title          = currentDocument.Element(ns + "entry").Element(ns + "title").Value;
            var        currentContent = currentDocument.Element(ns + "entry").Element(ns + "content").Value;

            var beginToken = "<!--GEN_BY_REPORT_TOOL_BEGIN-->";
            var endToken   = "<!--GEN_BY_REPORT_TOOL_END-->";
            var beginIndex = currentContent.IndexOf(beginToken);
            var endIndex   = currentContent.IndexOf(endToken);

            if (beginIndex == -1 || endIndex == -1)
            {
                throw new Exception("Not find token.");
            }

            var(hash, expert, master) = GetTableHash(musicDataTable);
            if (currentHash == hash)
            {
                Console.WriteLine("Skipping deploy.");
                return;
            }
            var minLevel  = decimal.Parse(minLevelText);
            var maxLevel  = decimal.Parse(maxLevelText);
            var nextTable = GenerateTableText(minLevel, maxLevel, expert, master);

            var nextContent = currentContent.Remove(beginIndex + beginToken.Length, endIndex - (beginIndex + beginToken.Length));

            nextContent = nextContent.Insert(beginIndex + beginToken.Length, nextTable);

            var nextSource = $@"
<entry xmlns=""http://www.w3.org/2005/Atom""
       xmlns:app=""http://www.w3.org/2007/app"">
  <title>{title}</title>
  <author><name>name</name></author>
  <content type=""text/html"">
{HttpUtility.HtmlEncode(nextContent.ToString())}
  </content>
  <category term=""CHUNITHM"" />
  <app:control>
    <app:draft>no</app:draft>
  </app:control>
</entry>
";

            Console.WriteLine(nextSource);
            var putRequest = args.CreateRequestMessage(HttpMethod.Put);

            putRequest.Content = new StringContent(nextSource);
            var putRequestResult = client.SendAsync(putRequest).Result;

            Console.WriteLine(putRequestResult.Content.ReadAsStringAsync().Result);
        }
Пример #2
0
        static void Main(string[] args)
        {
            var programArgs = new ProgramArgs(args);

            var getTableArgs   = new GetMusicDataTableArgs(programArgs.DataBaseUrl);
            var musicDataTable = GetMusicDataTable(getTableArgs);

            Console.WriteLine("Success get music data table.");
            Console.WriteLine("Music count: {0}", musicDataTable.GetTableUnits()?.Count());

            var deployArgs = new DeployArgs(
                hatenaId: programArgs.HatenaId,
                blogId: programArgs.BlogId,
                apiToken: programArgs.ApiToken,
                entryId: programArgs.EntryId);

            Deploy(deployArgs, musicDataTable, programArgs.MinLevelText, programArgs.MaxLevelText);
        }