public async Task WhenGetThenReturnsCorrectData() { // Arrange var responseJson = System.IO.File.ReadAllText("../../../Responses/search.response.json"); var factory = TestHelper.GetIHttpClientFactoryMockObject(responseJson); var services = new ServiceCollection(); services.AddMemoryCache(); var servicesProvider = services.BuildServiceProvider(); var memroyCache = servicesProvider.GetService <IMemoryCache>(); var cacheManager = new CacheManager(memroyCache); var options = Options.Create(new GiphyClientOptions() { ApiKey = "aaa" }); var client = new GiphyClient(factory, options); var service = new SearchService(client, cacheManager); var controller = new SearchController(null, service); // Act var result = await controller.Get("good time"); // Assert Assert.Equal(TestHelper.JsonToDtosArray(responseJson), result); }
public async Task WhenGetIsCalledTwiceThenReturnsDataFromCache() { // Arrange var responseJson = System.IO.File.ReadAllText("../../../Responses/search.response.json"); var handlerMock = new Mock <HttpMessageHandler>(); handlerMock.Protected() .Setup <Task <HttpResponseMessage> >( "SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>()) .ReturnsAsync(new HttpResponseMessage() { StatusCode = HttpStatusCode.OK, Content = new StringContent(responseJson), }); var factoryMock = new Mock <IHttpClientFactory>(); factoryMock .Setup(f => f.CreateClient("giphy")) .Returns(new HttpClient(handlerMock.Object) { BaseAddress = new Uri("http://test.com") }); var services = new ServiceCollection(); services.AddMemoryCache(); var servicesProvider = services.BuildServiceProvider(); var memroyCache = servicesProvider.GetService <IMemoryCache>(); var cacheManager = new CacheManager(memroyCache); var options = Options.Create(new GiphyClientOptions() { ApiKey = "aaa" }); var client = new GiphyClient(factoryMock.Object, options); var service = new SearchService(client, cacheManager); var controller = new SearchController(null, service); var query = "good time"; await controller.Get(query); // Act var result = await controller.Get(query); // Assert handlerMock.Protected().Verify <Task <HttpResponseMessage> >( "SendAsync", new Type[] {}, Times.Once(), ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>()); }
public async Task GifCommand() { string Tag = Arg.Length < 1 ? Tag = "Anime" : Tag = Arg[0]; var Client = new GiphyClient(GiphyKey); var Result = await Client.Gifs.SearchAsync(Tag); if (Result.Gifs.Count < 1) { await Channel.SendMessageAsync("couldn't find any result"); return; } EmbedMaker maker = new EmbedMaker(); maker.setTitle(Tag).setImage(Result.Gifs.ElementAt(new Random().Next(Result.Gifs.Count)).Images.Original.Url); await Channel.SendMessageAsync("", false, maker); }
public async Task WhenGetThenReturnsCorrectData() { // Arrange var responseJson = System.IO.File.ReadAllText("../../../Responses/trending.response.json"); var factory = TestHelper.GetIHttpClientFactoryMockObject(responseJson); var options = Options.Create(new GiphyClientOptions() { ApiKey = "aaa" }); var client = new GiphyClient(factory, options); var service = new TrendingService(client); var controller = new TrendingController(null, service); // Act var result = await controller.Get(); // Assert Assert.Equal(TestHelper.JsonToDtosArray(responseJson), result); }
private async Task <string> BotCommandAsync(string command) { var serverClient = _httpClientFactory.CreateClient(); var discoveryDocument = await serverClient.GetDiscoveryDocumentAsync(Configuration["URLIdentityServer4"]); var tokenResponse = await serverClient.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest { Address = discoveryDocument.TokenEndpoint, ClientId = "bot", ClientSecret = "secret", Scope = "api1" }); string text = null; HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", tokenResponse.AccessToken); // Récurération des données et convertion des données dans le bon type string content = await client.GetStringAsync(Configuration["URLAPI"] + "api/Data/BotCommands"); List <BotCommand> botCommands = JsonConvert.DeserializeObject <List <BotCommand> >(content); var apiClient = _httpClientFactory.CreateClient(); apiClient.SetBearerToken(tokenResponse.AccessToken); foreach (BotCommand botCommand in botCommands) { if (botCommand.Slug.Equals(command) && !command.Equals("/help")) { text = botCommand.Answer; } if (command.Equals("/help")) { text += "List des commandes : "; foreach (BotCommand c in botCommands) { text += c.Slug + " "; } break; } if (command.Contains("/ban")) { if (command.Contains("@")) { string[] line = command.Split("@"); string nametoBan = line[1]; //string content1 = await client.GetStringAsync(Configuration["URLAPI"] + "identity"); var response = await client.PutAsync(Configuration["URLAPI"] + $"api/BotActions/BanUser/{nametoBan}", new StringContent(nametoBan)); if (response.StatusCode == System.Net.HttpStatusCode.OK) { text = $"Utilisateur {nametoBan} banni"; } else { text = $"Erreur de traitement"; } break; } else { text = "Impossible d'exécuter la commande"; } } if (command.Contains("/giphy")) { string[] line = command.Split(" "); string searchName = line[1]; GiphyClient giphyClient = new GiphyClient(Configuration["GIPHY"]); GiphyObject gif = await giphyClient.Gifs.SearchAsync(searchName, 1); _logger.LogInformation("GIPHYYYYYY"); if (gif != null) { foreach (var f in gif.Gifs) { text = f.Images.Original.Url; } } else { text = "Aucun GIF ne correspond"; } break; } } return(text); }
private void appDocOpened(object sender, Autodesk.Revit.DB.Events.DocumentOpenedEventArgs e) { Variables.logOpenEnd = DateTime.Now; Variables.logOpenDuration = Variables.logOpenEnd - Variables.logOpenStart; Autodesk.Revit.ApplicationServices.Application app = sender as Autodesk.Revit.ApplicationServices.Application; Document doc = e.Document; #region Variables: Document & Application Variables string path = GetUNCPath(doc.PathName); BasicFileInfo fileInfo = BasicFileInfo.Extract(path); FileInfo f = new FileInfo(path); Variables.logComputerName = Environment.MachineName; Variables.logChangesSaved = fileInfo.AllLocalChangesSavedToCentral; Variables.logFileCentral = GetUNCPath(fileInfo.CentralPath); Variables.logFileCentralName = Path.GetFileName(Variables.logFileCentral); Variables.logIsCentral = fileInfo.IsCentral; Variables.logIsWorkshared = fileInfo.IsWorkshared; Variables.logCreatedLocal = fileInfo.IsCreatedLocal; Variables.logFileName = doc.Title; Variables.logFilePath = GetUNCPath(doc.PathName); Variables.logFileSize = Convert.ToInt32(f.Length / 1000000); Variables.logUsername = app.Username; Variables.logVersionBuild = app.VersionBuild; Variables.logVersionName = app.VersionName; Variables.logVersionNumber = app.VersionNumber; #endregion #region Tracking: Start Logging Pinned Elements IEnumerable <Element> a = TrackChanges.Command.GetTrackedElements(doc); _start_state = TrackChanges.Command.GetSnapshot(a); #endregion #region Settings: Load settings if they exist (Extensible Storage) ParameterCommands.Load(doc); #endregion #region Post: Worksharing Warning-Opened Central Model bool patheq = string.Equals(Variables.logFileCentral, Variables.logFilePath); if (Variables.slackOn && Variables.slackWSWarn) { if (patheq && Variables.logIsWorkshared) { string gif_lg_url = null; string gif_sm_url = null; if (Variables.giphySet > 0) { var giphyClient = new GiphyClient(); string gif_msg = giphyClient.GetRandomGif("Alarm").Content; var gif_resp = JsonConvert.DeserializeObject <Giphy.Response>(gif_msg); if (Variables.giphySet == 1) { gif_sm_url = gif_resp.data.fixed_height_small_url; } if (Variables.giphySet == 2) { gif_lg_url = gif_resp.data.image_url; } } var slackClient = new SlackClient(Variables.slackToken); string text = ""; string channel = Variables.slackChId; string botname = "Worksharing Warning"; string icon_url = Variables.icon_revit; var attachments = new Attachments { fallback = Variables.logUsername + "has opened the central model", color = "danger", fields = new Fields[] { new Fields { title = "Description", value = "The user has opened the central model. Close the central model and create a new local file> to work from.", @short = false }, new Fields { title = "User", value = Variables.logUsername, @short = true }, new Fields { title = "File", value = Variables.logFileCentralName, @short = true } }, image_url = gif_lg_url, thumb_url = gif_sm_url }; string msg_response = slackClient.PostMessage(text, channel: channel, botName: botname, attachments: attachments, icon_url: icon_url).Content; var resp = JsonConvert.DeserializeObject <ChatPostMessageResponse>(msg_response); msgts_ws.Add(resp.ts); } } #endregion #region Post: Model Warning-File Size > 300MB if (Variables.slackOn && Variables.slackModelWarn) { string gif_lg_url = null; string gif_sm_url = null; if (Variables.logFileSize > 300) { if (Variables.giphySet > 0) { var giphyClient = new GiphyClient(); string gif_msg = giphyClient.GetRandomGif("Gasp").Content; var gif_resp = JsonConvert.DeserializeObject <Giphy.Response>(gif_msg); if (Variables.giphySet == 1) { gif_sm_url = gif_resp.data.fixed_height_small_url; } if (Variables.giphySet == 2) { gif_lg_url = gif_resp.data.image_url; } var slackClient = new SlackClient(Variables.slackToken); string text = ""; string channel = Variables.slackChId; string botname = "Model Warning"; string icon_url = Variables.icon_revit; var attachments = new Attachments { fallback = "The file size has gone above 300MB, time to do some model file size management.", color = "danger", fields = new Fields[] { new Fields { title = "Description", value = "The file size is above 300MB, time to do some model maintenance", @short = false }, new Fields { title = "File Size", value = Variables.logFileSize.ToString() + "MB", @short = true }, new Fields { title = "File", value = Variables.logFileCentralName, @short = true } }, image_url = gif_lg_url, thumb_url = gif_sm_url }; string msg_response = slackClient.PostMessage(text, channel: channel, botName: botname, attachments: attachments, icon_url: icon_url).Content; var resp = JsonConvert.DeserializeObject <ChatPostMessageResponse>(msg_response); msgts_model.Add(resp.ts); } } #endregion #region Post: Tracking-Pinned Element-Started if (Variables.slackOn && Variables.slackExtraTrackPin) { var slackClient = new SlackClient(Variables.slackToken); //Post pinned elements message string text = ""; string channel = Variables.slackChId; string botname = "Pinning Info"; string icon_url = Variables.icon_revit; var attachments = new Attachments { fallback = Variables.logUsername + "has started tracking pinned elements.", color = "good", fields = new Fields[] { new Fields { title = "Status", value = Variables.logUsername + " has started tracking pinned elements.\n[" + Variables.logFileCentralName + "]", @short = true } } }; string msg_response = slackClient.PostMessage(text, channel: channel, botName: botname, attachments: attachments, icon_url: icon_url).Content; var resp = JsonConvert.DeserializeObject <ChatPostMessageResponse>(msg_response); msgts_extra.Add(resp.ts); } #endregion } }
private void appDocClosing(object sender, Autodesk.Revit.DB.Events.DocumentClosingEventArgs e) { BasicFileInfo fileInfo = BasicFileInfo.Extract(Variables.logFilePath); #region Post: Worksharing Warning-Close without saving if (Variables.slackOn && Variables.slackWSWarn) { if (fileInfo.AllLocalChangesSavedToCentral == false) { string gif_lg_url = null; string gif_sm_url = null; if (Variables.giphySet > 0) { var giphyClient = new GiphyClient(); string gif_msg = giphyClient.GetRandomGif("Disappointed").Content; var gif_resp = JsonConvert.DeserializeObject <Giphy.Response>(gif_msg); if (Variables.giphySet == 1) { gif_sm_url = gif_resp.data.fixed_height_small_url; } if (Variables.giphySet == 2) { gif_lg_url = gif_resp.data.image_url; } } var slackClient = new SlackClient(Variables.slackToken); string text = ""; string channel = Variables.slackChId; string botname = "Worksharing Warning"; string icon_url = Variables.icon_revit; var attachments = new Attachments { fallback = Variables.logUsername + "did not save to central before closing", color = "danger", fields = new Fields[] { new Fields { title = "Description", value = "The user has closed the model without saving their changes back to the central model. Open the model and save changes back to the central model.", @short = false }, new Fields { title = "User", value = Variables.logUsername, @short = true }, new Fields { title = "File", value = Variables.logFileCentralName, @short = true } }, image_url = gif_lg_url, thumb_url = gif_sm_url }; string msg_response = slackClient.PostMessage(text, channel: channel, botName: botname, attachments: attachments, icon_url: icon_url).Content; var resp = JsonConvert.DeserializeObject <ChatPostMessageResponse>(msg_response); msgts_ws.Add(resp.ts); } } #endregion }
private void appDocSynched(object sender, Autodesk.Revit.DB.Events.DocumentSynchronizedWithCentralEventArgs e) { Variables.logSyncEnd = DateTime.Now; Variables.logSyncDuration = Variables.logSyncEnd - Variables.logSyncStart; Document doc = e.Document; #region Settings: Reload from Extensible Storage ParameterCommands.Load(doc); #endregion #region Extra: Tracking-Report Differences after Sync IEnumerable <Element> a = TrackChanges.Command.GetTrackedElements(doc); Dictionary <int, string> end_state = TrackChanges.Command.GetSnapshot(a); string results = TrackChanges.Command.ReportDifferences(doc, _start_state, end_state); _start_state = TrackChanges.Command.GetSnapshot(a); #endregion #region Post: Worksharing Info-Synchronized to Central if (Variables.slackOn && Variables.slackWSInfo) { string gif_lg_url = null; string gif_sm_url = null; if (Variables.giphySet > 0) { var giphyClient = new GiphyClient(); string gif_msg = giphyClient.GetRandomGif("ThumbsUp").Content; var gif_resp = JsonConvert.DeserializeObject <Giphy.Response>(gif_msg); if (Variables.giphySet == 1) { gif_sm_url = gif_resp.data.fixed_height_small_url; } if (Variables.giphySet == 2) { gif_lg_url = gif_resp.data.image_url; } } var slackClient = new SlackClient(Variables.slackToken); //Delete previous synching message, if enabled if (Variables.tidySet > 0) { slackClient.DeleteMessage(msgts_synching, Variables.slackChId); msgts_synching.Clear(); } //Post synched message string text = ""; string channel = Variables.slackChId; string botname = "Synching Info"; string icon_url = Variables.icon_revit; var attachments = new Attachments { fallback = Variables.logUsername + "has synched", color = "good", fields = new Fields[] { new Fields { title = "Status", value = Variables.logUsername + " has synched to central.\n[" + Variables.logFileCentralName + " (Size: " + Variables.logFileSize.ToString() + "MB) ]", @short = true }, new Fields { title = "Duration", value = string.Format("{0:hh\\:mm\\:ss}", Variables.logSyncDuration), @short = true } }, image_url = gif_lg_url, thumb_url = gif_sm_url }; string msg_response = slackClient.PostMessage(text, channel: channel, botName: botname, attachments: attachments, icon_url: icon_url).Content; var resp = JsonConvert.DeserializeObject <ChatPostMessageResponse>(msg_response); msgts_synching.Add(resp.ts); } #endregion }
private async static Task TestWithTasks() { var config = new GiphyApiClientConfig(); var restClient = new RestClient(config.BaseUrl); var giphyClient = new GiphyClient(restClient, config); //tests. Console.WriteLine("\nPerforming gifs Tasks..."); var searchTask = await giphyClient.SearchAsync(new SearchParams("Barf") .WithLimit(5) .WithOffset(2) .WithRating("g") .WithLanguage("fr")); Console.WriteLine("\nsearch task results"); HandleMultipleCallback(searchTask); var trendingResult = await giphyClient.TrendingAsync(new TrendingParams(contentRating : "pg-13") .WithFormat("json") .WithLimit(10) .WithOffset(3) .WithRating("g")); Console.WriteLine("trending task results"); HandleMultipleCallback(trendingResult); var translateResult = await giphyClient.TranslateAsync(new TranslateParams(search : "chewy")); Console.WriteLine("translate Task results"); HandleSingleCallback(translateResult); var randomResult = await giphyClient.RandomAsync(new RandomParams() .WithTag("kanye") .WithFormat("json") .WithRating("g")); Console.WriteLine("random task results"); HandleRandomCallback(randomResult); var idResult = await giphyClient.GifByIdAsync(new GifByIdParams(gifId : "3oriNV6Cxf43fczQje")); Console.WriteLine("id task results"); HandleSingleCallback(idResult); var idsResult = await giphyClient.GifsByIdsAsync(new GifsByIdParams(gifIds : new string[] { "3oriNV6Cxf43fczQje", "3oriNRqnlzW4LwLUqI" })); Console.WriteLine("ids task results"); HandleMultipleCallback(idsResult); Console.WriteLine("\nPerforming Stickers Tasks..."); var searchStickersResult = await giphyClient.StickerSearchAsync(new SearchParams("Barf")); Console.WriteLine("search stickers results"); HandleMultipleCallback(searchStickersResult); var trendingStickersResult = await giphyClient.StickerTrendingAsync(new TrendingParams() .WithFormat("json") .WithLimit(10) .WithOffset(0) .WithRating("g")); Console.WriteLine("trending stickers results"); HandleMultipleCallback(trendingStickersResult); var translateStickersResult = await giphyClient.StickerTranslateAsync(new TranslateParams("larb")); Console.WriteLine("translate stickers results"); HandleSingleCallback(translateStickersResult); var randomStickersResult = await giphyClient.StickerRandomAsync(new RandomParams() .WithTag("beef") .WithFormat("json") .WithRating("g")); Console.WriteLine("random stickers results"); HandleRandomCallback(randomStickersResult); }
public SearchService(GiphyClient client, CacheManager cache) { _client = client; _cache = cache; }
public TrendingService(GiphyClient giphyClient) { _giphyClient = giphyClient; }