Skip to content

Commit 30611c1

Browse files
committed
Added OnSuccessAsync and OnFailureAsync
1 parent ff89b55 commit 30611c1

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

src/FluentHttpClient/DeserializationExtensions.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,17 @@ public static async Task<T> DeserializeJsonAsync<T>(this Task<HttpResponseMessag
5252
? JsonSerializer.Deserialize<T>(await response.GetResponseStreamAsync(), options)
5353
: defaultAction(response);
5454
}
55+
56+
public static async Task<T> DeserializeJsonAsync<T>(this Task<HttpResponseMessage> result, Func<HttpResponseMessage, Task<T>> defaultAction)
57+
{
58+
return await result.DeserializeJsonAsync<T>(defaultAction, Options);
59+
}
60+
61+
public static async Task<T> DeserializeJsonAsync<T>(this Task<HttpResponseMessage> taskResponse, Func<HttpResponseMessage, Task<T>> defaultAction, JsonSerializerOptions options)
62+
{
63+
var response = await taskResponse;
64+
return (response.IsSuccessStatusCode)
65+
? JsonSerializer.Deserialize<T>(await response.GetResponseStreamAsync(), options)
66+
: await defaultAction(response);
67+
}
5568
}

src/FluentHttpClient/FluentHttpClient.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<PackageTags>fluent httpclient rest http api web client</PackageTags>
1515
<AssemblyVersion>$(Version)</AssemblyVersion>
1616
<FileVersion>$(Version)</FileVersion>
17-
<Version>1.2.0</Version>
17+
<Version>1.3.0</Version>
1818
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
1919
<PackageLicenseFile>LICENSE</PackageLicenseFile>
2020
<RepositoryUrl>https://github.com/scottoffen/fluenthttpclient</RepositoryUrl>

src/FluentHttpClient/HttpResponseMessageExtensions.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,29 @@ public static async Task<HttpResponseMessage> OnFailure(this Task<HttpResponseMe
5555
return await Task.FromResult(response);
5656
}
5757

58+
public static async Task<HttpResponseMessage> OnFailureAsync(this Task<HttpResponseMessage> taskResponseMessage, Func<HttpResponseMessage, Task> action, bool suppressException = false)
59+
{
60+
var response = await taskResponseMessage;
61+
if (!response.IsSuccessStatusCode)
62+
{
63+
await action(response);
64+
if (!suppressException) response.EnsureSuccessStatusCode();
65+
}
66+
67+
return await Task.FromResult(response);
68+
}
69+
5870
public static async Task<HttpResponseMessage> OnSuccess(this Task<HttpResponseMessage> taskResponseMessage, Action<HttpResponseMessage> action)
5971
{
6072
var response = await taskResponseMessage;
6173
if (response.IsSuccessStatusCode) action(response);
6274
return await Task.FromResult(response);
6375
}
76+
77+
public static async Task<HttpResponseMessage> OnSuccessAsync(this Task<HttpResponseMessage> taskResponseMessage, Func<HttpResponseMessage, Task> action)
78+
{
79+
var response = await taskResponseMessage;
80+
if (response.IsSuccessStatusCode) await action(response);
81+
return await Task.FromResult(response);
82+
}
6483
}

0 commit comments

Comments
 (0)