From a41bb9134cc3a13d1c2b0ae859df89b82766f380 Mon Sep 17 00:00:00 2001 From: Roger Barreto <19890735+RogerBarreto@users.noreply.github.com> Date: Tue, 6 Aug 2024 22:34:15 +0100 Subject: [PATCH] .Net: Bugfix - ACA Sessions - Code Interpreter Demo (#7899) # Motivation Resolves #7429 - #7429 --------- Co-authored-by: Roger Barreto --- .../CodeInterpreter/SessionsPythonPlugin.cs | 10 ++++----- .../SessionsRemoteFileMetadata.cs | 2 +- .../Core/SessionsPythonPluginTests.cs | 18 +++++++-------- .../sessions_python_plugin_file_list.json | 22 ++++++++++++------- .../sessions_python_plugin_file_upload.json | 11 ++++++---- 5 files changed, 36 insertions(+), 27 deletions(-) diff --git a/dotnet/src/Plugins/Plugins.Core/CodeInterpreter/SessionsPythonPlugin.cs b/dotnet/src/Plugins/Plugins.Core/CodeInterpreter/SessionsPythonPlugin.cs index 6c92763f3fe4..c8094de65201 100644 --- a/dotnet/src/Plugins/Plugins.Core/CodeInterpreter/SessionsPythonPlugin.cs +++ b/dotnet/src/Plugins/Plugins.Core/CodeInterpreter/SessionsPythonPlugin.cs @@ -155,7 +155,7 @@ public async Task UploadFileAsync( await this.AddHeadersAsync(httpClient).ConfigureAwait(false); using var fileContent = new ByteArrayContent(File.ReadAllBytes(localFilePath)); - using var request = new HttpRequestMessage(HttpMethod.Post, $"{this._poolManagementEndpoint}python/uploadFile?identifier={this._settings.SessionId}&api-version={ApiVersion}") + using var request = new HttpRequestMessage(HttpMethod.Post, $"{this._poolManagementEndpoint}files/upload?identifier={this._settings.SessionId}&api-version={ApiVersion}") { Content = new MultipartFormDataContent { @@ -173,7 +173,7 @@ public async Task UploadFileAsync( var JsonElementResult = JsonSerializer.Deserialize(await response.Content.ReadAsStringAsync().ConfigureAwait(false)); - return JsonSerializer.Deserialize(JsonElementResult.GetProperty("$values")[0].GetRawText())!; + return JsonSerializer.Deserialize(JsonElementResult.GetProperty("value")[0].GetProperty("properties").GetRawText())!; } /// @@ -230,7 +230,7 @@ public async Task> ListFilesAsync() using var httpClient = this._httpClientFactory.CreateClient(); await this.AddHeadersAsync(httpClient).ConfigureAwait(false); - var response = await httpClient.GetAsync(new Uri($"{this._poolManagementEndpoint}python/files?identifier={this._settings.SessionId}&api-version={ApiVersion}")).ConfigureAwait(false); + var response = await httpClient.GetAsync(new Uri($"{this._poolManagementEndpoint}/files?identifier={this._settings.SessionId}&api-version={ApiVersion}")).ConfigureAwait(false); if (!response.IsSuccessStatusCode) { @@ -239,13 +239,13 @@ public async Task> ListFilesAsync() var jsonElementResult = JsonSerializer.Deserialize(await response.Content.ReadAsStringAsync().ConfigureAwait(false)); - var files = jsonElementResult.GetProperty("$values"); + var files = jsonElementResult.GetProperty("value"); var result = new SessionsRemoteFileMetadata[files.GetArrayLength()]; for (var i = 0; i < result.Length; i++) { - result[i] = JsonSerializer.Deserialize(files[i].GetRawText())!; + result[i] = JsonSerializer.Deserialize(files[i].GetProperty("properties").GetRawText())!; } return result; diff --git a/dotnet/src/Plugins/Plugins.Core/CodeInterpreter/SessionsRemoteFileMetadata.cs b/dotnet/src/Plugins/Plugins.Core/CodeInterpreter/SessionsRemoteFileMetadata.cs index 6f7f10ec9c5c..526194618a98 100644 --- a/dotnet/src/Plugins/Plugins.Core/CodeInterpreter/SessionsRemoteFileMetadata.cs +++ b/dotnet/src/Plugins/Plugins.Core/CodeInterpreter/SessionsRemoteFileMetadata.cs @@ -39,7 +39,7 @@ public SessionsRemoteFileMetadata(string filename, int size) /// The last modified time. /// [Description("Last modified time.")] - [JsonPropertyName("last_modified_time")] + [JsonPropertyName("lastModifiedTime")] public DateTime? LastModifiedTime { get; set; } /// diff --git a/dotnet/src/Plugins/Plugins.UnitTests/Core/SessionsPythonPluginTests.cs b/dotnet/src/Plugins/Plugins.UnitTests/Core/SessionsPythonPluginTests.cs index 37bb2aa4a029..789cd85fc353 100644 --- a/dotnet/src/Plugins/Plugins.UnitTests/Core/SessionsPythonPluginTests.cs +++ b/dotnet/src/Plugins/Plugins.UnitTests/Core/SessionsPythonPluginTests.cs @@ -193,14 +193,14 @@ public async Task ItShouldListFilesAsync() // Assert Assert.Contains(result, (item) => - item.Filename == "test.txt" && - item.Size == 680 && - item.LastModifiedTime!.Value.Ticks == 638508470494918207); + item.Filename == "test-file.txt" && + item.Size == 516 && + item.LastModifiedTime!.Value.Ticks == 638585580822423944); Assert.Contains(result, (item) => - item.Filename == "test2.txt" && - item.Size == 1074 && - item.LastModifiedTime!.Value.Ticks == 638508471084916062); + item.Filename == "test-file2.txt" && + item.Size == 211 && + item.LastModifiedTime!.Value.Ticks == 638585580822423944); } [Fact] @@ -210,9 +210,9 @@ public async Task ItShouldUploadFileAsync() var responseContent = await File.ReadAllTextAsync(UpdaloadFileTestDataFilePath); var requestPayload = await File.ReadAllBytesAsync(FileTestDataFilePath); - var expectedResponse = new SessionsRemoteFileMetadata("test.txt", 680) + var expectedResponse = new SessionsRemoteFileMetadata("test-file.txt", 516) { - LastModifiedTime = new DateTime(638508470494918207), + LastModifiedTime = new DateTime(638585526384228269) }; this._messageHandlerStub.ResponseToReturn = new HttpResponseMessage(HttpStatusCode.OK) @@ -223,7 +223,7 @@ public async Task ItShouldUploadFileAsync() var plugin = new SessionsPythonPlugin(this._defaultSettings, this._httpClientFactory); // Act - var result = await plugin.UploadFileAsync(".test.txt", FileTestDataFilePath); + var result = await plugin.UploadFileAsync("test-file.txt", FileTestDataFilePath); // Assert Assert.Equal(result.Filename, expectedResponse.Filename); diff --git a/dotnet/src/Plugins/Plugins.UnitTests/TestData/sessions_python_plugin_file_list.json b/dotnet/src/Plugins/Plugins.UnitTests/TestData/sessions_python_plugin_file_list.json index 57378d5ca1c6..98e5e1c86282 100644 --- a/dotnet/src/Plugins/Plugins.UnitTests/TestData/sessions_python_plugin_file_list.json +++ b/dotnet/src/Plugins/Plugins.UnitTests/TestData/sessions_python_plugin_file_list.json @@ -1,17 +1,23 @@ { "$id": "1", - "$values": [ + "value": [ { "$id": "2", - "filename": "test2.txt", - "size": 1074, - "last_modified_time": "2024-05-09T10:25:08.4916062Z" + "properties": { + "$id": "3", + "filename": "test-file.txt", + "size": 516, + "lastModifiedTime": "2024-08-06T16:21:22.2423944Z" + } }, { - "$id": "3", - "filename": "test.txt", - "size": 680, - "last_modified_time": "2024-05-09T10:24:09.4918207Z" + "$id": "4", + "properties": { + "$id": "5", + "filename": "test-file2.txt", + "size": 211, + "lastModifiedTime": "2024-08-06T16:21:22.2423944Z" + } } ] } \ No newline at end of file diff --git a/dotnet/src/Plugins/Plugins.UnitTests/TestData/sessions_python_plugin_file_upload.json b/dotnet/src/Plugins/Plugins.UnitTests/TestData/sessions_python_plugin_file_upload.json index 22eaaa5f4f72..b052d5f22e9f 100644 --- a/dotnet/src/Plugins/Plugins.UnitTests/TestData/sessions_python_plugin_file_upload.json +++ b/dotnet/src/Plugins/Plugins.UnitTests/TestData/sessions_python_plugin_file_upload.json @@ -1,11 +1,14 @@ { "$id": "1", - "$values": [ + "value": [ { "$id": "2", - "filename": "test.txt", - "size": 680, - "last_modified_time": "2024-05-09T10:24:09.4918207Z" + "properties": { + "$id": "3", + "filename": "test-file.txt", + "size": 516, + "lastModifiedTime": "2024-08-06T14:50:38.4228269Z" + } } ] } \ No newline at end of file