diff --git a/src/nuget-cli/Helpers.cs b/src/nuget-cli/Helpers.cs
index b8443b3..54b5eb6 100644
--- a/src/nuget-cli/Helpers.cs
+++ b/src/nuget-cli/Helpers.cs
@@ -9,75 +9,9 @@ using System.Threading.Tasks;
namespace nuget_cli
{
- public static class Helpers
+ public static class Constants
{
- static readonly string clientVersion = "nuget_cli v1.0";
-
- ///
- /// Creates HTTP POST request & uploads database to server. Author : Farhan Ghumra
- ///
- static internal async Task UploadFilesToServer(
- this PushReport report, Uri uri,
- FileInfo fi, string apikey)
- {
- try
- {
- ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
-
- // using (MultipartContent content = new MultipartContent("ascasc"))
-
- using (var formdata = new MultipartFormDataContent("NKdKd9Yk"))
- {
- using (HttpClient client = new HttpClient())
- {
- // client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
-
- // client.DefaultRequestHeaders.Add("X-NuGet-Client-Version", clientVersion);
- // client.DefaultRequestHeaders.Add("X-NuGet-ApiKey", apikey);
- var dispo = new ContentDispositionHeaderValue("file");
- dispo.FileName = fi.Name;
- dispo.CreationDate = fi.CreationTime;
- dispo.DispositionType = "form-data";
- dispo.Size = fi.Length;
- dispo.ModificationDate = fi.LastAccessTime;
-
- Stream fileStream = fi.OpenRead();
- var streamcontent = new StreamContent(fileStream);
- streamcontent.Headers.ContentDisposition = dispo;
- formdata.Add(streamcontent, fi.Name, fi.Name);
-
- // content.Add(formdata);
- client.BaseAddress = uri;
- HttpRequestMessage put = new HttpRequestMessage(HttpMethod.Put, uri)
- {
- Content = formdata
- };
- put.Headers.Add("X-NuGet-Client-Version", clientVersion);
- put.Headers.Add("X-NuGet-ApiKey", apikey);
- put.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
-
- HttpResponseMessage response = await client.SendAsync(put);
-
- response.EnsureSuccessStatusCode();
- report.StatusCode = response.StatusCode.ToString();
- var respstream = await response.Content.ReadAsStreamAsync();
- var sr = new StreamReader(respstream);
- report.Message = await sr.ReadToEndAsync();
- }
- }
-
-
-
-
-
- }
- catch (Exception rex)
- {
- report.Message = rex.Message;
- report.StatusCode = "internal error";
- Console.Error.WriteLine(rex.Message);
- }
- }
+ public const string ClientVersion = "nuget_cli v1.0";
}
}
diff --git a/src/nuget-cli/Program.Commands.cs b/src/nuget-cli/Program.Commands.cs
index 3a1d9a0..bf44a1f 100644
--- a/src/nuget-cli/Program.Commands.cs
+++ b/src/nuget-cli/Program.Commands.cs
@@ -7,6 +7,7 @@ namespace nuget_cli
partial class Program
{
+ static readonly ServerQueryHandler serverQueryHandler;
private static void SourceList(IEnumerable sargs)
{
@@ -29,7 +30,7 @@ namespace nuget_cli
foreach (string pkg in pkgs)
{
- var report = await PushCommand.RunAsync(pkg,source,apiKey);
+ var report = await PushCommand.RunAsync(serverQueryHandler,pkg,source,apiKey);
pushReports.Add(report);
}
diff --git a/src/nuget-cli/Program.cs b/src/nuget-cli/Program.cs
index bfc87a2..e68d8de 100644
--- a/src/nuget-cli/Program.cs
+++ b/src/nuget-cli/Program.cs
@@ -13,6 +13,11 @@ namespace nuget_cli
private static string apiKey = null;
private static string source = null;
+ static Program()
+ {
+ serverQueryHandler = new ServerQueryHandler();
+ }
+
static void Main(string[] args)
{
@@ -68,6 +73,7 @@ namespace nuget_cli
var push = new Command("push")
{
+
Run = async sargs =>
{
var pargs = pushoptions.Parse(sargs);
@@ -114,6 +120,7 @@ namespace nuget_cli
return;
}
+
commandSet.Run(args);
}
}
diff --git a/src/nuget-cli/PushCommand.cs b/src/nuget-cli/PushCommand.cs
index 6a84d0b..f06f3ff 100644
--- a/src/nuget-cli/PushCommand.cs
+++ b/src/nuget-cli/PushCommand.cs
@@ -9,7 +9,7 @@ namespace nuget_cli
{
internal class PushCommand
{
- static internal async Task RunAsync(string pkg, string source, string apikey)
+ static internal async Task RunAsync(ServerQueryHandler queryHandler, string pkg, string source, string apikey)
{
FileInfo fi = new FileInfo(pkg);
var report = new PushReport
@@ -25,7 +25,7 @@ namespace nuget_cli
try
{
- await report.UploadFilesToServer(new Uri(source), fi, apikey);
+ await queryHandler.UploadFilesToServer(report, new Uri(source), fi, apikey);
}
catch (WebException ex)
{
diff --git a/src/nuget-cli/UploadFilesToServerUsingHttpClient.cs b/src/nuget-cli/UploadFilesToServerUsingHttpClient.cs
new file mode 100644
index 0000000..5b50501
--- /dev/null
+++ b/src/nuget-cli/UploadFilesToServerUsingHttpClient.cs
@@ -0,0 +1,70 @@
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Http;
+using System.Net.Http.Headers;
+using System.Threading.Tasks;
+
+namespace nuget_cli
+{
+ public class HttpClientServerQueryHandler
+ {
+ internal async Task UploadFilesToServerUsingHttpClient(
+ PushReport report, Uri uri,
+ FileInfo fi, string apikey)
+
+ {
+ try
+ {
+ ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
+
+ // using (MultipartContent content = new MultipartContent("ascasc"))
+
+ using (var formdata = new MultipartFormDataContent("NKdKd9Yk"))
+ {
+ using (HttpClient client = new HttpClient())
+ {
+ var dispo = new ContentDispositionHeaderValue("file")
+ {
+ FileName = fi.Name,
+ CreationDate = fi.CreationTime,
+ DispositionType = "form-data",
+ Size = fi.Length,
+ ModificationDate = fi.LastAccessTime
+ };
+
+ Stream fileStream = fi.OpenRead();
+ var streamcontent = new StreamContent(fileStream);
+ streamcontent.Headers.ContentDisposition = dispo;
+ formdata.Add(streamcontent, fi.Name, fi.Name);
+
+ // content.Add(formdata);
+ client.BaseAddress = uri;
+ HttpRequestMessage put = new HttpRequestMessage(HttpMethod.Put, uri)
+ {
+ Content = formdata
+ };
+ put.Headers.Add("X-NuGet-Client-Version", Constants.ClientVersion);
+ put.Headers.Add("X-NuGet-ApiKey", apikey);
+ put.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
+
+ HttpResponseMessage response = await client.SendAsync(put);
+
+ response.EnsureSuccessStatusCode();
+ report.StatusCode = response.StatusCode.ToString();
+ var respstream = await response.Content.ReadAsStreamAsync();
+ var sr = new StreamReader(respstream);
+ report.Message = await sr.ReadToEndAsync();
+ }
+ }
+
+ }
+ catch (Exception rex)
+ {
+ report.Message = rex.Message;
+ report.StatusCode = "internal error";
+ Console.Error.WriteLine(rex.Message);
+ }
+ }
+ }
+}
\ No newline at end of file