示例#1
0
        static DiscordObject CraftDiscordObject(bool passed, InputObject input, CommitDetails commitDetails)
        {
            var status    = passed ? "Passed" : "Failed";
            var colortest = passed ? 3066993 : 15158332;
            var icourl    = passed ? "https://travis-ci.org/images/logos/TravisCI-Mascot-blue.png" : "https://travis-ci.org/images/logos/TravisCI-Mascot-red.png";

            return(new DiscordObject
            {
                Username = "",
                Avatar_url = "https://travis-ci.org/images/logos/TravisCI-Mascot-1.png",
                Embeds = new List <Embed>
                {
                    new Embed
                    {
                        URL = input.Travis_Pull_Request ? "https://github.com/" + input.Travis_Repo_Slug +
                              $"/pull/{input.Travis_Pull_Request}" : "",
                        Author = new Author
                        {
                            Name = $"Tests {status} (Build #{input.Build_Id}) - {input.Travis_Repo_Slug}",
                            Icon_url = icourl,
                            Url = "https://travis-ci.org/" + input.Travis_Repo_Slug + $"/builds/{input.Build_Id}"
                        },
                        Color = colortest,
                        Timestamp = DateTime.Now,
                        Description = $"{commitDetails.Message}{'\n'}{'\n'}{commitDetails.Author} authored",
                        Title = $"{commitDetails.Subject}",
                        Fields = new List <Field>
                        {
                            new Field
                            {
                                Name = "Commit",
                                Value = $"[{input.Travis_Commit}](https://github.com/" + input.Travis_Repo_Slug +
                                        $"/commit/{input.Travis_Commit})",
                                Inline = true
                            },
                            new Field
                            {
                                Name = "Branch/Tag",
                                Value = $"[{input.Travis_Branch}](https://github.com/" + input.Travis_Repo_Slug +
                                        $"/tree/{input.Travis_Branch})",
                                Inline = true
                            }
                        }
                    }
                }
            });
        }
示例#2
0
        public static async Task <string> TravisCheckAsync(InputObject input)
        {
            var commitDetails = await GetCommitDetailsAsync(input).ConfigureAwait(false);

            var newList = new Dictionary <RegionType, List <string> >();

            foreach (var type in Enum.GetValues(typeof(RegionType)).Cast <RegionType>())
            {
                newList.Add(type, new List <string>());
            }
            var oldList = await S3Helper.GetS3File().ConfigureAwait(false);

            var country = JsonConvert.DeserializeObject <Dictionary <RegionType, string> >(Environment.GetEnvironmentVariable("language_webhooks"));
            var normal  = Environment.GetEnvironmentVariable("dev_webhook");

            var text = await Client.GetStringAsync("https://api.travis-ci.org/v3/job/" + input.Build_Id + "/log.txt").ConfigureAwait(false);

            bool passed           = input.Travis_Test_Result == 0;
            var  countTranslation = 0;

            if (input.Travis_Test_Result == 0 || input.Travis_Branch == "master")
            {
                var tasks = new List <Task>();
                foreach (RegionType type in Enum.GetValues(typeof(RegionType)))
                {
                    var reply   = text;
                    var start   = $"CheckEveryLanguageValueSet ({type})";
                    var pFrom   = reply.IndexOf(start, StringComparison.Ordinal) + start.Length;
                    var pTo     = reply.Substring(pFrom).IndexOf("Stack Trace:", StringComparison.Ordinal);
                    var leng    = pTo < 0 ? 0 : pTo;
                    var result  = reply.Substring(pFrom, leng);
                    var results = reply.IndexOf(start, StringComparison.Ordinal) > 0
                        ? result.Split($"{'\r'}{'\n'}").ToList().Skip(3).SkipLast(1).ToArray() : new string[0];
                    var webhook = country[type];
                    var newlist = new List <string>();
                    if (results.Any())
                    {
                        if (results.Except(oldList[type]).Any())
                        {
                            tasks.Add(Task.Run(async() =>
                            {
                                DiscordHelper.SendToDiscord(webhook, new DiscordObject
                                {
                                    Username   = "",
                                    Avatar_url = "https://travis-ci.org/images/logos/TravisCI-Mascot-red.png",
                                    Content    = "/clear"
                                });
                                await Task.Delay(10000);
                                DiscordHelper.SendToDiscord(webhook, new DiscordObject
                                {
                                    Username   = "",
                                    Avatar_url = "https://travis-ci.org/images/logos/TravisCI-Mascot-red.png",
                                    Embeds     = CreateEmbeds(results, $"Language {type} Translation Missing!", 15158332,
                                                              new List <string>(), false, ref newlist)
                                });
                            }));
                        }

                        var emptylist         = new List <string>();
                        var translatedresults = oldList[type].Except(results).ToArray();
                        var embeds            = CreateEmbeds(translatedresults,
                                                             $"Language {type} Translated!", 3066993, new List <string>(), true, ref emptylist);
                        if (embeds.Any())
                        {
                            DiscordHelper.SendToDiscord(webhook, new DiscordObject
                            {
                                Username   = "",
                                Avatar_url = "https://travis-ci.org/images/logos/TravisCI-Mascot-blue.png",
                                Embeds     = embeds
                            });
                        }

                        countTranslation += translatedresults.Length;
                        newList[type]     = results.ToList();
                    }
                    else if (oldList[type].Any() && reply.IndexOf(start, StringComparison.Ordinal) == -1)
                    {
                        var color = 3066993;
                        DiscordHelper.SendToDiscord(webhook, new DiscordObject
                        {
                            Username   = "",
                            Avatar_url = "https://travis-ci.org/images/logos/TravisCI-Mascot-blue.png",
                            Embeds     = new List <Embed>
                            {
                                new Embed
                                {
                                    Color     = color,
                                    Timestamp = DateTime.Now,
                                    Title     = $"Not Any Language {type} Translation Missing!"
                                }
                            }
                        }
                                                    );
                    }
                    else
                    {
                        newList[type] = oldList[type];
                    }
                }

                Task.WaitAll(tasks.ToArray());
                await S3Helper.UploadS3(newList).ConfigureAwait(false);
            }

            if (countTranslation > 0 && !string.IsNullOrEmpty(commitDetails.DiscordName))
            {
                DiscordHelper.SendToDiscord(normal, new DiscordObject
                {
                    Username   = "",
                    Avatar_url = "https://travis-ci.org/images/logos/TravisCI-Mascot-blue.png",
                    Content    = $"/add-points {commitDetails.DiscordName} TranslationPoint {countTranslation}"
                });
            }
            var discordObject = CraftDiscordObject(passed, input, commitDetails);

            DiscordHelper.SendToDiscord(normal, discordObject);
            return("OK");
        }
示例#3
0
 public string FunctionHandler(InputObject input, ILambdaContext context)
 {
     return(TravisCheckAsync(input).Result);
 }