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 } } } } }); }
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"); }
public string FunctionHandler(InputObject input, ILambdaContext context) { return(TravisCheckAsync(input).Result); }