Skip to content

Instantly share code, notes, and snippets.

@Sup3rc4l1fr4g1l1571c3xp14l1d0c10u5
Last active June 13, 2016 09:21

Revisions

  1. Sup3rc4l1fr4g1l1571c3xp14l1d0c10u5 revised this gist Jun 13, 2016. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion nwget.cs
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@
    /**
    *
    * wget like tools in windows
    * wget like tools for .NET 3.5 Client Profile
    *
    * Build:
    * 1. Perform either
  2. Sup3rc4l1fr4g1l1571c3xp14l1d0c10u5 created this gist Jun 13, 2016.
    110 changes: 110 additions & 0 deletions nwget.cs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,110 @@
    /**
    *
    * wget like tools in windows
    *
    * Build:
    * 1. Perform either
    * A) Open the "Command Prompt" from the Start menu .
    * B) Press the Windows key + R key , and enter 'cmd.exe' to shown dialog box.
    * 2. enter %windir%\Microsoft.NET\Framework\v3.5\csc.exe nwget.cs
    *
    * License:
    * NYSL http://www.kmonos.net/nysl/index.en.html
    * Japanese original text: http://www.kmonos.net/nysl/
    *
    */

    namespace nwget
    {
    static class nwget
    {
    static void Main(string[] args)
    {
    if (args.Length != 2)
    {
    System.Console.WriteLine("nwget <output> <URI>");
    return;
    }

    try
    {
    System.Uri remote;
    if (System.Uri.TryCreate(args[1], System.UriKind.Absolute, out remote) == false)
    {
    System.Console.Error.WriteLine("**error: URI {0} is bad format.", args[1]);
    System.Environment.Exit(-1);
    }
    System.Net.HttpWebRequest myHttpWebRequest = null;
    try
    {
    myHttpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(remote);
    }
    catch (System.Exception)
    {
    System.Console.Error.WriteLine("**error: URI {0} is bad format or not supported.", args[1]);
    System.Environment.Exit(-1);
    }
    myHttpWebRequest.MaximumAutomaticRedirections = 10;
    myHttpWebRequest.AllowAutoRedirect = true;

    System.Console.WriteLine("recive from {0}", remote.AbsoluteUri);
    var myHttpWebResponse = (System.Net.HttpWebResponse)myHttpWebRequest.GetResponse();
    using (var output = System.IO.File.OpenWrite(args[0]))
    using (var input = myHttpWebResponse.GetResponseStream())
    {
    if (input != null)
    {
    var contentLength = myHttpWebResponse.ContentLength;
    long reciveLength = 0;
    var buffer = new byte[8192];
    int bytesRead;
    while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
    {
    reciveLength += bytesRead;
    output.Write(buffer, 0, bytesRead);
    System.Console.Write("Recive: {0} / {1} [byte] ({2}%)\r", reciveLength, contentLength, reciveLength * 100 / contentLength);
    }
    System.Console.WriteLine("\nRecive completed");
    System.Environment.Exit(0);
    }
    else
    {
    System.Console.Error.WriteLine("**error: Cannot recive data.");
    System.Environment.Exit(-1);
    }
    }
    }
    catch (System.Net.WebException e)
    {
    if (e.Status == System.Net.WebExceptionStatus.ProtocolError)
    {
    System.Net.HttpWebResponse myHttpWebResponse = (System.Net.HttpWebResponse)e.Response;
    System.Console.Error.WriteLine("**error: {0} - {1}", myHttpWebResponse.StatusCode,
    myHttpWebResponse.StatusDescription);
    System.Environment.Exit(-1);
    } else if (e.Status == System.Net.WebExceptionStatus.Timeout)
    {
    System.Console.Error.WriteLine("**error: Download is timeout.");
    System.Environment.Exit(-1);
    }
    else
    {
    ExceptionHandler(e, "Recive Failed.");
    }
    }
    catch (System.Exception e)
    {
    ExceptionHandler(e, "Recive Failed.");
    }
    }

    private static void ExceptionHandler(System.Exception e, string message)
    {
    System.Console.WriteLine("*error: exception has occurred.");
    System.Console.WriteLine("Message: {0}", e.Message);
    System.Console.WriteLine("StackTrace: {0}", e.StackTrace);
    System.Console.WriteLine(message);
    System.Environment.Exit(-1);
    }
    }
    }