diff --git a/samples/SampleRestApi/Controllers/UserController.cs b/samples/SampleRestApi/Controllers/UserController.cs index e82be8b..68e0570 100644 --- a/samples/SampleRestApi/Controllers/UserController.cs +++ b/samples/SampleRestApi/Controllers/UserController.cs @@ -60,6 +60,25 @@ public IActionResult SearchByName(string name) return Ok(result); } + [HttpGet("by-name/{name}")] + public IActionResult GetByName(string name) + { + if (string.IsNullOrWhiteSpace(name)) + { + return BadRequest(); + } + + var result = _users.FirstOrDefault(x => + x.FirstName.Contains(name, StringComparison.OrdinalIgnoreCase) || + x.LastName.Contains(name, StringComparison.OrdinalIgnoreCase)); + if (result == null) + { + return NotFound(); + } + + return Ok(result); + } + [HttpGet("wrapped/search")] public IActionResult WrappedSearchByName(string name) { diff --git a/src/HttpClientGenerator/HttpClientGenerator.csproj b/src/HttpClientGenerator/HttpClientGenerator.csproj index b3e89d8..ad3a05b 100644 --- a/src/HttpClientGenerator/HttpClientGenerator.csproj +++ b/src/HttpClientGenerator/HttpClientGenerator.csproj @@ -1,7 +1,7 @@  netstandard2.0 - 0.6.0 + 0.6.1 9.0 diff --git a/src/HttpClientGenerator/Internals/PartialServiceClassSourceBuilder.cs b/src/HttpClientGenerator/Internals/PartialServiceClassSourceBuilder.cs index 24e0551..1ec2c9c 100644 --- a/src/HttpClientGenerator/Internals/PartialServiceClassSourceBuilder.cs +++ b/src/HttpClientGenerator/Internals/PartialServiceClassSourceBuilder.cs @@ -309,7 +309,7 @@ private void DefinePathAndRouteAndQueryParameter(SourceBuilder source, Attribute private bool IsValidParameter(ITypeSymbol type) { - if (!type.IsValueType) + if (type.FullName() != typeof(string).FullName && !type.IsValueType) { return false; } diff --git a/tests/HttpClientCodeGeneratorIntegrationTests/Basics/MyHttpClientBasicScenarioTests.cs b/tests/HttpClientCodeGeneratorIntegrationTests/Basics/MyHttpClientBasicScenarioTests.cs index 7907a35..8b6f911 100644 --- a/tests/HttpClientCodeGeneratorIntegrationTests/Basics/MyHttpClientBasicScenarioTests.cs +++ b/tests/HttpClientCodeGeneratorIntegrationTests/Basics/MyHttpClientBasicScenarioTests.cs @@ -38,6 +38,23 @@ public async Task GetUser_ByValidId_ReturnsExpectedValue() Assert.Equal("+981234567", user.PhoneNumber); } + // Fetch by name + [Fact] + public async Task GetUser_ByValidName_ReturnsExpectedValue() + { + // Arrange + var client = _factory.CreateClient(); + var myClient = new MyHttpService(client); + + // Act + var user = await myClient.GetUserByNameAsync("Will"); + + // Assert + Assert.Equal("Will", user.FirstName); + Assert.Equal("Smith", user.LastName); + Assert.Equal("+981234567", user.PhoneNumber); + } + [Fact] public async Task GetUser_ByInvalidId_Throws404HttpRequestException() { diff --git a/tests/HttpClientCodeGeneratorIntegrationTests/Basics/MyHttpService.cs b/tests/HttpClientCodeGeneratorIntegrationTests/Basics/MyHttpService.cs index ae58d4d..ce01a9d 100644 --- a/tests/HttpClientCodeGeneratorIntegrationTests/Basics/MyHttpService.cs +++ b/tests/HttpClientCodeGeneratorIntegrationTests/Basics/MyHttpService.cs @@ -25,6 +25,9 @@ public MyHttpService(HttpClient httpClient) [HttpGet("user/search")] public partial Task> SearchUserByNameAsync(string name); + [HttpGet("user/by-name/{name}")] + public partial Task GetUserByNameAsync(string name); + [HttpPost("user")] public partial Task CreateUser(User user);