Skip to content

Commit 3172b5a

Browse files
Amin GolMahalehAmin GolMahaleh
authored andcommitted
adding many overloading extension methods when the httpClientRequest is null.
1 parent e564550 commit 3172b5a

File tree

3 files changed

+130
-12
lines changed

3 files changed

+130
-12
lines changed

HttpClientToCurl/Builder.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Net;
12
using System.Net.Mime;
23
using System.Text;
34
using System.Web;
@@ -34,7 +35,7 @@ internal static StringBuilder AddAbsoluteUrl(this StringBuilder stringBuilder, s
3435
inputBaseUrl = inputBaseUrl.Remove(inputBaseUrl.Length - 1);
3536

3637
string inputUri = requestUri?.Trim();
37-
38+
3839
if (!string.IsNullOrWhiteSpace(inputUri) && inputUri.StartsWith("/"))
3940
inputUri = inputUri.Remove(0, 1);
4041

@@ -51,12 +52,12 @@ internal static StringBuilder AddHeaders(this StringBuilder stringBuilder, HttpC
5152
bool hasHeader = false;
5253
if (needAddDefaultHeaders && httpClient.DefaultRequestHeaders.Any())
5354
{
54-
foreach (var row in httpClient.DefaultRequestHeaders)
55+
foreach (var header in httpClient.DefaultRequestHeaders.Where(dh => dh.Key != HttpRequestHeader.ContentLength.ToString()))
5556
{
5657
stringBuilder
5758
.Append("-H")
5859
.Append(' ')
59-
.Append($"\'{row.Key}: {row.Value.FirstOrDefault()}\'")
60+
.Append($"\'{header.Key}: {header.Value.FirstOrDefault()}\'")
6061
.Append(' ');
6162
}
6263

@@ -65,12 +66,12 @@ internal static StringBuilder AddHeaders(this StringBuilder stringBuilder, HttpC
6566

6667
if (httpRequestMessage.Headers.Any())
6768
{
68-
foreach (var row in httpRequestMessage.Headers)
69+
foreach (var header in httpRequestMessage.Headers.Where(h => h.Key != HttpRequestHeader.ContentLength.ToString()))
6970
{
7071
stringBuilder
7172
.Append("-H")
7273
.Append(' ')
73-
.Append($"\'{row.Key}: {row.Value.FirstOrDefault()}\'")
74+
.Append($"\'{header.Key}: {header.Value.FirstOrDefault()}\'")
7475
.Append(' ');
7576
}
7677

@@ -79,12 +80,12 @@ internal static StringBuilder AddHeaders(this StringBuilder stringBuilder, HttpC
7980

8081
if (httpRequestMessage.Content != null && httpRequestMessage.Content.Headers.Any())
8182
{
82-
foreach (var row in httpRequestMessage.Content.Headers)
83+
foreach (var header in httpRequestMessage.Content.Headers.Where(h => h.Key != HttpRequestHeader.ContentLength.ToString()))
8384
{
8485
stringBuilder
8586
.Append("-H")
8687
.Append(' ')
87-
.Append($"\'{row.Key}: {row.Value.FirstOrDefault()}\'")
88+
.Append($"\'{header.Key}: {header.Value.FirstOrDefault()}\'")
8889
.Append(' ');
8990
}
9091

HttpClientToCurl/Main.cs

Lines changed: 99 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using HttpClientToCurl.Config;
1+
using System.Net.Http.Headers;
2+
using HttpClientToCurl.Config;
23
using HttpClientToCurl.Utility;
34

45
namespace HttpClientToCurl;
@@ -7,7 +8,11 @@ public static class Main
78
{
89
#region :: EXTENSIONS ::
910

10-
public static string GenerateCurlInString(this HttpClient httpClient, HttpRequestMessage httpRequestMessage, string requestUri = null, Action<StringConfig> config = null)
11+
public static string GenerateCurlInString(
12+
this HttpClient httpClient,
13+
HttpRequestMessage httpRequestMessage,
14+
string requestUri = null,
15+
Action<StringConfig> config = null)
1116
{
1217
var stringConfig = new StringConfig();
1318
config?.Invoke(stringConfig);
@@ -25,15 +30,73 @@ public static string GenerateCurlInString(this HttpClient httpClient, HttpReques
2530

2631
return script;
2732
}
28-
29-
public static void GenerateCurlInConsole(this HttpClient httpClient, HttpRequestMessage httpRequestMessage, string requestUri = null, Action<ConsoleConfig> config = null)
33+
34+
public static string GenerateCurlInString(
35+
this HttpClient httpClient,
36+
HttpMethod httpMethod,
37+
string requestUri = null,
38+
HttpRequestHeaders requestHeaders = null,
39+
HttpContent requestBody = null,
40+
Action<StringConfig> config = null)
41+
{
42+
var stringConfig = new StringConfig();
43+
config?.Invoke(stringConfig);
44+
45+
if (!stringConfig.TurnOn)
46+
return string.Empty;
47+
48+
var httpRequestMessage = Helpers.FillHttpRequestMessage(httpMethod, requestHeaders, requestBody);
49+
50+
string script = Generator.GenerateCurl(
51+
httpClient,
52+
httpRequestMessage,
53+
string.IsNullOrWhiteSpace(requestUri)
54+
? httpRequestMessage.RequestUri?.ToString()
55+
: requestUri,
56+
stringConfig.NeedAddDefaultHeaders);
57+
58+
return script;
59+
}
60+
61+
public static void GenerateCurlInConsole(
62+
this HttpClient httpClient,
63+
HttpRequestMessage httpRequestMessage,
64+
string requestUri = null,
65+
Action<ConsoleConfig> config = null)
66+
{
67+
var consoleConfig = new ConsoleConfig();
68+
config?.Invoke(consoleConfig);
69+
70+
if (!consoleConfig.TurnOn)
71+
return;
72+
73+
string script = Generator.GenerateCurl(
74+
httpClient,
75+
httpRequestMessage,
76+
string.IsNullOrWhiteSpace(requestUri)
77+
? httpRequestMessage.RequestUri?.ToString()
78+
: requestUri,
79+
consoleConfig.NeedAddDefaultHeaders);
80+
81+
Helpers.WriteInConsole(script, consoleConfig.EnableCodeBeautification, httpRequestMessage.Method);
82+
}
83+
84+
public static void GenerateCurlInConsole(
85+
this HttpClient httpClient,
86+
HttpMethod httpMethod,
87+
string requestUri = null,
88+
HttpRequestHeaders requestHeaders = null,
89+
HttpContent requestBody = null,
90+
Action<ConsoleConfig> config = null)
3091
{
3192
var consoleConfig = new ConsoleConfig();
3293
config?.Invoke(consoleConfig);
3394

3495
if (!consoleConfig.TurnOn)
3596
return;
3697

98+
var httpRequestMessage = Helpers.FillHttpRequestMessage(httpMethod, requestHeaders, requestBody);
99+
37100
string script = Generator.GenerateCurl(
38101
httpClient,
39102
httpRequestMessage,
@@ -45,7 +108,11 @@ public static void GenerateCurlInConsole(this HttpClient httpClient, HttpRequest
45108
Helpers.WriteInConsole(script, consoleConfig.EnableCodeBeautification, httpRequestMessage.Method);
46109
}
47110

48-
public static void GenerateCurlInFile(this HttpClient httpClient, HttpRequestMessage httpRequestMessage, string requestUri = null, Action<FileConfig> config = null)
111+
public static void GenerateCurlInFile(
112+
this HttpClient httpClient,
113+
HttpRequestMessage httpRequestMessage,
114+
string requestUri = null,
115+
Action<FileConfig> config = null)
49116
{
50117
var fileConfig = new FileConfig();
51118
config?.Invoke(fileConfig);
@@ -64,5 +131,32 @@ public static void GenerateCurlInFile(this HttpClient httpClient, HttpRequestMes
64131
Helpers.WriteInFile(script, fileConfig.Filename, fileConfig.Path);
65132
}
66133

134+
public static void GenerateCurlInFile(
135+
this HttpClient httpClient,
136+
HttpMethod httpMethod,
137+
string requestUri = null,
138+
HttpRequestHeaders requestHeaders = null,
139+
HttpContent requestBody = null,
140+
Action<FileConfig> config = null)
141+
{
142+
var fileConfig = new FileConfig();
143+
config?.Invoke(fileConfig);
144+
145+
if (!fileConfig.TurnOn)
146+
return;
147+
148+
var httpRequestMessage = Helpers.FillHttpRequestMessage(httpMethod, requestHeaders, requestBody);
149+
150+
string script = Generator.GenerateCurl(
151+
httpClient,
152+
httpRequestMessage,
153+
string.IsNullOrWhiteSpace(requestUri)
154+
? httpRequestMessage.RequestUri?.ToString()
155+
: requestUri,
156+
fileConfig.NeedAddDefaultHeaders);
157+
158+
Helpers.WriteInFile(script, fileConfig.Filename, fileConfig.Path);
159+
}
160+
67161
#endregion
68162
}

HttpClientToCurl/Utility/Helpers.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
using System.Net.Http.Headers;
2+
13
namespace HttpClientToCurl.Utility;
24

35
public static class Helpers
@@ -31,4 +33,25 @@ public static void WriteInFile(string script, string filename, string path)
3133
streamWriter.WriteLine(script);
3234
}
3335
}
36+
37+
public static HttpRequestMessage FillHttpRequestMessage(HttpMethod httpMethod, HttpRequestHeaders requestHeaders, HttpContent requestBody)
38+
{
39+
var httpRequestMessage = new HttpRequestMessage
40+
{
41+
Method = httpMethod
42+
};
43+
44+
if (requestBody is not null)
45+
httpRequestMessage.Content = requestBody;
46+
47+
if (requestHeaders is not null && requestHeaders.Any())
48+
{
49+
foreach (var header in requestHeaders)
50+
{
51+
httpRequestMessage.Headers.Add(header.Key, header.Value);
52+
}
53+
}
54+
55+
return httpRequestMessage;
56+
}
3457
}

0 commit comments

Comments
 (0)