System.Net.WebRequest.Create(System.Uri)

Here are the examples of the csharp api System.Net.WebRequest.Create(System.Uri) taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

596 Examples 7

19 Source : DownloadableAudioListProcessor.cs
with GNU General Public License v2.0
from ganjoor

public static List<Dictionary<string, string>> RetrieveList(string url, out string Exception)
        {
            List<Dictionary<string, string>> lst = new List<Dictionary<string, string>>();
            try
            {
                WebRequest req = WebRequest.Create(url);
                GConnectionManager.ConfigureProxy(ref req);
                using (WebResponse response = req.GetResponse())
                {
                    using (Stream stream = response.GetResponseStream())
                    {
                        using (StreamReader reader = new StreamReader(stream))
                        {
                            XmlDoreplacedent doc = new XmlDoreplacedent();
                            doc.LoadXml(reader.ReadToEnd());


                            //Collect List:
                            XmlNodeList paudioNodes = doc.GetElementsByTagName("PoemAudio");
                            foreach (XmlNode gdbNode in paudioNodes)
                            {
                                Dictionary<string, string> audioInfo = new Dictionary<string, string>();
                                foreach (XmlNode Node in gdbNode.ChildNodes)
                                {
                                    audioInfo.Add(Node.Name, Node.InnerText);                                   
                                }
                                lst.Add(audioInfo);
                            }

                        }
                    }
                }
                Exception = string.Empty;
                return lst;
            }
            catch (Exception exp)
            {
                Exception = exp.Message;
                return null;
            }
        }

19 Source : DownloadableAudioListProcessor.cs
with GNU General Public License v2.0
from ganjoor

public static bool DownloadAudioXml(string url, string targetDir, bool overwrite, out string Exception)
        {
            Exception = string.Empty;
            Uri uri = new Uri(url);
            string targetFilePath = Path.Combine(targetDir, Path.GetFileName(uri.LocalPath));

            try
            {
                if(File.Exists(targetFilePath))
                    if (!overwrite)
                    {
                        return true;
                    }
                    else
                    {
                        File.Delete(targetFilePath);
                    }
                WebRequest req = WebRequest.Create(url);
                GConnectionManager.ConfigureProxy(ref req);
                using (WebResponse response = req.GetResponse())
                {
                    using (Stream stream = response.GetResponseStream())
                    {
                        using (StreamReader reader = new StreamReader(stream))
                        {

                            XmlDoreplacedent doc = new XmlDoreplacedent(); //this is unnecessary, but at least does some kind of verification
                            doc.LoadXml(reader.ReadToEnd());                            

                            doc.Save(targetFilePath);

                        }
                    }
                }                
                return true;
            }
            catch (Exception exp)
            {
                Exception = exp.Message;
                return false;
            }
        }

19 Source : DownloadUtilityClass.cs
with GNU General Public License v2.0
from ganjoor

public static string DownloadFile(string sUrlToReadFileFrom, string TargetDir, BackgroundWorker backgroundWorker)
        {
            // first, we need to get the exact size (in bytes) of the file we are downloading
            
            Uri url = new Uri(sUrlToReadFileFrom);

            System.Net.WebRequest req = System.Net.WebRequest.Create(url);            
            if (req is System.Net.HttpWebRequest)
            {
                System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)req;

                System.Net.HttpWebResponse response;

                try
                {
                    response = (System.Net.HttpWebResponse)request.GetResponse();
                }
                catch(WebException)
                {
                    sUrlToReadFileFrom = sUrlToReadFileFrom.Replace("https", "http"); // this is a workaround for https://i.ganjoor.net recent problems
                    url = new Uri(sUrlToReadFileFrom);
                    req = System.Net.WebRequest.Create(url);
                    request = (System.Net.HttpWebRequest)req;
                    response = (System.Net.HttpWebResponse)request.GetResponse();
                }

                response.Close();

                string sFilePathToWriteFileTo = Path.Combine(TargetDir, Path.GetFileName(response.ResponseUri.LocalPath));

                // gets the size of the file in bytes

                Int64 iSize = response.ContentLength;



                // keeps track of the total bytes downloaded so we can update the progress bar

                Int64 iRunningByteTotal = 0;



                // use the webclient object to download the file

                using (System.Net.WebClient client = new System.Net.WebClient())
                {

                    // open the file at the remote URL for reading

                    using (System.IO.Stream streamRemote = client.OpenRead(new Uri(sUrlToReadFileFrom)))
                    {

                        // using the FileStream object, we can write the downloaded bytes to the file system

                        using (Stream streamLocal = new FileStream(sFilePathToWriteFileTo, FileMode.Create, FileAccess.Write, FileShare.None))
                        {

                            // loop the stream and get the file into the byte buffer

                            int iByteSize = 0;

                            byte[] byteBuffer = new byte[iSize];

                            while ((iByteSize = streamRemote.Read(byteBuffer, 0, byteBuffer.Length)) > 0)
                            {

                                // write the bytes to the file system at the file path specified

                                streamLocal.Write(byteBuffer, 0, iByteSize);

                                iRunningByteTotal += iByteSize;



                                // calculate the progress out of a base "100"

                                double dIndex = (double)(iRunningByteTotal);

                                double dTotal = (double)byteBuffer.Length;


                                double dProgressPercentage = (dIndex / dTotal);

                                int iProgressPercentage = (int)(dProgressPercentage * 100);



                                // update the progress bar

                                backgroundWorker.ReportProgress(iProgressPercentage);

                            }



                            // clean up the file stream

                            streamLocal.Close();

                        }



                        // close the connection to the remote server

                        streamRemote.Close();

                    }

                }
                return sFilePathToWriteFileTo;
            }
            else
                if (req is System.Net.FileWebRequest)
                {
                    string sFilePathToWriteFileTo = Path.Combine(TargetDir, Path.GetFileName(sUrlToReadFileFrom));
                    File.Copy(sUrlToReadFileFrom, sFilePathToWriteFileTo, true);
                    return sFilePathToWriteFileTo;
                }
                else
                    return string.Empty;
            
        }

19 Source : MainForm.cs
with GNU General Public License v2.0
from ganjoor

private void CheckForUpdate(bool Prompt)
        {
            try
            {
                WebRequest req = WebRequest.Create("http://dg.ganjoor.net/version.xml");
                GConnectionManager.ConfigureProxy(ref req);
                using (WebResponse response = req.GetResponse())
                {
                    using (Stream stream = response.GetResponseStream())
                    {
                        using (StreamReader reader = new StreamReader(stream))
                        {
                            XmlDoreplacedent doc = new XmlDoreplacedent();
                            doc.LoadXml(reader.ReadToEnd());
                            int MyVersionMajor = replacedembly.GetExecutingreplacedembly().GetName().Version.Major;
                            int MyVersionMinor = replacedembly.GetExecutingreplacedembly().GetName().Version.Minor;
                            int VersionMajor = 0;
                            int VersionMinor = 0;
                            string updateUrl = string.Empty;
                            XmlNode versionNode = doc.GetElementsByTagName("Version")[0];
                            foreach (XmlNode Node in versionNode.ChildNodes)
                            {
                                if (Node.Name == "Major")
                                    VersionMajor = Convert.ToInt32(Node.InnerText);
                                else
                                    if (Node.Name == "Minor")
                                    VersionMinor = Convert.ToInt32(Node.InnerText);
                                else
                                        if (Node.Name == "UpdateUrl")
                                {
                                    if (string.IsNullOrEmpty(updateUrl))
                                        updateUrl = Node.InnerText;
                                }
                                else
                                            if (Node.Name == "UpdateUrl162Plus")
                                    updateUrl = Node.InnerText;

                            }
                            if (VersionMajor == MyVersionMajor && VersionMinor == MyVersionMinor)
                            {
                                if (Prompt)
                                {
                                    MessageBox.Show("شما آخرین ویرایش گنجور رومیزی را در اختیار دارید.", "تبریک", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading | MessageBoxOptions.RightAlign);
                                }
                            }
                            else
                            {
                                if (
                                MessageBox.Show("ویرایش جدیدتر " + VersionMajor.ToString() + "." + VersionMinor.ToString() + " از نرم‌افزار ارائه شده است. صفحهٔ دریافت باز شود؟ ", "ویرایش جدید", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading | MessageBoxOptions.RightAlign)
                                   ==
                                   DialogResult.Yes
                                    )
                                {
                                    System.Diagnostics.Process.Start(updateUrl);
                                    if (!Prompt)//check for new gdbs
                                        return;
                                }
                            }
                        }
                    }
                }

                if (!Prompt)//check for new gdbs
                {
                    string strException;
                    List<GDBInfo> Lst = GDBListProcessor.RetrieveList("http://i.ganjoor.net/android/androidgdbs.xml", out strException);
                    if (Lst != null && string.IsNullOrEmpty(strException))
                    {
                        List<GDBInfo> finalList = new List<GDBInfo>();
                        DbBrowser db = new DbBrowser();
                        foreach (GDBInfo gdb in Lst)
                            if (
                                !db.IsInGDBIgnoreList(gdb.CatID)
                                &&
                                db.GetCategory(gdb.CatID) == null
                               )
                            {
                                finalList.Add(gdb);
                            }
                        if (finalList.Count > 0)
                        {
                            using (NewGDBFound dlg = new NewGDBFound(finalList))
                            {
                                if (dlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
                                    using (DownloadingGdbList dwnDlg = new DownloadingGdbList(dlg.dwnldList))
                                        if (dwnDlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
                                            foreach (string DownloadedFile in dwnDlg.DownloadedFiles)
                                            {
                                                ImportGdb(DownloadedFile);
                                                if (Settings.Default.DeleteDownloadedFiles)
                                                    File.Delete(DownloadedFile);
                                            }
                                foreach (int CatID in dlg.IgnoreList)
                                    db.AddToGDBIgnoreList(CatID);
                            }
                        }
                    }

                }
            }
            catch (Exception exp)
            {
                if (Prompt)
                {
                    MessageBox.Show(exp.Message, "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

19 Source : GDBListProcessor.cs
with GNU General Public License v2.0
from ganjoor

public static bool RetrieveProperties(string url, out string Name, out string Description, out string MoreInfoUrl)
        {
            Name = Description = MoreInfoUrl = "";
            try
            {
                WebRequest req = WebRequest.Create(url);
                GConnectionManager.ConfigureProxy(ref req);
                using (WebResponse response = req.GetResponse())
                {
                    using (Stream stream = response.GetResponseStream())
                    {
                        using (StreamReader reader = new StreamReader(stream))
                        {
                            XmlDoreplacedent doc = new XmlDoreplacedent();
                            doc.LoadXml(reader.ReadToEnd());

                            //Should Redirect?
                            XmlNodeList ndListRedirect = doc.GetElementsByTagName("RedirectInfo");
                            if (ndListRedirect.Count > 0)
                            {
                                XmlNode redirectNode = ndListRedirect[0];
                                foreach (XmlNode Node in redirectNode.ChildNodes)
                                {
                                    if (Node.Name == "Url")
                                        if (!string.IsNullOrEmpty(Node.InnerText))
                                        {
                                            return RetrieveProperties(Node.InnerText, out Name, out Description, out MoreInfoUrl);
                                        }
                                }
                            }

                            XmlNodeList nameNodeList = doc.GetElementsByTagName("Name");
                            if (nameNodeList != null && nameNodeList.Count == 1)
                                Name = nameNodeList[0].InnerText;
                            XmlNodeList descNodeList = doc.GetElementsByTagName("Description");
                            if (descNodeList != null && descNodeList.Count == 1)
                                Description = descNodeList[0].InnerText;
                            XmlNodeList urlNodeList = doc.GetElementsByTagName("MoreInfoUrl");
                            if (urlNodeList != null && urlNodeList.Count == 1)
                                MoreInfoUrl = urlNodeList[0].InnerText;
                            return true;
                        }
                    }
                }
            }
            catch
            {
                return false;
            }

        }

19 Source : GDBListProcessor.cs
with GNU General Public License v2.0
from ganjoor

public static List<GDBInfo> RetrieveList(string url, out string Exception)
        {
            List<GDBInfo> lstGDBs = new List<GDBInfo>();
            try
            {
                WebRequest req = WebRequest.Create(url);
                GConnectionManager.ConfigureProxy(ref req);
                using (WebResponse response = req.GetResponse())
                {
                    using (Stream stream = response.GetResponseStream())
                    {
                        using (StreamReader reader = new StreamReader(stream))
                        {
                            XmlDoreplacedent doc = new XmlDoreplacedent();
                            doc.LoadXml(reader.ReadToEnd());

                            //Should Redirect?
                            XmlNodeList ndListRedirect = doc.GetElementsByTagName("RedirectInfo");
                            if (ndListRedirect.Count > 0)
                            {
                                XmlNode redirectNode = ndListRedirect[0];
                                foreach (XmlNode Node in redirectNode.ChildNodes)
                                {
                                    if (Node.Name == "Url")
                                        if (!string.IsNullOrEmpty(Node.InnerText))
                                        {
                                            return RetrieveList(Node.InnerText, out Exception);
                                        }
                                }
                            }

                            //Collect List:
                            lstGDBs.Clear();
                            XmlNodeList gdbNodes = doc.GetElementsByTagName("gdb");
                            foreach (XmlNode gdbNode in gdbNodes)
                            {
                                GDBInfo gdbInfo = new GDBInfo();
                                foreach (XmlNode Node in gdbNode.ChildNodes)
                                {
                                    switch (Node.Name)
                                    {
                                        case "CatName":
                                            gdbInfo.CatName = Node.InnerText;
                                            break;
                                        case "PoetID":
                                            gdbInfo.PoetID = Convert.ToInt32(Node.InnerText);
                                            break;
                                        case "CatID":
                                            gdbInfo.CatID = Convert.ToInt32(Node.InnerText);
                                            break;
                                        case "DownloadUrl":
                                            gdbInfo.DownloadUrl = Node.InnerText;
                                            break;
                                        case "BlogUrl":
                                            gdbInfo.BlogUrl = Node.InnerText;
                                            break;
                                        case "FileExt":
                                            gdbInfo.FileExt = Node.InnerText;
                                            break;
                                        case "ImageUrl":
                                            gdbInfo.ImageUrl = Node.InnerText;
                                            break;
                                        case "FileSizeInByte":
                                            gdbInfo.FileSizeInByte = Convert.ToInt32(Node.InnerText);
                                            break;
                                        case "LowestPoemID":
                                            gdbInfo.LowestPoemID = Convert.ToInt32(Node.InnerText);
                                            break;
                                        case "PubDate":
                                            {
                                                string[] dateParts = Node.InnerText.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
                                                int Year = Convert.ToInt32(dateParts[0]);
                                                int Month = Convert.ToInt32(dateParts[1]);
                                                int Day = Convert.ToInt32(dateParts[2]);
                                                gdbInfo.PubDate = new DateTime(Year, Month, Day);
                                            }
                                            break;

                                    }

                                }
                                lstGDBs.Add(gdbInfo);
                            }

                        }
                    }
                }
                Exception = string.Empty;
                return lstGDBs;
            }
            catch (Exception exp)
            {
                Exception = exp.Message;
                return null;
            }
        }

19 Source : SVNSourceControl.cs
with Apache License 2.0
from Ginger-Automation

public override bool TestConnection(ref string error)
        {
            try
            {
                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(
                   delegate
                   {
                       return true;
                   }
                   );
                WebResponse response = null;
                bool result = false;
                if (App.UserProfile.SourceControlURL.ToUpper().Trim().StartsWith("HTTP"))
                {
                    WebRequest request = WebRequest.Create(App.UserProfile.SourceControlURL);
                    request.Timeout = 15000;
                    request.Credentials = new System.Net.NetworkCredential(App.UserProfile.SourceControlUser, App.UserProfile.SourceControlPreplaced);
                    response = (WebResponse)request.GetResponse();
               }
                else if (App.UserProfile.SourceControlURL.ToUpper().Trim().StartsWith("SVN"))
                {
                    using (SvnClient sc = new SvnClient())
                    {
                        sc.Authentication.DefaultCredentials = new System.Net.NetworkCredential(App.UserProfile.SourceControlUser, App.UserProfile.SourceControlPreplaced);
                        Uri targetUri = new Uri(App.UserProfile.SourceControlURL);
                        var target = SvnTarget.FromUri(targetUri);
                        Collection<SvnInfoEventArgs> info;
                        result = sc.GetInfo(target, new SvnInfoArgs { ThrowOnError = false }, out info);
                    }
                }

                if (response != null || result)
                    return true;
                else
                {
                    error = "No Details";
                    return false;
                }
            }
            catch (Exception ex)
            {
                error = ex.Message;
                return false;
            }
        }

19 Source : SVNSourceControl.cs
with Apache License 2.0
from Ginger-Automation

public override bool TestConnection(ref string error)
        {
            WebResponse response = null;
            try
            {
                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(
                   delegate
                   {
                       return true;
                   }
                   );

                bool result = false;
                if (SourceControlURL.ToUpper().Trim().StartsWith("HTTP"))
                {
                    if (!SourceControlURL.EndsWith("/"))
                    {
                        SourceControlURL = SourceControlURL + "/";
                    }
                    WebRequest request = WebRequest.Create(SourceControlURL);

                    request.Timeout = SourceControlTimeout * 1000;
                    request.Credentials = new System.Net.NetworkCredential(SourceControlUser, SourceControlPreplaced);
                    response = (WebResponse)request.GetResponse();
                }
                else if (SourceControlURL.ToUpper().Trim().StartsWith("SVN"))
                {
                    using (SvnClient sc = new SvnClient())
                    {
                        sc.Authentication.DefaultCredentials = new System.Net.NetworkCredential(SourceControlUser, SourceControlPreplaced);
                        Uri targetUri = new Uri(SourceControlURL);
                        var target = SvnTarget.FromUri(targetUri);
                        Collection<SvnInfoEventArgs> info;
                        result = sc.GetInfo(target, new SvnInfoArgs { ThrowOnError = false }, out info);
                    }
                }

                if (response != null || result)
                {
                    return true;
                }
                else
                {
                    error = "No Details";
                    return false;
                }
            }
            catch (Exception ex)
            {
                error = ex.Message;
                if (response != null)
                {
                    response.Close();
                }
                return false;
            }
            finally
            {
                //Close Response
                if (response != null)
                {
                    response.Close();
                }
            }
        }

19 Source : SVNSourceControl.cs
with Apache License 2.0
from Ginger-Automation

public override ObservableList<SolutionInfo> GetProjectsList()
        {
            ObservableList<SolutionInfo> SourceControlSolutions = new ObservableList<SolutionInfo>();

            //check which path to show to download
            string localPath = SourceControlLocalFolder;
            if (IsImportSolution)
            {
                localPath = SourceControlLocalFolderForGlobalSolution;
            }

            if (SourceControlURL.ToUpper().Trim().StartsWith("HTTP"))
            {
                WebRequest request = WebRequest.Create(SourceControlURL);
                request.Timeout = 60000;
                request.Credentials = new System.Net.NetworkCredential(SourceControlUser, SourceControlPreplaced);
                SourceControlSolutions.Clear();
                Stream objStream;

                objStream = request.GetResponse().GetResponseStream();
                StreamReader objReader = new StreamReader(objStream);

                //quick and dirty way to get the folder instead of messing with XML
                string sLine = "";
                while (!objReader.EndOfStream)
                {
                    sLine = objReader.ReadLine();
                    if (sLine.Contains("dir name"))
                    {
                        int i1 = sLine.IndexOf("dir name=");
                        int len = sLine.IndexOf(" href") - i1 - 11;
                        string SolutionName = sLine.Substring(i1 + 10, len);

                        AddSolution(SourceControlSolutions, localPath + @"\" + SolutionName, SolutionName);
                    }
                    else if (sLine.StartsWith("  <li><a href=\""))
                    {
                        int start = sLine.IndexOf("\"");
                        sLine = sLine.Substring(start + 1);
                        int end = sLine.IndexOf("\"");
                        string SolutionName = sLine.Substring(0, end - 1);

                        if (!SolutionName.Contains("."))
                            AddSolution(SourceControlSolutions, localPath + @"\" + SolutionName, SolutionName);
                    }
                }
            }
            else if (SourceControlURL.ToUpper().Trim().StartsWith("SVN"))
            {
                using (SvnClient sc = new SvnClient())
                {
                    sc.Authentication.DefaultCredentials = new System.Net.NetworkCredential(SourceControlUser, SourceControlPreplaced);
                    Uri targetUri = new Uri(SourceControlURL);
                    var target = SvnTarget.FromUri(targetUri);
                    Collection<SvnInfoEventArgs> info;
                    bool result = sc.GetInfo(target, new SvnInfoArgs { ThrowOnError = false }, out info);
                    SourceControlSolutions.Clear();
                    if (result)
                    {
                        foreach (var f in info)
                        {
                            AddSolution(SourceControlSolutions, localPath + @"\" + f.Path, f.Uri.OriginalString);
                        }
                    }
                }
            }
            return SourceControlSolutions;
        }

19 Source : Downloader.cs
with MIT License
from github-for-unity

public static bool Download(ILogging logger, UriString url,
            Stream destinationStream,
            Func<long, long, bool> onProgress)
        {
            long bytes = destinationStream.Length;

            var expectingResume = bytes > 0;

            var webRequest = (HttpWebRequest)WebRequest.Create(url);

            if (expectingResume)
            {
                // clreplacedlib for 3.5 doesn't take long overloads...
                webRequest.AddRange((int)bytes);
            }

            webRequest.Method = "GET";
            webRequest.Timeout = ApplicationConfiguration.WebTimeout;

            if (expectingResume)
                logger.Trace($"Resuming download of {url}");
            else
                logger.Trace($"Downloading {url}");

            if (!onProgress(bytes, bytes * 2))
                return false;

            using (var webResponse = (HttpWebResponse)webRequest.GetResponseWithoutException())
            {
                var httpStatusCode = webResponse.StatusCode;
                logger.Trace($"Downloading {url} StatusCode:{(int)webResponse.StatusCode}");

                if (expectingResume && httpStatusCode == HttpStatusCode.RequestedRangeNotSatisfiable)
                {
                    return !onProgress(bytes, bytes);
                }

                if (!(httpStatusCode == HttpStatusCode.OK || httpStatusCode == HttpStatusCode.PartialContent))
                {
                    return false;
                }

                if (expectingResume && httpStatusCode == HttpStatusCode.OK)
                {
                    expectingResume = false;
                    destinationStream.Seek(0, SeekOrigin.Begin);
                }

                var responseLength = webResponse.ContentLength;
                if (expectingResume)
                {
                    if (!onProgress(bytes, bytes + responseLength))
                        return false;
                }

                using (var responseStream = webResponse.GetResponseStream())
                {
                    return Utils.Copy(responseStream, destinationStream, responseLength,
                        progress: (totalRead, timeToFinish) =>
                        {
                            return onProgress(totalRead, responseLength);
                        });
                }
            }
        }

19 Source : Program.cs
with MIT License
from github-for-unity

static int Main(string[] args)
        {
            LogHelper.LogAdapter = new ConsoleLogAdapter();

            int retCode = 0;
            string data = null;
            string error = null;
            int sleepms = 0;
            var p = new OptionSet();
            var readInputToEof = false;
            var lines = new List<string>();
            bool runWebServer = false;
            NPath outfile = NPath.Default;
            NPath path = NPath.Default;
            string releaseNotes = null;
            int webServerPort = -1;
            bool generateVersion = false;
            bool generatePackage = false;
            string version = null;
            string url = null;
            string readVersion = null;
            string msg = null;
            string host = null;
            bool runUsage = false;

            var arguments = new List<string>(args);
            if (arguments.Contains("usage"))
            {
                runUsage = true;
                arguments.RemoveRange(0, 2);
            }

            p = p
                .Add("r=", (int v) => retCode = v)
                .Add("d=|data=", v => data = v)
                .Add("e=|error=", v => error = v)
                .Add("f=|file=", v => data = File.ReadAllText(v))
                .Add("ef=|errorFile=", v => error = File.ReadAllText(v))
                .Add("sleep=", (int v) => sleepms = v)
                .Add("i|input", v => readInputToEof = true)
                .Add("w|web", v => runWebServer = true)
                .Add("p|port=", "Port", (int v) => webServerPort = v)
                .Add("g|generateVersion", v => generateVersion = true)
                .Add("v=|version=", v => version = v)
                .Add("gen-package", "Preplaced --version --url --path --md5 --rn --msg to generate a package", v => generatePackage = true)
                .Add("u=|url=", v => url = v)
                .Add("path=", v => path = v.ToNPath())
                .Add("rn=", "Path to file with release notes", v => releaseNotes = v.ReadAllTextIfFileExists())
                .Add("msg=", "Path to file with message for package", v => msg = v.ReadAllTextIfFileExists())
                .Add("readVersion=", v => readVersion = v)
                .Add("o=|outfile=", v => outfile = v.ToNPath().MakeAbsolute())
                .Add("h=", "Host", v => host = v)
                .Add("help", v => p.WriteOptionDescriptions(Console.Out));

            var extra = p.Parse(arguments);
            if (runUsage)
            {
                extra.Remove("usage");
                p.Parse(extra);

                path = extra[extra.Count - 1].ToNPath();
                var server = RunWebServer(webServerPort);
                var webRequest = (HttpWebRequest)WebRequest.Create(new UriString("http://localhost:" + webServerPort + "/api/usage/unity"));
                webRequest.Method = "POST";
                using (var sw = new StreamWriter(webRequest.GetRequestStream()))
                {
                    foreach (var line in path.ReadAllLines())
                    {
                        sw.WriteLine(line);
                    }
                }
                using (var webResponse = (HttpWebResponse)webRequest.GetResponseWithoutException())
                {
                    MemoryStream ms = new MemoryStream();
                    var responseLength = webResponse.ContentLength;
                    using (var sr = new StreamWriter(ms))
                    using (var responseStream = webResponse.GetResponseStream())
                    {
                        Utils.Copy(responseStream, ms, responseLength);
                    }
                    Console.WriteLine(Encoding.ASCII.GetString(ms.ToArray()));
                }

                server.Stop();
                return 0;
            }

            if (generatePackage)
            {
                var md5 = path.CalculateMD5();
                url += "/" + path.FileName;
                var package = new Package
                {
                    Message = msg,
                    Md5 = md5,
                    ReleaseNotes = releaseNotes,
                    ReleaseNotesUrl = null,
                    Url = url,
                    Version = TheVersion.Parse(version),
                };

                var json = package.ToJson(lowerCase: true, onlyPublic: false);
                if (outfile.IsInitialized)
                    outfile.WriteAllText(json);
                else
                    Console.WriteLine(json);
                return 0;
            }

            if (readVersion != null)
            {
                var json = File.ReadAllText(readVersion);
                var package = json.FromJson<Package>(lowerCase: true, onlyPublic: false);
                Console.WriteLine(package);
                Console.WriteLine($"{package.Url} {package.Version}");
                return 0;
            }

            if (generateVersion)
            {
                Logger.Error($"Generating version json {version} to {(outfile.IsInitialized ? outfile : "console")}");
                var vv = TheVersion.Parse(version);
                url += $"/unity/releases/github-for-unity-{version}.unitypackage";
                var package = new Package { Url = url, Version = vv};
                var json = package.ToJson(lowerCase: true, onlyPublic: false);
                if (outfile.IsInitialized)
                    outfile.WriteAllText(json);
                else
                    Logger.Info(json);
                return 0;
            }

            if (runWebServer)
            {
                if (webServerPort < 0)
                    webServerPort = 50000;
                RunWebServer(outfile, webServerPort);
                return 0;
            }

            if (readInputToEof)
            {
                string line;
                while ((line = Console.ReadLine()) != null)
                {
                    lines.Add(line);
                }
            }

            if (sleepms > 0)
                Thread.Sleep(sleepms);

            if (!String.IsNullOrEmpty(data))
                Console.WriteLine(data);
            else if (readInputToEof)
                Console.WriteLine(String.Join(Environment.NewLine, lines.ToArray()));

            if (!String.IsNullOrEmpty(error))
                Console.Error.WriteLine(error);

            return retCode;
        }

19 Source : PaxHttpInterface.cs
with GNU General Public License v2.0
from globalpayments

public byte[] Send(IDeviceMessage message) {
            OnMessageSent?.Invoke(message.ToString());

            try {
                string payload = Convert.ToBase64String(message.GetSendBuffer());

                return Task.Run(async () => {
                    _client = HttpWebRequest.Create(string.Format("http://{0}:{1}?{2}", _settings.IpAddress, _settings.Port, payload));

                    var response = await _client.GetResponseAsync();

                    var buffer = new List<byte>();
                    using (var sr = new StreamReader(response.GetResponseStream())) {
                        var rec_buffer = await sr.ReadToEndAsync();
                        foreach (char c in rec_buffer)
                            buffer.Add((byte)c);
                    }
                    return buffer.ToArray();
                }).Result;
            }
            catch (Exception exc) {
                throw new MessageException("Failed to send message. Check inner exception for more details.", exc);
            }
        }

19 Source : GeniusHttpInterface.cs
with GNU General Public License v2.0
from globalpayments

private async Task<byte[]> InitializeTransactionAsync(string transportKey) {
            WebRequest client = HttpWebRequest.Create(string.Format("http://{0}:{1}?TransportKey={2}&Format=XML", _settings.IpAddress, _settings.Port, transportKey));

            var response = await client.GetResponseAsync();

            var buffer = new List<byte>();
            using (var sr = new StreamReader(response.GetResponseStream())) {
                var rec_buffer = await sr.ReadToEndAsync();
                foreach (char c in rec_buffer) {
                    buffer.Add((byte)c);
                }
            }
            return buffer.ToArray();
        }

19 Source : DownloadPage.xaml.cs
with MIT License
from Goose-Bomb

private static void DownloadFile(DownloadInfo download)
        {
            if (!Directory.Exists(Path.GetDirectoryName(download.Path)))
            {
                Directory.CreateDirectory(Path.GetDirectoryName(download.Path));
            }

            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(download.Url);
                request.Proxy = null;
                request.KeepAlive = true;
                request.Method = "GET";
                request.UserAgent = "Mozilla/5.0 (compatible; Windows NT 10.0; .NET CLR 4.0.30319;)";

                _cts.Token.Register(() => request.Abort());
                HttpWebResponse response = request.GetResponse() as HttpWebResponse;

                if(download.Size == 0)
                {
                    Interlocked.Add(ref _totalBytes, response.ContentLength);
                }

                if (_cts.IsCancellationRequested)
                {
                    return;
                }

                using (var fileStream = new FileStream(download.Path, FileMode.Create, FileAccess.Write))
                {
                    var responseStream = response.GetResponseStream();

                    const int bufferSize = 2048;
                    byte[] buffer = new byte[bufferSize];
                    int size = responseStream.Read(buffer, 0, bufferSize);

                    while (!_cts.IsCancellationRequested && size > 0)
                    {
                        fileStream.Write(buffer, 0, size);
                        size = responseStream.Read(buffer, 0, bufferSize);
                        Interlocked.Add(ref _downloadBytes, size);
                    }
                    responseStream.Close();
                    response.Dispose();
                }
            }
            catch (WebException) when (_cts.IsCancellationRequested)
            {
                File.Delete(download.Path);
                //你自己要取消的~
            }
            catch (Exception ex)
            {
#if DEBUG
                System.Diagnostics.Debug.WriteLine(ex.Message);
                System.Diagnostics.Debug.WriteLine(download.Url);
#endif
                Interlocked.Increment(ref _failedFiles);
                File.Delete(download.Path);
                _faildDownlods.Add(download);
                return;
            }
            if (_cts.IsCancellationRequested)
            {
                File.Delete(download.Path);
                return;
            }

            Interlocked.Increment(ref _completeFiles);
        }

19 Source : WebRequest.cs
with MIT License
from GrapeCity

public static WebRequest Create (string requestUriString) 
		{
			if (requestUriString == null)
				throw new ArgumentNullException ("requestUriString");
			return Create (new Uri (requestUriString));
		}

19 Source : PushReceiver.cs
with GNU General Public License v3.0
from guest-nico

private bool sendEndpoint(string endpoint) {
			
			if (check.container == null) {
				check.form.addLogText("Cookieが見つからなかったためブラウザプッシュ通知の登録ができませんでした");
				return false;
			}
			var cookies = check.container.GetCookies(new Uri("https://public.api.nicovideo.jp/v1/nicopush/webpush/endpoints.json"));
			if (cookies == null) {
				check.form.addLogText("送信先のCookieが見つからなかったためブラウザプッシュ通知の登録ができませんでした");
				return false;
			} else if (cookies["user_session"] == null || string.IsNullOrEmpty(cookies["user_session"].Value)) {
				check.form.addLogText("送信先との接続に使うCookieが見つからなかったためブラウザプッシュ通知の登録ができませんでした");
				return false;
			}
			//POST /v1/nicopush/webpush/endpoints.json HTTP/1.1
			//Host: public.api.nicovideo.jp
			//User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0
			//Accept: application/json
			//Accept-Language: ja,en-US;q=0.7,en;q=0.3
			//Accept-Encoding: gzip, deflate, br
			//Referer: https://account.nicovideo.jp/my/account
			//x-request-with: https://account.nicovideo.jp/my/account
			//x-frontend-id: 8
			//content-type: application/json
			//Origin: https://account.nicovideo.jp
			//Content-Length: 431
			//Connection: keep-alive
			//Pragma: no-cache
			//Cache-Control: no-cache
			
			
			var sendAuth = Convert.ToBase64String(pc.generateAuth());
			var _pub = Convert.ToBase64String(publicKey);
			var param = "{\"clientapp\":\"nico_account_webpush\",\"endpoint\":{\"endpoint\":\"" + endpoint + "\",\"auth\":\"" + sendAuth + "\",\"p256dh\":\"" + _pub + "\"}}";
			var url = "https://public.api.nicovideo.jp/v1/nicopush/webpush/endpoints.json";
			util.debugWriteLine("param " + param);
			util.debugWriteLine("send register cookie " + check.container.GetCookieHeader(new Uri(url)));
			try {
				
				
				
				//var handler = new System.Net.Http.HttpClientHandler();
				//handler.UseCookies = true;
				//handler.CookieContainer = check.container;
				//handler.Proxy = null;
				
				//var http = new System.Net.Http.HttpClient(handler);
				//http.DefaultRequestHeaders.Referrer = new Uri(url);
				
				
				//var content = new System.Net.Http.FormUrlEncodedContent(_param);
				//var postDataBytes = content.ReadAsByteArrayAsync().Result;
				
				byte[] postDataBytes = Encoding.ASCII.GetBytes(param);
				
				
				var req = (HttpWebRequest)WebRequest.Create(url);
				req.Method = "POST";
				req.Proxy = null;
				req.CookieContainer = check.container;
				req.Referer = "https://account.nicovideo.jp/my/account";
				req.ContentLength = postDataBytes.Length;
				
				req.ContentType = "application/json";
				req.Headers.Add("x-request-with", "https://account.nicovideo.jp/my/account");
				req.Headers.Add("x-frontend-id", "8");
				req.Headers.Add("Accept-Encoding", "gzip,deflate");
				req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
				//req.UserAgent = util.userAgent;
				//req.Headers.Add("Accept-Encoding", "gzip, deflate, br");
				using (var stream = req.GetRequestStream()) {
					try {
						stream.Write(postDataBytes, 0, postDataBytes.Length);
					} catch (Exception e) {
			       		util.debugWriteLine(e.Message + " " + e.StackTrace + " " + e.Source + " " + e.TargetSite);
			       	}
				}
	//					stream.Close();
				
	
				var res = req.GetResponse();
				
				using (var getResStream = res.GetResponseStream())
				using (var resStream = new StreamReader(getResStream)) {
					foreach (var h in res.Headers) util.debugWriteLine("header " + h + " " + res.Headers[h.ToString()]);
					var resStr = resStream.ReadToEnd();
					util.debugWriteLine("nico send post res " + resStr);
					if (resStr == null) {
						check.form.addLogText("ブラウザプッシュ通知の登録時に正常な応答がありませんでした");
					}
					if (resStr.IndexOf("\"status\":200") > -1) {
						auth = Convert.FromBase64String(sendAuth);
						config.set("pushAuth", sendAuth);
						return true;
					} else {
						check.form.addLogText("ブラウザプッシュ通知の登録が正常に行えませんでした" + resStr);
					}
				}
				
			} catch (Exception e) {
				check.form.addLogText("ブラウザプッシュ通知の登録中に問題が発生しました" + e.Message + e.StackTrace + e.Source + e.TargetSite);
				util.debugWriteLine(e.Message+e.StackTrace);
				
			}
			
			return false;
		}

19 Source : ThumbnailManager.cs
with GNU General Public License v3.0
from guest-nico

public static Image getImage(string url) {
			try {
				util.debugWriteLine("access__ getimageid id " + url);
				var req = (HttpWebRequest)WebRequest.Create(url);
				
				req.Proxy = null;
				req.AllowAutoRedirect = true;
				//if (referer != null) req.Referer = referer;
				//if (container != null) req.CookieContainer = container;

				req.Timeout = 5000;
				var res = (HttpWebResponse)req.GetResponse();
				Image _ret = null;
				using (var dataStream = res.GetResponseStream()) {
					
					var ret = Image.FromStream(dataStream);
					//dataStream.Dispose();
					//dataStream.Close();
					_ret = ret;
				}
				return _ret;
			} catch (Exception e) {
				//System.Threading.Tasks.Task.Factory.StartNew(() => {
				//	util.debugWriteLine("thumbnail getpage error " + url + e.Message+e.StackTrace);
				//});
				util.debugWriteLine("getImage url exception " + url + " " + e.StackTrace);
				try {
					if (util.getRegGroup(url, "(c[oh]\\d+)") != null) {
						var ret = Image.FromFile(util.getJarPath()[0] + "/ImageCommunity/no thumb com.jpg");
						return ret;
					} else 
						return Image.FromFile(util.getJarPath()[0] + "/ImageUser/blank.jpg");
				} catch (Exception ee) {
					util.debugWriteLine("getImage exception catch catch " + ee.Message + e.StackTrace);
					return null;
				}
			}
		}

19 Source : CookieGetter.cs
with GNU General Public License v3.0
from guest-nico

private bool isHtml5Login(CookieContainer cc, string url) {
			
			var c = cc.GetCookieHeader(new Uri(url));
			//for (var i = 0; i < 1; i++) {
				/*
				var headers = new WebHeaderCollection();
				try {
					util.debugWriteLine("ishtml5login getpage " + url + util.getMainSubStr(isSub));
//					ar _url = (isRtmp) ? ("https://live.nicovideo.jp/api/getplayerstatus/" + util.getRegGroup(url, "(lv\\d+)")) : url;
					pageSource = util.getPageSource(_url, ref headers, cc);
//					util.debugWriteLine(cc.GetCookieHeader(new Uri(_url)));
					util.debugWriteLine("ishtml5login getpage ok" + util.getMainSubStr(isSub));
				} catch (Exception e) {
					util.debugWriteLine("cookiegetter ishtml5login " + e.Message+e.StackTrace + util.getMainSubStr(isSub));
					pageSource = "";
					log += "ページの取得中にエラーが発生しました。" + e.Message + e.Source + e.TargetSite + e.StackTrace;
					continue;
				}
	//			isHtml5 = (headers.Get("Location") == null) ? false : true;
				if (pageSource == null) {
					log += "ページが取得できませんでした。";
					util.debugWriteLine("not get page" + util.getMainSubStr(isSub));
					continue;
				}
				var isLogin = !(pageSource.IndexOf("\"login_status\":\"login\"") < 0 &&
				   	pageSource.IndexOf("login_status = 'login'") < 0);
				
				*/
				
				//test
				//test(cc, url);
				
				var isLogin = false;
				//var isFollow = false;
				string uid = null;
				try {
					var fl = new FollowChecker(form, cc).getFollowList(new bool[]{true, false, false}, false);
					if (fl == null) return false;
					
					var us = cc.GetCookies(new Uri(url))["user_session"];
					uid = us == null ? null : util.getRegGroup(us.Value, "user_session_(.+?)_");
					//form.addLogText("usersession " + (us != null) + " uid " + (uid != null));
						
					if (uid != null) {
						var _url = "https://public.api.nicovideo.jp/v1/user/followees/niconico-users/" + uid + ".json";
						var res = util.getPageSource(_url, cc);
						//form.addLogText("cookie check " + (res != null));
						
						//var n = util.getUserName(uid, out isFollow, cc, true);
						if (res != null) isLogin = true;
						
						
						if (!isLogin) {
							//test0
							util.debugWriteLine("access__ isHtml5Login 0 ");
							var _req = (HttpWebRequest)WebRequest.Create("https://www.nicovideo.jp/my/channel");
							_req.Proxy = null;
							_req.CookieContainer = cc;
							_req.Headers.Add("Accept-Encoding", "gzip,deflate");
							_req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
							//_req.CookieContainer = new CookieContainer();
							try {
								using (var r = (HttpWebResponse)_req.GetResponse())
								using (var _r = r.GetResponseStream())
								using (var __sr = new System.IO.StreamReader(_r)) {
									var __r = __sr.ReadToEnd();
									//util.debugWriteLine("__r + " + __r);
									us = _req.CookieContainer.GetCookies(new Uri("https://www.nicovideo.jp/my/channel"))["user_session"];
									if (__r != null) isLogin = true;
									//form.addLogText("cookie check3 " + isLogin + " " + (us != null));
									util.debugWriteLine(isLogin);
								}
							} catch (Exception ee) {
								util.debugWriteLine(ee.Message + ee.Source + ee.StackTrace + ee.TargetSite);
								//form.addLogText("cookie check3 exception");
							}
							
						}
						//test0
						
						
					}
				} catch (Exception e) {
					util.debugWriteLine(e.Message + e.Source + e.StackTrace + e.TargetSite);
				}
				
				util.debugWriteLine("islogin " + isLogin);
				log += (isLogin) ? "ログインに成功しました。" : "ログインに失敗しました";
	//			if (!isLogin) log += pageSource;
				if (isLogin) {
	//				id = (isRtmp) ? util.getRegGroup(pageSource, "<user_id>(\\d+)</user_id>")
	//					: util.getRegGroup(pageSource, "\"user_id\":(\\d+)");
					//id = util.getRegGroup(pageSource, "\"user_id\":(\\d+)");
					//if (id == null) id = util.getRegGroup(pageSource, "user_id = (\\d+)");
					util.debugWriteLine("id " + uid);
				} else {
					util.debugWriteLine("not login " + uid);
				}
				return isLogin;
			//}
			//return false;
		}

19 Source : FollowCommunity.cs
with GNU General Public License v3.0
from guest-nico

private bool unJoin(string comId, CookieContainer cc, MainForm form, config.config cfg, bool isSub) {
			for (int i = 0; i < 5; i++) {
//				var myPageUrl = "http://www.nicovideo.jp/my";
//				var comUrl = "https://com.nicovideo.jp/community/" + comId; 
				var url = "https://com.nicovideo.jp/leave/" + comId;
				var headers = new WebHeaderCollection();
				headers.Add("Upgrade-Insecure-Requests", "1");
				headers.Add("User-Agent", util.userAgent);
				/*
				try {
					var cg = new CookieGetter(cfg);
					var cgret = cg.getHtml5RecordCookie(url, isSub);
					cgret.Wait();

					if (cgret == null || cgret.Result == null) {
						System.Threading.Thread.Sleep(3000);
						continue;
					}
					var _cc = cgret.Result[0];

				} catch (Exception e) {
					return false;
				}
				*/
				
				try {
					var leavePageRes = util.getPageSource(url, cc);
					var time = util.getRegGroup(leavePageRes, "\"hidden\" name=\"time\" value=\"(\\d+)\"");
					var commit_key = util.getRegGroup(leavePageRes, "\"hidden\" name=\"commit_key\" value=\"(.+?)\"");
					                                      
					var handler = new System.Net.Http.HttpClientHandler();
					handler.UseCookies = true;
					handler.CookieContainer = cc;
					handler.Proxy = null;
					
					var http = new System.Net.Http.HttpClient(handler);
					http.DefaultRequestHeaders.Referrer = new Uri(url);
					/*
					var content = new System.Net.Http.FormUrlEncodedContent(new Dictionary<string, string>
					{
						{"commit", "はい、フォローを解除します"}, {"time", time}, {"commit_key", commit_key}
					});
					*/
					var enc = Encoding.GetEncoding("UTF-8");
					string data =
					    "time=" + time + "&commit_key=" + commit_key + "&commit=" + System.Web.HttpUtility.UrlEncode("はい、フォローを解除します", enc);
					byte[] postDataBytes = Encoding.ASCII.GetBytes(data);
					
					util.debugWriteLine("access__ followCommunity unjoin");
					var req = (HttpWebRequest)WebRequest.Create(url);
					req.Method = "POST";
					req.Proxy = null;
					req.CookieContainer = cc;
					req.Referer = url;
					req.ContentLength = postDataBytes.Length;
					req.ContentType = "application/x-www-form-urlencoded";
	//				req.Headers.Add("Referer", url);
					req.Headers.Add("Accept-Encoding", "gzip,deflate");
					req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
					using (var stream = req.GetRequestStream()) {
						try {
							stream.Write(postDataBytes, 0, postDataBytes.Length);
						} catch (Exception e) {
				       		util.debugWriteLine(e.Message + " " + e.StackTrace + " " + e.Source + " " + e.TargetSite);
				       	}
					}
	
					var res = req.GetResponse();
					
					using (var getResStream = res.GetResponseStream())
					using (var resStream = new System.IO.StreamReader(getResStream)) {
						var resStr = resStream.ReadToEnd();
		
						var isSuccess = resStr.IndexOf("このコミュニティのフォローを解除しました") > -1;
						return isSuccess;
					}
					
				} catch (Exception e) {
					form.addLogText("フォロー解除に失敗しました。");
					util.debugWriteLine(e.Message+e.StackTrace);
					continue;
				}
			}
			form.addLogText("フォロー解除に失敗しました。" + util.getMainSubStr(isSub, true));
			util.debugWriteLine("フォロー解除失敗");
			return false;
		}

19 Source : PushReceiver.cs
with GNU General Public License v3.0
from guest-nico

private bool sendEndpoint(string endpoint)
		{

			/*POST /v1/nicopush/webpush/endpoints.json HTTP/1.1
			Host: public.api.nicovideo.jp
			User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0
			Accept: application/json
			Accept-Language: ja,en-US;q=0.7,en;q=0.3
			Accept-Encoding: gzip, deflate, br
			Referer: https://account.nicovideo.jp/my/account
			x-request-with: https://account.nicovideo.jp/my/account
			x-frontend-id: 8
			content-type: application/json
			Origin: https://account.nicovideo.jp
			Content-Length: 431
			Connection: keep-alive
			Cookie: nicosid=1546686738.281900968; _ga=GA1.2.1892466675.1546686717; _gac_UA-88451119-2=1.1546686741.EAIaIQobChMI0fukicHW3wIViKuWCh0HUQd6EAAYASABEgLtSPD_BwE; _gac_UA-88451119-7=1.1546686741.EAIaIQobChMI0fukicHW3wIViKuWCh0HUQd6EAAYASABEgLtSPD_BwE; nicorepo_filter=all; cto_lwid=d7a27147-b398-4e97-aa58-2617dc125a6d; nicolivehistory=%5B317686098%2C317838144%2C317856317%2C317920254%2C317985131%2C318078557%2C318079195%2C317609998%2C318170481%2C318171227%2C318298442%5D; cto_idcpy=483f3476-057e-4930-8422-0fc9b0d47bc0; nicohistory=sm34506029%3A1548009895%3A1548009895%3Ae28a0c6913345407%3A1; _td=f8e7235a-76a7-4e6f-8191-e75ca65aaff5; user_session=user_session_87167340_69b73af7f5411c83c3dea2ca28fd9dcc6a219fef57152a67b95af2d992c78cd8; user_session_secure=ODcxNjczNDA6VjNFQnRncTBDU0RXYUo0QUZGQThxTlp6SmJvcVVNelJEUUN1d3lIR0lYSg; _gid=GA1.2.1204702434.1549103793; _gali=webpush_button
			Pragma: no-cache
			Cache-Control: no-cache
			*/

			var sendAuth = Convert.ToBase64String(pc.generateAuth());
			var _pub = Convert.ToBase64String(publicKey);
			var param = "{\"clientapp\":\"nico_account_webpush\",\"endpoint\":{\"endpoint\":\"" + endpoint + "\",\"auth\":\"" + sendAuth + "\",\"p256dh\":\"" + _pub + "\"}}";
			var url = "https://public.api.nicovideo.jp/v1/nicopush/webpush/endpoints.json";
			util.debugWriteLine("param " + param);
			util.debugWriteLine("send register cookie " + check.container.GetCookieHeader(new Uri(url)));
			try
			{


				/*
				var handler = new System.Net.Http.HttpClientHandler();
				handler.UseCookies = true;
				handler.CookieContainer = check.container;
				handler.Proxy = null;
				*/
				//var http = new System.Net.Http.HttpClient(handler);
				//http.DefaultRequestHeaders.Referrer = new Uri(url);


				//var content = new System.Net.Http.FormUrlEncodedContent(_param);
				//var postDataBytes = content.ReadAsByteArrayAsync().Result;

				byte[] postDataBytes = Encoding.ASCII.GetBytes(param);


				var req = (HttpWebRequest)WebRequest.Create(url);
				req.Method = "POST";
				req.Proxy = null;
				req.CookieContainer = check.container;
				req.Referer = "https://account.nicovideo.jp/my/account";
				req.ContentLength = postDataBytes.Length;

				req.ContentType = "application/json";
				req.Headers.Add("x-request-with", "https://account.nicovideo.jp/my/account");
				req.Headers.Add("x-frontend-id", "8");
				//req.Headers.Add("Accept-Encoding", "gzip, deflate, br");
				using (var stream = req.GetRequestStream())
				{
					try
					{
						stream.Write(postDataBytes, 0, postDataBytes.Length);
					}
					catch (Exception e)
					{
						util.debugWriteLine(e.Message + " " + e.StackTrace + " " + e.Source + " " + e.TargetSite);
					}
				}
				//					stream.Close();


				var res = req.GetResponse();

				using (var getResStream = res.GetResponseStream())
				using (var resStream = new StreamReader(getResStream))
				{
					foreach (var h in res.Headers) util.debugWriteLine("header " + h + " " + res.Headers[h.ToString()]);
					var resStr = resStream.ReadToEnd();
					util.debugWriteLine("nico send post res " + resStr);
					if (resStr.IndexOf("\"status\":200") > -1)
					{
						auth = Convert.FromBase64String(sendAuth);
						config.set("pushAuth", sendAuth);
						return true;
					}
				}

			}
			catch (Exception e)
			{
				//form.addLogText("フォローに失敗しました。" + util.getMainSubStr(isSub, true));
				util.debugWriteLine(e.Message + e.StackTrace);

			}
			return false;
		}

19 Source : ThumbnailManager.cs
with GNU General Public License v3.0
from guest-nico

public static Image getImage(string url)
		{
			try
			{

				var req = (HttpWebRequest)WebRequest.Create(url);

				req.Proxy = null;
				req.AllowAutoRedirect = true;
				//if (referer != null) req.Referer = referer;
				//if (container != null) req.CookieContainer = container;

				req.Timeout = 5000;
				var res = (HttpWebResponse)req.GetResponse();
				Image _ret = null;
				using (var dataStream = res.GetResponseStream())
				{

					var ret = Image.FromStream(dataStream);
					//dataStream.Dispose();
					//dataStream.Close();
					_ret = ret;
				}
				return _ret;
			}
			catch (Exception e)
			{
				//System.Threading.Tasks.Task.Factory.StartNew(() => {
				//	util.debugWriteLine("thumbnail getpage error " + url + e.Message+e.StackTrace);
				//});
				util.debugWriteLine("getImage url exception " + url + " " + e.StackTrace);
				try
				{
					if (util.getRegGroup(url, "(c[oh]\\d+)") != null)
					{
						var ret = Image.FromFile(util.getJarPath()[0] + "/ImageCommunity/no thumb com.jpg");
						return ret;
					}
					else
						return Image.FromFile(util.getJarPath()[0] + "/ImageUser/blank.jpg");
				}
				catch (Exception ee)
				{
					util.debugWriteLine("getImage exception catch catch " + ee.Message + e.StackTrace);
					return null;
				}
			}
		}

19 Source : FollowCommunity.cs
with GNU General Public License v3.0
from guest-nico

private bool unJoin(string comId, CookieContainer cc, MainForm form, config.config cfg, bool isSub)
		{
			for (int i = 0; i < 5; i++)
			{
				//				var myPageUrl = "http://www.nicovideo.jp/my";
				//				var comUrl = "https://com.nicovideo.jp/community/" + comId; 
				var url = "https://com.nicovideo.jp/leave/" + comId;
				var headers = new WebHeaderCollection();
				headers.Add("Upgrade-Insecure-Requests", "1");
				headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36");
				/*
				try {
					var cg = new CookieGetter(cfg);
					var cgret = cg.getHtml5RecordCookie(url, isSub);
					cgret.Wait();

					if (cgret == null || cgret.Result == null) {
						System.Threading.Thread.Sleep(3000);
						continue;
					}
					var _cc = cgret.Result[0];

				} catch (Exception e) {
					return false;
				}
				*/

				try
				{
					var leavePageRes = util.getPageSource(url, cc);
					var time = util.getRegGroup(leavePageRes, "\"hidden\" name=\"time\" value=\"(\\d+)\"");
					var commit_key = util.getRegGroup(leavePageRes, "\"hidden\" name=\"commit_key\" value=\"(.+?)\"");

					var handler = new System.Net.Http.HttpClientHandler();
					handler.UseCookies = true;
					handler.CookieContainer = cc;
					handler.Proxy = null;

					var http = new System.Net.Http.HttpClient(handler);
					http.DefaultRequestHeaders.Referrer = new Uri(url);
					/*
					var content = new System.Net.Http.FormUrlEncodedContent(new Dictionary<string, string>
					{
						{"commit", "はい、フォローを解除します"}, {"time", time}, {"commit_key", commit_key}
					});
					*/
					var enc = Encoding.GetEncoding("UTF-8");
					string data =
						"time=" + time + "&commit_key=" + commit_key + "&commit=" + System.Web.HttpUtility.UrlEncode("はい、フォローを解除します", enc);
					byte[] postDataBytes = Encoding.ASCII.GetBytes(data);

					var req = (HttpWebRequest)WebRequest.Create(url);
					req.Method = "POST";
					req.Proxy = null;
					req.CookieContainer = cc;
					req.Referer = url;
					req.ContentLength = postDataBytes.Length;
					req.ContentType = "application/x-www-form-urlencoded";
					//				req.Headers.Add("Referer", url);
					using (var stream = req.GetRequestStream())
					{
						try
						{
							stream.Write(postDataBytes, 0, postDataBytes.Length);
						}
						catch (Exception e)
						{
							util.debugWriteLine(e.Message + " " + e.StackTrace + " " + e.Source + " " + e.TargetSite);
						}
					}

					var res = req.GetResponse();

					using (var getResStream = res.GetResponseStream())
					using (var resStream = new System.IO.StreamReader(getResStream))
					{
						var resStr = resStream.ReadToEnd();

						var isSuccess = resStr.IndexOf("このコミュニティのフォローを解除しました") > -1;
						return isSuccess;
					}

				}
				catch (Exception e)
				{
					form.addLogText("フォロー解除に失敗しました。");
					util.debugWriteLine(e.Message + e.StackTrace);
					continue;
				}
			}
			form.addLogText("フォロー解除に失敗しました。" + util.getMainSubStr(isSub, true));
			util.debugWriteLine("フォロー解除失敗");
			return false;
		}

19 Source : FollowUser.cs
with GNU General Public License v3.0
from guest-nico

private bool join(string comId, CookieContainer cc, MainForm form, config.config cfg)
		{
			util.debugWriteLine("follow user " + comId);
			for (int i = 0; i < 3; i++)
			{
				var comUrl = "https://www.nicovideo.jp/user/" + comId;
				var url = "https://www.nicovideo.jp/api/watchitem/add";
				var headers = new WebHeaderCollection();
				//				headers.Add("Upgrade-Insecure-Requests", "1");
				headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36");
				try
				{
					/*
					var cg = new CookieGetter(cfg);
					var cgret = cg.getHtml5RecordCookie(url, isSub);
					cgret.Wait();
					                                  
					
		//			cgret.ConfigureAwait(false);
					if (cgret == null || cgret.Result == null) {
						System.Threading.Thread.Sleep(3000);
						continue;
					}
					var _cc = cgret.Result[0];
					
//					var _cc = cgret.Result[(isSub) ? 1 : 0];
//					util.debugWriteLine(cg.pageSource);
					
					var isJidouShounin = util.getPageSource(url, ref headers, cc, comUrl).IndexOf("自動承認されます") > -1;
	//				var _compage = util.getPageSource(url, ref headers, cc);
	//				var gateurl = "http://live.nicovideo.jp/gate/lv313793991";
	//				var __gatePage = util.getPageSource(gateurl, ref headers, cc);
	//				var _compage2 = util.getPageSource(url, ref headers, cc);
//					util.debugWriteLine(cc.GetCookieHeader(new Uri(url)));
					var msg = (isJidouShounin ? "フォローを試みます。" : "自動承認ではありませんでした。") + util.getMainSubStr(isSub, true);
					form.addLogText(msg);
					
					
					if (!isJidouShounin) return false;
					*/
				}
				catch (Exception e)
				{
					return false;
				}


				try
				{
					var pageRes = util.getPageSource(comUrl, cc);
					if (pageRes == null) continue;
					var token = util.getRegGroup(pageRes, "data-csrf-token=\"(.+?)\"");
					if (token == null) token = util.getRegGroup(pageRes, "Globals.hash = '(.+?)'");
					if (token == null)
					{
						util.debugWriteLine("user follow token null " + comId);
						return false;
					}

					var handler = new System.Net.Http.HttpClientHandler();
					handler.UseCookies = true;
					handler.CookieContainer = cc;
					handler.Proxy = null;


					var http = new System.Net.Http.HttpClient(handler);
					http.DefaultRequestHeaders.Referrer = new Uri(url);
					/*
					var content = new System.Net.Http.FormUrlEncodedContent(new Dictionary<string, string>
					{
						{"mode", "commit"}, {"replacedle", "フォローリクエスト"}
					});
					*/
					var enc = Encoding.GetEncoding("UTF-8");
					string data =
						"item_type=1&item_id=" + comId + "&token=" + token;
					util.debugWriteLine(data);
					byte[] postDataBytes = Encoding.ASCII.GetBytes(data);

					var req = (HttpWebRequest)WebRequest.Create(url);
					req.Method = "POST";
					req.Proxy = null;
					req.CookieContainer = cc;
					req.Referer = url;
					req.ContentLength = postDataBytes.Length;
					req.ContentType = "application/x-www-form-urlencoded";
					req.Headers.Add("X-Requested-With", "XMLHttpRequest");
					using (var stream = req.GetRequestStream())
					{
						try
						{
							stream.Write(postDataBytes, 0, postDataBytes.Length);
						}
						catch (Exception e)
						{
							util.debugWriteLine(e.Message + " " + e.StackTrace + " " + e.Source + " " + e.TargetSite);
						}
					}
					//					stream.Close();


					var res = req.GetResponse();

					using (var getResStream = res.GetResponseStream())
					using (var resStream = new System.IO.StreamReader(getResStream))
					{
						var resStr = resStream.ReadToEnd();

						var isSuccess = resStr.IndexOf("{\"status\":\"ok\"}") > -1;
						if (!isSuccess)
						{
							util.debugWriteLine(resStr);
							Thread.Sleep(3000);
							continue;
						}
						//var _m = (form.rec.isPlayOnlyMode) ? "視聴" : "録画";
						//form.addLogText((isSuccess ?
						//                 "フォローしました。" + _m + "開始までしばらくお待ちください。" : "フォローに失敗しました。") + util.getMainSubStr(isSub, true));
						return isSuccess;
					}

					//				resStream.Close();


					//				Task<HttpResponseMessage> _resTask = http.PostAsync(url, content);

					//				_resTask.Wait();
					//				var _res = _resTask.Result;

					//				var resTask = _res.Content.ReadreplacedtringAsync();
					//				resTask.Wait();
					//				var res = resTask.Result;
					//			var a = _res.Headers;

					//			if (res.IndexOf("login_status = 'login'") < 0) return null;

					//				var cc = handler.CookieContainer;

				}
				catch (Exception e)
				{
					//form.addLogText("フォローに失敗しました。");
					util.debugWriteLine(e.Message + e.StackTrace);
					continue;
					//					return false;
				}
			}
			//form.addLogText("フォローに失敗しました。");
			util.debugWriteLine("フォロー失敗");
			return false;
		}

19 Source : FollowCommunity.cs
with GNU General Public License v3.0
from guest-nico

private bool join(string comId, CookieContainer cc, MainForm form, config.config cfg, bool isSub) {
			for (int i = 0; i < 2; i++) {
//				var myPageUrl = "http://www.nicovideo.jp/my";
				var comUrl = "https://com.nicovideo.jp/community/" + comId; 
				var url = "https://com.nicovideo.jp/motion/" + comId;
				var headers = new WebHeaderCollection();
				headers.Add("Upgrade-Insecure-Requests", "1");
				headers.Add("User-Agent", util.userAgent);
				try {
					var ccc = form.check.container;
					/*
					var cg = new CookieGetter(cfg);
					var cgret = cg.getHtml5RecordCookie(url, isSub);
					cgret.Wait();
					                                  
					
		//			cgret.ConfigureAwait(false);
					if (cgret == null || cgret.Result == null) {
						System.Threading.Thread.Sleep(3000);
						continue;
					}
					var _cc = cgret.Result[0];
//					var _cc = cgret.Result[(isSub) ? 1 : 0];
//					util.debugWriteLine(cg.pageSource);
					*/
					//var res = util.getPageSource(url, ref headers, ccc, url);
					var res = util.getPageSource(url, ccc, url);
					if (res == null) return false;
					var isJidouShounin = res.IndexOf("自動承認されます") > -1; 
	//				var _compage = util.getPageSource(url, ref headers, cc);
	//				var gateurl = "http://live.nicovideo.jp/gate/lv313793991";
	//				var __gatePage = util.getPageSource(gateurl, ref headers, cc);
	//				var _compage2 = util.getPageSource(url, ref headers, cc);
//					util.debugWriteLine(cc.GetCookieHeader(new Uri(url)));
					var msg = (isJidouShounin ? "フォローを試みます。" : "自動承認ではありませんでした。");
					
					if (!isJidouShounin) {
						form.addLogText(msg);
						return false;
					}
				} catch (Exception) {
					return false;
				}
				
				
				try {
					var handler = new System.Net.Http.HttpClientHandler();
					handler.UseCookies = true;
					handler.CookieContainer = cc;
					handler.Proxy = null;
					
					
					var http = new System.Net.Http.HttpClient(handler);
					http.DefaultRequestHeaders.Referrer = new Uri(url);
					
					var content = new System.Net.Http.FormUrlEncodedContent(new Dictionary<string, string>
					{
						{"mode", "commit"}, {"replacedle", "フォローリクエスト"}
					});
					
					var enc = Encoding.GetEncoding("UTF-8");
					string data =
					    "mode=commit&replacedle=" + System.Web.HttpUtility.UrlEncode("フォローリクエスト", enc);
					byte[] postDataBytes = Encoding.ASCII.GetBytes(data);
	
					util.debugWriteLine("access__ followCommunity join");
					var req = (HttpWebRequest)WebRequest.Create(url);
					req.Method = "POST";
					req.Proxy = null;
					req.CookieContainer = cc;
					req.Referer = url;
					req.ContentLength = postDataBytes.Length;
					req.ContentType = "application/x-www-form-urlencoded";
					req.Headers.Add("Accept-Encoding", "gzip,deflate");
					req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
					
	//				req.Headers.Add("Referer", url);
					using (var stream = req.GetRequestStream()) {
						try {
							stream.Write(postDataBytes, 0, postDataBytes.Length);
						} catch (Exception e) {
				       		util.debugWriteLine(e.Message + " " + e.StackTrace + " " + e.Source + " " + e.TargetSite);
				       	}
					}
	//					stream.Close();
					
	
					var res = req.GetResponse();
					
					using (var getResStream = res.GetResponseStream())
					using (var resStream = new System.IO.StreamReader(getResStream)) {
						var resStr = resStream.ReadToEnd();
		
						var isSuccess = resStr.IndexOf("フォローしました") > -1;
						//var _m = (form.rec.isPlayOnlyMode) ? "視聴" : "録画";
						//form.addLogText((isSuccess ?
						//                 "フォローしました。" + _m + "開始までしばらくお待ちください。" : "フォローに失敗しました。") + util.getMainSubStr(isSub, true));
						return isSuccess;
					}
					
	//				resStream.Close();
					
					
	//				Task<HttpResponseMessage> _resTask = http.PostAsync(url, content);
					
	//				_resTask.Wait();
	//				var _res = _resTask.Result;
					
	//				var resTask = _res.Content.ReadreplacedtringAsync();
	//				resTask.Wait();
	//				var res = resTask.Result;
		//			var a = _res.Headers;
					
		//			if (res.IndexOf("login_status = 'login'") < 0) return null;
					
	//				var cc = handler.CookieContainer;
					
				} catch (Exception e) {
					form.addLogText("フォローに失敗しました。" + util.getMainSubStr(isSub, true));
					util.debugWriteLine(e.Message+e.StackTrace);
					continue;
//					return false;
				}
			}
			form.addLogText("フォローに失敗しました。" + util.getMainSubStr(isSub, true));
			util.debugWriteLine("フォロー失敗");
			return false;
		}

19 Source : CookieGetter.cs
with GNU General Public License v3.0
from guest-nico

async public Task<CookieContainer> getAppAccountCookie(string mail, string preplaced)
		{

			if (mail == null || preplaced == null) return null;

			var loginUrl = "https://account.nicovideo.jp/api/v2/login/mail_or_tel_preplacedword?site=nicocas_android&is_send_mfa_mail=1";
			//			var param = "mail=" + mail + "&preplacedword=" + preplaced;

			try
			{
				var acPreplacedHeaders = new Dictionary<string, string>() {
					{"Content-Type", "application/json; charset=UTF-8"},
					{"User-Agent", "okhttp/3.10.0"},
					//{"Cookie", "user_session=" + userSession},
					{"X-Frontend-Id", "90"},
					{"X-Frontend-Version", "3.3.0"},
					//{"X-Os-Version", "22"},
					{"X-Request-With", "dream2qltechn"},
					//{"X-Connection-Environment", "wifi"},
					{"Connection", "Keep-Alive"},
					//{"Accept-Encoding", "gzip"},
				};
				var _content = "{\"mail_or_tel\": \"" + mail + "\",\"mfa_trusted_device_token\": \"\", \"preplacedword\": \"" + preplaced + "\"}";
				util.debugWriteLine(_content);
				var content = System.Text.Encoding.ASCII.GetBytes(_content);

				var req = (HttpWebRequest)WebRequest.Create(loginUrl);
				req.Method = "POST";
				req.Proxy = null;


				foreach (var h in acPreplacedHeaders)
				{
					if (h.Key.ToLower().Replace("-", "") == "contenttype")
						req.ContentType = h.Value;
					else if (h.Key.ToLower().Replace("-", "") == "useragent")
						req.UserAgent = h.Value;
					else if (h.Key.ToLower().Replace("-", "") == "connection")
						req.KeepAlive = h.Value.ToLower().Replace("-", "") == "keepalive";
					else req.Headers.Add(h.Key, h.Value);
				}

				using (var stream = req.GetRequestStream())
				{
					try
					{
						stream.Write(content, 0, content.Length);
					}
					catch (Exception ee)
					{
						util.debugWriteLine(ee.Message + " " + ee.StackTrace + " " + ee.Source + " " + ee.TargetSite);
					}
				}

				using (var res = (HttpWebResponse)req.GetResponse())
				using (var resStream = res.GetResponseStream())
				using (var resSr = new System.IO.StreamReader(resStream))
				{
					var r = resSr.ReadToEnd();
					var cc = new CookieContainer();

					var c = new Cookie("user_session", util.getRegGroup(r, "user_session\":\\s*\"(.+?)\""));
					var secureC = new Cookie("user_session_secure", util.getRegGroup(r, "user_session_secure\":\\s*\"(.+?)\""));
					//var c = cc.GetCookies(new Uri(loginUrl))["user_session"];
					//var secureC = cc.GetCookies(new Uri(loginUrl))["user_session_secure"];
					cc = copyUserSession(cc, c, secureC);
					log += (c == null) ? "ユーザーセッションが見つかりませんでした。" : "ユーザーセッションが見つかりました。";
					log += (secureC == null) ? "secureユーザーセッションが見つかりませんでした。" : "secureユーザーセッションが見つかりました。";
					if (c == null && secureC == null) return null;

					//preplacedport
					var acPreplacedHeaders2 = new Dictionary<string, string>() {
						//{"Content-Type", "application/json; charset=UTF-8"},
						{"User-Agent", "okhttp/3.10.0"},
						{"Cookie", "user_session=" + c.Value},
						{"X-Frontend-Id", "90"},
						{"X-Frontend-Version", "3.3.0"},
						//{"X-Os-Version", "22"},
						{"X-Request-With", "dream2qltechn"},
						//{"X-Connection-Environment", "wifi"},
						{"Connection", "Keep-Alive"},
						//{"Accept-Encoding", "gzip"},
					};

					var url = "https://account.nicovideo.jp/api/v1/users/account_preplacedport";
					var _r = util.postResStr(url, acPreplacedHeaders2, null);
					util.debugWriteLine("account_preplacedport " + _r);


					return cc;
				}

			}
			catch (Exception e)
			{
				util.debugWriteLine(e.Message + e.StackTrace + util.getMainSubStr(isSub));
				return null;
			}


		}

19 Source : FollowUser.cs
with GNU General Public License v3.0
from guest-nico

private bool join(string comId, CookieContainer cc, MainForm form, config.config cfg) {
			util.debugWriteLine("follow user " + comId);
			for (int i = 0; i < 3; i++) {
				var comUrl = "https://www.nicovideo.jp/user/" + comId; 
				var url = "https://www.nicovideo.jp/api/watchitem/add";
				var headers = new WebHeaderCollection();
//				headers.Add("Upgrade-Insecure-Requests", "1");
				headers.Add("User-Agent", util.userAgent);
				try {
					/*
					var cg = new CookieGetter(cfg);
					var cgret = cg.getHtml5RecordCookie(url, isSub);
					cgret.Wait();
					                                  
					
		//			cgret.ConfigureAwait(false);
					if (cgret == null || cgret.Result == null) {
						System.Threading.Thread.Sleep(3000);
						continue;
					}
					var _cc = cgret.Result[0];
					
//					var _cc = cgret.Result[(isSub) ? 1 : 0];
//					util.debugWriteLine(cg.pageSource);
					
					var isJidouShounin = util.getPageSource(url, ref headers, cc, comUrl).IndexOf("自動承認されます") > -1;
	//				var _compage = util.getPageSource(url, ref headers, cc);
	//				var gateurl = "http://live.nicovideo.jp/gate/lv313793991";
	//				var __gatePage = util.getPageSource(gateurl, ref headers, cc);
	//				var _compage2 = util.getPageSource(url, ref headers, cc);
//					util.debugWriteLine(cc.GetCookieHeader(new Uri(url)));
					var msg = (isJidouShounin ? "フォローを試みます。" : "自動承認ではありませんでした。") + util.getMainSubStr(isSub, true);
					form.addLogText(msg);
					
					
					if (!isJidouShounin) return false;
					*/
				} catch (Exception) {
					return false;
				}
				
				
				try {
					var pageRes = util.getPageSource(comUrl, cc);
					if (pageRes == null) continue;
					var token = util.getRegGroup(pageRes, "data-csrf-token=\"(.+?)\"");
					if (token == null) token = util.getRegGroup(pageRes, "Globals.hash = '(.+?)'");
					if (token == null) {
						util.debugWriteLine("user follow token null " + comId);
						return false;
					}
					
					var handler = new System.Net.Http.HttpClientHandler();
					handler.UseCookies = true;
					handler.CookieContainer = cc;
					handler.Proxy = null;
					
					
					var http = new System.Net.Http.HttpClient(handler);
					http.DefaultRequestHeaders.Referrer = new Uri(url);
					/*
					var content = new System.Net.Http.FormUrlEncodedContent(new Dictionary<string, string>
					{
						{"mode", "commit"}, {"replacedle", "フォローリクエスト"}
					});
					*/
					var enc = Encoding.GetEncoding("UTF-8");
					string data =
					    "item_type=1&item_id=" + comId + "&token=" + token;
					util.debugWriteLine(data);
					byte[] postDataBytes = Encoding.ASCII.GetBytes(data);
	
					util.debugWriteLine("access__ followUser join");
					var req = (HttpWebRequest)WebRequest.Create(url);
					req.Method = "POST";
					req.Proxy = null;
					req.CookieContainer = cc;
					req.Referer = url;
					req.ContentLength = postDataBytes.Length;
					req.ContentType = "application/x-www-form-urlencoded";
					req.Headers.Add("X-Requested-With", "XMLHttpRequest");
					req.Headers.Add("Accept-Encoding", "gzip,deflate");
					req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
					using (var stream = req.GetRequestStream()) {
						try {
							stream.Write(postDataBytes, 0, postDataBytes.Length);
						} catch (Exception e) {
				       		util.debugWriteLine(e.Message + " " + e.StackTrace + " " + e.Source + " " + e.TargetSite);
				       	}
					}
	//					stream.Close();
					
	
					var res = req.GetResponse();
					
					using (var getResStream = res.GetResponseStream())
					using (var resStream = new System.IO.StreamReader(getResStream)) {
						var resStr = resStream.ReadToEnd();
		
						var isSuccess = resStr.IndexOf("{\"status\":\"ok\"}") > -1;
						if (!isSuccess) {
							util.debugWriteLine(resStr);
							Thread.Sleep(3000);
							continue;
						}
						//var _m = (form.rec.isPlayOnlyMode) ? "視聴" : "録画";
						//form.addLogText((isSuccess ?
						//                 "フォローしました。" + _m + "開始までしばらくお待ちください。" : "フォローに失敗しました。") + util.getMainSubStr(isSub, true));
						return isSuccess;
					}
					
	//				resStream.Close();
					
					
	//				Task<HttpResponseMessage> _resTask = http.PostAsync(url, content);
					
	//				_resTask.Wait();
	//				var _res = _resTask.Result;
					
	//				var resTask = _res.Content.ReadreplacedtringAsync();
	//				resTask.Wait();
	//				var res = resTask.Result;
		//			var a = _res.Headers;
					
		//			if (res.IndexOf("login_status = 'login'") < 0) return null;
					
	//				var cc = handler.CookieContainer;
					
				} catch (Exception e) {
					//form.addLogText("フォローに失敗しました。");
					util.debugWriteLine(e.Message+e.StackTrace);
					continue;
//					return false;
				}
			}
			//form.addLogText("フォローに失敗しました。");
			util.debugWriteLine("フォロー失敗");
			return false;
		}

19 Source : FollowUser.cs
with GNU General Public License v3.0
from guest-nico

private bool unJoin(string comId, CookieContainer cc, MainForm form, config.config cfg)
		{
			for (int i = 0; i < 3; i++)
			{
				//				var myPageUrl = "http://www.nicovideo.jp/my";
				var comUrl = "https://www.nicovideo.jp/user/" + comId;
				var url = "https://www.nicovideo.jp/api/watchitem/delete";
				var headers = new WebHeaderCollection();
				//				headers.Add("Upgrade-Insecure-Requests", "1");
				headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36");
				/*
				try {
					var cg = new CookieGetter(cfg);
					var cgret = cg.getHtml5RecordCookie(url, isSub);
					cgret.Wait();

					if (cgret == null || cgret.Result == null) {
						System.Threading.Thread.Sleep(3000);
						continue;
					}
					var _cc = cgret.Result[0];

				} catch (Exception e) {
					return false;
				}
				*/

				try
				{
					var pageRes = util.getPageSource(comUrl, cc);
					var token = util.getRegGroup(pageRes, "data-csrf-token=\"(.+?)\"");
					if (token == null) token = util.getRegGroup(pageRes, "Globals.hash = '(.+?)'");
					if (token == null)
					{
						util.debugWriteLine("user unfollow token null " + comId);
						return false;
					}

					var handler = new System.Net.Http.HttpClientHandler();
					handler.UseCookies = true;
					handler.CookieContainer = cc;
					handler.Proxy = null;

					var http = new System.Net.Http.HttpClient(handler);
					http.DefaultRequestHeaders.Referrer = new Uri(url);
					/*
					var content = new System.Net.Http.FormUrlEncodedContent(new Dictionary<string, string>
					{
						{"commit", "はい、フォローを解除します"}, {"time", time}, {"commit_key", commit_key}
					});
					*/
					var enc = Encoding.GetEncoding("UTF-8");
					string data =
						"id_list[1][]=" + comId + "&token=" + token;
					byte[] postDataBytes = Encoding.ASCII.GetBytes(data);

					var req = (HttpWebRequest)WebRequest.Create(url);
					req.Method = "POST";
					req.Proxy = null;
					req.CookieContainer = cc;
					req.Referer = url;
					req.ContentLength = postDataBytes.Length;
					req.ContentType = "application/x-www-form-urlencoded";
					req.Headers.Add("X-Requested-With", "XMLHttpRequest");
					using (var stream = req.GetRequestStream())
					{
						try
						{
							stream.Write(postDataBytes, 0, postDataBytes.Length);
						}
						catch (Exception e)
						{
							util.debugWriteLine(e.Message + " " + e.StackTrace + " " + e.Source + " " + e.TargetSite);
						}
					}

					var res = req.GetResponse();

					using (var getResStream = res.GetResponseStream())
					using (var resStream = new System.IO.StreamReader(getResStream))
					{
						var resStr = resStream.ReadToEnd();

						var isSuccess = resStr.IndexOf("{\"delete_count\":1,\"status\":\"ok\"}") > -1;
						if (!isSuccess)
						{
							util.debugWriteLine(resStr);
							Thread.Sleep(3000);
							continue;
						}
						return isSuccess;
					}

				}
				catch (Exception e)
				{
					//form.addLogText("フォロー解除に失敗しました。");
					util.debugWriteLine(e.Message + e.StackTrace);
					continue;
				}
			}
			//form.addLogText("フォロー解除に失敗しました。");
			util.debugWriteLine("フォロー解除失敗 " + comId);
			return false;
		}

19 Source : FollowUser.cs
with GNU General Public License v3.0
from guest-nico

private bool unJoin(string comId, CookieContainer cc, MainForm form, config.config cfg) {
			for (int i = 0; i < 3; i++) {
//				var myPageUrl = "http://www.nicovideo.jp/my";
				var comUrl = "https://www.nicovideo.jp/user/" + comId; 
				var url = "https://www.nicovideo.jp/api/watchitem/delete";
				var headers = new WebHeaderCollection();
//				headers.Add("Upgrade-Insecure-Requests", "1");
				headers.Add("User-Agent", util.userAgent);
				/*
				try {
					var cg = new CookieGetter(cfg);
					var cgret = cg.getHtml5RecordCookie(url, isSub);
					cgret.Wait();

					if (cgret == null || cgret.Result == null) {
						System.Threading.Thread.Sleep(3000);
						continue;
					}
					var _cc = cgret.Result[0];

				} catch (Exception e) {
					return false;
				}
				*/
				
				try {
					var pageRes = util.getPageSource(comUrl, cc);
					var token = util.getRegGroup(pageRes, "data-csrf-token=\"(.+?)\"");
					if (token == null) token = util.getRegGroup(pageRes, "Globals.hash = '(.+?)'");
					if (token == null) {
						util.debugWriteLine("user unfollow token null " + comId);
						return false;
					}
					
					var handler = new System.Net.Http.HttpClientHandler();
					handler.UseCookies = true;
					handler.CookieContainer = cc;
					handler.Proxy = null;
					
					var http = new System.Net.Http.HttpClient(handler);
					http.DefaultRequestHeaders.Referrer = new Uri(url);
					/*
					var content = new System.Net.Http.FormUrlEncodedContent(new Dictionary<string, string>
					{
						{"commit", "はい、フォローを解除します"}, {"time", time}, {"commit_key", commit_key}
					});
					*/
					var enc = Encoding.GetEncoding("UTF-8");
					string data =
					    "id_list[1][]=" + comId + "&token=" + token;
					byte[] postDataBytes = Encoding.ASCII.GetBytes(data);
					
					util.debugWriteLine("access__ followUser unjoin");
					var req = (HttpWebRequest)WebRequest.Create(url);
					req.Method = "POST";
					req.Proxy = null;
					req.CookieContainer = cc;
					req.Referer = url;
					req.ContentLength = postDataBytes.Length;
					req.ContentType = "application/x-www-form-urlencoded";
					req.Headers.Add("X-Requested-With", "XMLHttpRequest");
					req.Headers.Add("Accept-Encoding", "gzip,deflate");
					req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
					using (var stream = req.GetRequestStream()) {
						try {
							stream.Write(postDataBytes, 0, postDataBytes.Length);
						} catch (Exception e) {
				       		util.debugWriteLine(e.Message + " " + e.StackTrace + " " + e.Source + " " + e.TargetSite);
				       	}
					}
	
					var res = req.GetResponse();
					
					using (var getResStream = res.GetResponseStream())
					using (var resStream = new System.IO.StreamReader(getResStream)) {
						var resStr = resStream.ReadToEnd();
		
						var isSuccess = resStr.IndexOf("{\"delete_count\":1,\"status\":\"ok\"}") > -1;
						if (!isSuccess) {
							util.debugWriteLine(resStr);
							Thread.Sleep(3000);
							continue;
						}
						return isSuccess;
					}
					
				} catch (Exception e) {
					//form.addLogText("フォロー解除に失敗しました。");
					util.debugWriteLine(e.Message+e.StackTrace);
					continue;
				}
			}
			//form.addLogText("フォロー解除に失敗しました。");
			util.debugWriteLine("フォロー解除失敗 " + comId);
			return false;
		}

19 Source : FollowCommunity.cs
with GNU General Public License v3.0
from guest-nico

private bool join(string comId, CookieContainer cc, MainForm form, config.config cfg, bool isSub)
		{
			for (int i = 0; i < 2; i++)
			{
				//				var myPageUrl = "http://www.nicovideo.jp/my";
				var comUrl = "https://com.nicovideo.jp/community/" + comId;
				var url = "https://com.nicovideo.jp/motion/" + comId;
				var headers = new WebHeaderCollection();
				headers.Add("Upgrade-Insecure-Requests", "1");
				headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36");
				try
				{
					var ccc = form.check.container;
					/*
					var cg = new CookieGetter(cfg);
					var cgret = cg.getHtml5RecordCookie(url, isSub);
					cgret.Wait();
					                                  
					
		//			cgret.ConfigureAwait(false);
					if (cgret == null || cgret.Result == null) {
						System.Threading.Thread.Sleep(3000);
						continue;
					}
					var _cc = cgret.Result[0];
//					var _cc = cgret.Result[(isSub) ? 1 : 0];
//					util.debugWriteLine(cg.pageSource);
					*/
					var res = util.getPageSource(url, ref headers, ccc, url);
					if (res == null) return false;
					var isJidouShounin = res.IndexOf("自動承認されます") > -1;
					//				var _compage = util.getPageSource(url, ref headers, cc);
					//				var gateurl = "http://live.nicovideo.jp/gate/lv313793991";
					//				var __gatePage = util.getPageSource(gateurl, ref headers, cc);
					//				var _compage2 = util.getPageSource(url, ref headers, cc);
					//					util.debugWriteLine(cc.GetCookieHeader(new Uri(url)));
					var msg = (isJidouShounin ? "フォローを試みます。" : "自動承認ではありませんでした。");

					if (!isJidouShounin)
					{
						form.addLogText(msg);
						return false;
					}
				}
				catch (Exception e)
				{
					return false;
				}


				try
				{
					var handler = new System.Net.Http.HttpClientHandler();
					handler.UseCookies = true;
					handler.CookieContainer = cc;
					handler.Proxy = null;


					var http = new System.Net.Http.HttpClient(handler);
					http.DefaultRequestHeaders.Referrer = new Uri(url);

					var content = new System.Net.Http.FormUrlEncodedContent(new Dictionary<string, string>
					{
						{"mode", "commit"}, {"replacedle", "フォローリクエスト"}
					});

					var enc = Encoding.GetEncoding("UTF-8");
					string data =
						"mode=commit&replacedle=" + System.Web.HttpUtility.UrlEncode("フォローリクエスト", enc);
					byte[] postDataBytes = Encoding.ASCII.GetBytes(data);


					var req = (HttpWebRequest)WebRequest.Create(url);
					req.Method = "POST";
					req.Proxy = null;
					req.CookieContainer = cc;
					req.Referer = url;
					req.ContentLength = postDataBytes.Length;
					req.ContentType = "application/x-www-form-urlencoded";
					//				req.Headers.Add("Referer", url);
					using (var stream = req.GetRequestStream())
					{
						try
						{
							stream.Write(postDataBytes, 0, postDataBytes.Length);
						}
						catch (Exception e)
						{
							util.debugWriteLine(e.Message + " " + e.StackTrace + " " + e.Source + " " + e.TargetSite);
						}
					}
					//					stream.Close();


					var res = req.GetResponse();

					using (var getResStream = res.GetResponseStream())
					using (var resStream = new System.IO.StreamReader(getResStream))
					{
						var resStr = resStream.ReadToEnd();

						var isSuccess = resStr.IndexOf("フォローしました") > -1;
						//var _m = (form.rec.isPlayOnlyMode) ? "視聴" : "録画";
						//form.addLogText((isSuccess ?
						//                 "フォローしました。" + _m + "開始までしばらくお待ちください。" : "フォローに失敗しました。") + util.getMainSubStr(isSub, true));
						return isSuccess;
					}

					//				resStream.Close();


					//				Task<HttpResponseMessage> _resTask = http.PostAsync(url, content);

					//				_resTask.Wait();
					//				var _res = _resTask.Result;

					//				var resTask = _res.Content.ReadreplacedtringAsync();
					//				resTask.Wait();
					//				var res = resTask.Result;
					//			var a = _res.Headers;

					//			if (res.IndexOf("login_status = 'login'") < 0) return null;

					//				var cc = handler.CookieContainer;

				}
				catch (Exception e)
				{
					form.addLogText("フォローに失敗しました。" + util.getMainSubStr(isSub, true));
					util.debugWriteLine(e.Message + e.StackTrace);
					continue;
					//					return false;
				}
			}
			form.addLogText("フォローに失敗しました。" + util.getMainSubStr(isSub, true));
			util.debugWriteLine("フォロー失敗");
			return false;
		}

19 Source : util.cs
with GNU General Public License v3.0
from guest-nico

public static string getPageSource(string _url, CookieContainer container = null, string referer = null, bool isFirstLog = true, int timeoutMs = 5000) {
		timeoutMs = 5000;
		/*
		string a = "";
		try {
//			a = container.GetCookieHeader(new Uri(_url));
		} catch (Exception e) {
			util.debugWriteLine("getpage get cookie header error " + _url + e.Message+e.StackTrace);
			return null;
		}
		if (isFirstLog)
			util.debugWriteLine("getpagesource " + _url + " " + a);
		*/	
//		util.debugWriteLine("getpage 02");
		for (int i = 0; i < 1; i++) {
			try {
//				util.debugWriteLine("getpage 00");
				var req = (HttpWebRequest)WebRequest.Create(_url);
				req.Proxy = null;
				req.AllowAutoRedirect = true;
	//			req.Headers = getheaders;
				if (referer != null) req.Referer = referer;
				if (container != null) req.CookieContainer = container;
				req.Headers.Add("Accept-Encoding", "gzip,deflate");
				req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
				req.Timeout = timeoutMs;
				
				var res = (HttpWebResponse)req.GetResponse();
				var dataStream = res.GetResponseStream();
				var reader = new StreamReader(dataStream);
				
				/*
				var resStrTask = reader.ReadToEndAsync();
				if (!resStrTask.Wait(5000)) return null;
				string resStr = resStrTask.Result;
				*/
//				util.debugWriteLine("getpage 3");
				var resStr = reader.ReadToEnd();
//				util.debugWriteLine("getpage 4");
				
//				getheaders = res.Headers;
				return resStr;
	
			} catch (Exception e) {
				System.Threading.Tasks.Task.Run(() => {
					util.debugWriteLine("getpage error " + _url + e.Message+e.StackTrace);
				});
	//				System.Threading.Thread.Sleep(3000);
				continue;
			}
		}
			
		return null;
	}

19 Source : util.cs
with GNU General Public License v3.0
from guest-nico

public static byte[] getFileBytes(string url, CookieContainer container) {
//		var a = container.GetCookieHeader(new Uri(_url));
		util.debugWriteLine("getfilebyte " + url);
		for (int i = 0; i < 1; i++) {
			try {
				var req = (HttpWebRequest)WebRequest.Create(url);
				req.Proxy = null;
				req.AllowAutoRedirect = true;
	//			req.Headers = getheaders;
//				if (referer != null) req.Referer = referer;
				if (container != null) req.CookieContainer = container;
				var res = (HttpWebResponse)req.GetResponse();
				var dataStream = res.GetResponseStream();
				
//				var reader = new StreamReader(dataStream);
				byte[] b = new byte[10000000];
				int pos = 0;
				var r = 0;
				while ((r = dataStream.Read(b, pos, 1000000)) > 0) {
//					if (dataStream.Read(b, (int)j, (int)dataStream.Length) == 0) break;
//					j = dataStream.Position;
					pos += r;
				}
				Array.Resize(ref b, pos);
				return b;
				
			} catch (Exception e) {
				util.debugWriteLine("getfile error " + url + e.Message+e.StackTrace);
//				System.Threading.Thread.Sleep(3000);
				continue;
			}
		}
		return null;
	}

19 Source : FollowCommunity.cs
with GNU General Public License v3.0
from guest-nico

private bool join(string comId, CookieContainer cc, MainForm form, config.config cfg, bool isPlayOnlyMode) {
			for (int i = 0; i < 5; i++) {
				//var myPageUrl = "https://www.nicovideo.jp/my";
				var comUrl = "https://com.nicovideo.jp/community/" + comId; 
				var url = "https://com.nicovideo.jp/motion/" + comId;
				var headers = new WebHeaderCollection();
				headers.Add("Upgrade-Insecure-Requests", "1");
				headers.Add("User-Agent", util.userAgent);
				try {
					var cg = new CookieGetter(cfg);
					var cgret = cg.getHtml5RecordCookie(url);
					cgret.Wait();
					                                  
					
		//			cgret.ConfigureAwait(false);
					if (cgret == null || cgret.Result == null) {
						System.Threading.Thread.Sleep(3000);
						continue;
					}
					var _cc = cgret.Result[0];
//					var _cc = cgret.Result[(isSub) ? 1 : 0];
//					util.debugWriteLine(cg.pageSource);
					
					var res = util.getPageSource(url, _cc, comUrl);
					var isJidouShounin = res.IndexOf("自動承認されます") > -1;
	//				var _compage = util.getPageSource(url, ref headers, cc);
	//				var gateurl = "http://live.nicovideo.jp/gate/lv313793991";
	//				var __gatePage = util.getPageSource(gateurl, ref headers, cc);
	//				var _compage2 = util.getPageSource(url, ref headers, cc);
//					util.debugWriteLine(cc.GetCookieHeader(new Uri(url)));
					var msg = (isJidouShounin ? "フォローを試みます。" : "自動承認ではありませんでした。");
					form.addLogText(msg);
					
					if (!isJidouShounin) return false;
				} catch (Exception e) {
					util.debugWriteLine(e.Message + e.Source + e.StackTrace + e.TargetSite);
					return false;
				}
				
				
				try {
					var handler = new System.Net.Http.HttpClientHandler();
					handler.UseCookies = true;
					handler.CookieContainer = cc;
					handler.Proxy = util.httpProxy;
					
					
					var http = new System.Net.Http.HttpClient(handler);
					http.DefaultRequestHeaders.Referrer = new Uri(url);
					
					var content = new System.Net.Http.FormUrlEncodedContent(new Dictionary<string, string>
					{
						{"mode", "commit"}, {"replacedle", "フォローリクエスト"}
					});
					
					var enc = Encoding.GetEncoding("UTF-8");
					string data =
					    "mode=commit&replacedle=" + System.Web.HttpUtility.UrlEncode("フォローリクエスト", enc);
					byte[] postDataBytes = Encoding.ASCII.GetBytes(data);
	
					
					var req = (HttpWebRequest)WebRequest.Create(url);
					req.Method = "POST";
					req.Proxy = util.httpProxy;
					req.CookieContainer = cc;
					req.Referer = url;
					req.ContentLength = postDataBytes.Length;
					req.ContentType = "application/x-www-form-urlencoded";
					req.Headers.Add("Accept-Encoding", "gzip,deflate");
					req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
	//				req.Headers.Add("Referer", url);
					using (var stream = req.GetRequestStream()) {
						try {
							stream.Write(postDataBytes, 0, postDataBytes.Length);
						} catch (Exception e) {
				       		util.debugWriteLine(e.Message + " " + e.StackTrace + " " + e.Source + " " + e.TargetSite);
				       	}
					}
	//					stream.Close();
					
	
					var res = req.GetResponse();
					
					using (var resStream = new System.IO.StreamReader(res.GetResponseStream())) {
						var resStr = resStream.ReadToEnd();
		
						var isSuccess = resStr.IndexOf("フォローしました") > -1;
						var _m = (isPlayOnlyMode) ? "視聴" : "録画";
						form.addLogText((isSuccess ?
						                 "フォローしました。" + _m + "開始までしばらくお待ちください。" : "フォローに失敗しました。"));
						return isSuccess;
					}
	//				resStream.Close();
					
					
	//				Task<HttpResponseMessage> _resTask = http.PostAsync(url, content);
					
	//				_resTask.Wait();
	//				var _res = _resTask.Result;
					
	//				var resTask = _res.Content.ReadreplacedtringAsync();
	//				resTask.Wait();
	//				var res = resTask.Result;
		//			var a = _res.Headers;
					
		//			if (res.IndexOf("login_status = 'login'") < 0) return null;
					
	//				var cc = handler.CookieContainer;
					
				} catch (Exception e) {
					form.addLogText("フォローに失敗しました。");
					util.debugWriteLine(e.Message+e.StackTrace);
					continue;
//					return false;
				}
			}
			form.addLogText("フォローに失敗しました。");
			util.debugWriteLine("フォロー失敗");
			return false;
		}

19 Source : RecordFromUrl.cs
with GNU General Public License v3.0
from guest-nico

private int getPageAfterFollow(string url, string lvid, ref JikkenRecorder jr, out CookieContainer cc) {
			Uri TargetUrl = new Uri("https://live.nicovideo.jp");
			//Uri TargetUrl2 = new Uri("https://live2.nicovideo.jp");
			for (int i = 0; this == rm.rfu; i++) {
				try {
					var cg = new CookieGetter(rm.cfg);
					var cgret = cg.getHtml5RecordCookie(url);
					cgret.Wait();
					
					if (cgret == null || cgret.Result == null) {
						System.Threading.Thread.Sleep(1000);
						continue;
					}
					cc = cgret.Result[0];
					/*
					var wc = new WebHeaderCollection();
					var referer =  "http://live.nicovideo.jp/gate/" + lvid;
					container.Add(TargetUrl, new Cookie("_gali", "jsFollowingAdMain"));
					container.Add(TargetUrl2, new Cookie("_gali", "jsFollowingAdMain"));
	//				container.Add(TargetUrl, new Cookie("_gali", "all"));
	//				container.Add(TargetUrl2, new Cookie("_gali", "all"));
					
					res = util.getPageSource(url + "?ref=grel", ref wc, container, "");
					
					var pagetype = util.getPageType(res);
					*/
					
	//				var pagetype = getPageType(url + "?ref=grel");
	//				if (pagetype != 5) return pagetype;
	//				if (res.IndexOf("会場のご案内") < 0) break;
					var _url = "https://live.nicovideo.jp/watch/" + lvid;                              
					var req = (HttpWebRequest)WebRequest.Create(_url + "?ref=grel");
					req.Proxy = util.httpProxy;
					req.AllowAutoRedirect = true;
		//			req.Headers = getheaders;
					req.Referer = "https://live.nicovideo.jp/gate/" + lvid;
					req.Headers.Add("Accept-Encoding", "gzip,deflate");
					req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
					//var ccInd = (isSub) ? 1 : 0;
					//var ccInd = 0;
					cc.Add(TargetUrl, new Cookie("_gali", "box" + lvid));
					if (cc != null) req.CookieContainer = cc;
					using (var _res = (HttpWebResponse)req.GetResponse())
					
					using (var dataStream = _res.GetResponseStream())
					using (var reader = new StreamReader(dataStream)) {
						res = reader.ReadToEnd();
					
						var getheaders = _res.Headers;
						var resCookie = _res.Cookies;
					}
					
					isJikken = res.IndexOf("siteId":"nicocas") > -1;
					int pagetype;
//					if (isRtmp) pagetype = getRtmpPageType(res, isSub, out rr, cc);
					//pagetype = (isJikken) ? getJikkenPageType(res, out jr, cc) : util.getPageType(res);
					pagetype = (isJikken) ? 0 : util.getPageType(res);					
					
					if (!isJikken && pagetype != 5 && pagetype != 9 && pagetype != 4) return pagetype;
					if (isJikken && pagetype != 4) return pagetype;
					util.debugWriteLine(i);
				} catch (Exception e) {
					util.debugWriteLine(e.Message + " " + e.StackTrace);
				}
				System.Threading.Thread.Sleep(3000);
			}
			cc = null;
			return -1;
		}

19 Source : util.cs
with GNU General Public License v3.0
from guest-nico

public static HttpWebResponse sendRequest(string url, Dictionary<string, string> headers, byte[] content, string method, CookieContainer cc = null) {
		try {
			var req = (HttpWebRequest)WebRequest.Create(url);
			req.Method = method;
			req.Proxy = null;
			req.Headers.Add("Accept-Encoding", "gzip,deflate");
			req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
			req.CookieContainer = cc;
			
			if (headers != null) {
				foreach (var h in headers) {
					if (h.Key.ToLower().Replace("-", "") == "contenttype")
						req.ContentType = h.Value;
					else if (h.Key.ToLower().Replace("-", "") == "useragent")
						req.UserAgent = h.Value;
					else if (h.Key.ToLower().Replace("-", "") == "connection")
						req.KeepAlive = h.Value.ToLower().Replace("-", "") == "keepalive";
					else if (h.Key.ToLower().Replace("-", "") == "accept")
						req.Accept = h.Value;
					else if (h.Key.ToLower().Replace("-", "") == "referer")
						req.Referer = h.Value;
					else req.Headers.Add(h.Key, h.Value);
				}
			}
				
			if (content != null) {
				using (var stream = req.GetRequestStream()) {
					try {
						stream.Write(content, 0, content.Length);
					} catch (Exception ee) {
			       		debugWriteLine(ee.Message + " " + ee.StackTrace + " " + ee.Source + " " + ee.TargetSite);
			       	}
				}
			}
//					stream.Close();

			return (HttpWebResponse)req.GetResponse();
			
		} catch (WebException ee) {
			util.debugWriteLine(ee.Data + ee.Message + ee.Source + ee.StackTrace + ee.Status);
			try {
				return (HttpWebResponse)ee.Response;
				//using (var _rs = ee.Response.GetResponseStream())
				//using (var rs = new StreamReader(_rs)) {
				//	return rs.ReadToEnd();
				//}
			} catch (Exception eee) {
				util.debugWriteLine(eee.Message + eee.Source + eee.StackTrace);
				return null;
			}
		} catch (Exception ee) {
			debugWriteLine(ee.Message + ee.Source + ee.StackTrace + ee.TargetSite);
			return null;
		}
	}

19 Source : ENOSWPackageDownloader.cs
with MIT License
from gus33000

public static string DownloadENOSWPackage(string RMCode, string outputfolder = ".\\")
        {
            var discoveryRequest = "{\"api-version\":\"1\",\"condition\":[\"default\"],\"query\":{ \"manufacturerHardwareModel\":\"" + RMCode + "\",\"manufacturerName\":\"Microsoft\",\"manufacturerProductLine\":\"Lumia\",\"packageClreplaced\":\"Public\",\"packageType\":\"Test Mode\"},\"response\":null}";

            Console.WriteLine("(mmoENOSWDL) Discovering ENOSW packages...");

            HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://api.swrepository.com/rest-api/discovery/1/package");

            req.Method = "POST";
            req.ContentType = "application/json; charset=utf-8";
            req.Accept = "application/json";
            req.UserAgent = "SoftwareRepository";

            StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
            streamOut.Write(discoveryRequest);
            streamOut.Close();
            StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
            string discoveryResponse = streamIn.ReadToEnd();
            streamIn.Close();

            Discovery.RootObject disc = JsonConvert.DeserializeObject<Discovery.RootObject>(discoveryResponse);

            var id = disc.softwarePackages[0].id;

            string file = "";

            foreach (var filen in disc.softwarePackages[0].files)
                if (filen.fileName.ToLower().EndsWith(".secwim"))
                    file = filen.fileName;

            Console.WriteLine("(mmoENOSWDL) Accessing ENOSW packages from remote server...");

            req = (HttpWebRequest)WebRequest.Create("https://api.swrepository.com/rest-api/discovery/1/package/" + id + "/file/" + file + "/urls");

            req.Method = "GET";
            req.UserAgent = "SoftwareRepository";

            streamIn = new StreamReader(req.GetResponse().GetResponseStream());
            string fileresp = streamIn.ReadToEnd();
            streamIn.Close();

            Package.RootObject pkg = JsonConvert.DeserializeObject<Package.RootObject>(fileresp);

            var url = pkg.url;
            WebClient wc = new WebClient();
            Console.WriteLine("(mmoENOSWDL) Downloading ENOSW...");
            wc.DownloadFile(new Uri(url), outputfolder + file);
            Console.WriteLine("(mmoENOSWDL) Done.");
            return file;
        }

19 Source : Class1.cs
with GNU General Public License v3.0
from Hackplayers

public static byte[] HttpPost(Uri URL, string Endpoint = "", byte[] payload = default(byte[]))
        {
            Uri FullUrl = new Uri(URL, Endpoint);
#if DEBUG
            Console.WriteLine("Attempting HTTP POST to {0}", FullUrl);
#endif
            while (true)
            {
                try
                {
                    var wr = WebRequest.Create(FullUrl);
                    wr.Method = "POST";
                    if (payload.Length > 0)
                    {
                        wr.ContentType = "application/octet-stream";
                        wr.ContentLength = payload.Length;
                        var requestStream = wr.GetRequestStream();
                        requestStream.Write(payload, 0, payload.Length);
                        requestStream.Close();
                    }
                    var response = wr.GetResponse();
                    using (MemoryStream memstream = new MemoryStream())
                    {
                        response.GetResponseStream().CopyTo(memstream);
                        return memstream.ToArray();
                    }
                }
                catch (Exception e)
                {
#if DEBUG
                    Console.WriteLine("Error sending job results to {0}: {1}", FullUrl, e.Message);
#endif
                    Thread.Sleep(5000);
                }
            }
        }

19 Source : RestClient.cs
with BSD 3-Clause "New" or "Revised" License
from HalcyonGrid

public Stream Request()
        {
            lock (_lock)
            {
                _request = (HttpWebRequest) WebRequest.Create(buildUri());
                _request.KeepAlive = false;
                _request.ContentType = "application/xml";
                _request.Timeout = 200000;
                _request.Method = RequestMethod;
                _asyncException = null;

//                IAsyncResult responseAsyncResult = _request.BeginGetResponse(new AsyncCallback(ResponseIsReadyDelegate), _request);
                try
                {
                    _response = (HttpWebResponse) _request.GetResponse();
                }
                catch (WebException e)
                {
                    HttpWebResponse errorResponse = e.Response as HttpWebResponse;
                    if (null != errorResponse && HttpStatusCode.NotFound == errorResponse.StatusCode)
                    {
                        m_log.Warn("[replacedET] replacedet not found (404)");
                    }
                    else
                    {
                        m_log.Error("[replacedET] Error fetching replacedet from replacedet server");
                        m_log.Debug(e.ToString());
                    }

                    return null;
                }

                Stream src = _response.GetResponseStream();
                int length = src.Read(_readbuf, 0, BufferSize);
                while (length > 0)
                {
                    _resource.Write(_readbuf, 0, length);
                    length = src.Read(_readbuf, 0, BufferSize);
                }


                // TODO! Implement timeout, without killing the server
                // this line implements the timeout, if there is a timeout, the callback fires and the request becomes aborted
                //ThreadPool.RegisterWaitForSingleObject(responseAsyncResult.AsyncWaitHandle, new WaitOrTimerCallback(TimeoutCallback), _request, DefaultTimeout, true);

//                _allDone.WaitOne();
                if (_response != null)
                    _response.Close();
                if (_asyncException != null)
                    throw _asyncException;

                if (_resource != null)
                {
                    _resource.Flush();
                    _resource.Seek(0, SeekOrigin.Begin);
                }

                return _resource;
            }
        }

19 Source : RestClient.cs
with BSD 3-Clause "New" or "Revised" License
from HalcyonGrid

public Stream Request(Stream src)
        {
            _request = (HttpWebRequest) WebRequest.Create(buildUri());
            _request.KeepAlive = false;
            _request.ContentType = "application/xml";
            _request.Timeout = 900000;
            _request.Method = RequestMethod;
            _asyncException = null;
            _request.ContentLength = src.Length;

            m_log.InfoFormat("[REST]: Request Length {0}", _request.ContentLength);
            m_log.InfoFormat("[REST]: Sending Web Request {0}", buildUri());
            src.Seek(0, SeekOrigin.Begin);
            m_log.Info("[REST]: Seek is ok");
            Stream dst = _request.GetRequestStream();
            m_log.Info("[REST]: GetRequestStream is ok");

            byte[] buf = new byte[1024];
            int length = src.Read(buf, 0, 1024);
            m_log.Info("[REST]: First Read is ok");
            while (length > 0)
            {
                dst.Write(buf, 0, length);
                length = src.Read(buf, 0, 1024);
            }

            _response = (HttpWebResponse) _request.GetResponse();

//            IAsyncResult responseAsyncResult = _request.BeginGetResponse(new AsyncCallback(ResponseIsReadyDelegate), _request);

            // TODO! Implement timeout, without killing the server
            // this line implements the timeout, if there is a timeout, the callback fires and the request becomes aborted
            //ThreadPool.RegisterWaitForSingleObject(responseAsyncResult.AsyncWaitHandle, new WaitOrTimerCallback(TimeoutCallback), _request, DefaultTimeout, true);

            return null;
        }

19 Source : HTTPConfiguration.cs
with BSD 3-Clause "New" or "Revised" License
from HalcyonGrid

public void LoadData()
        {
            try
            {
                StringBuilder sb = new StringBuilder();

                byte[] buf = new byte[8192];
                HttpWebRequest request =
                    (HttpWebRequest) WebRequest.Create(remoteConfigSettings.baseConfigURL + configFileName);
                HttpWebResponse response = (HttpWebResponse) request.GetResponse();

                Stream resStream = response.GetResponseStream();

                string tempString = null;
                int count = 0;

                do
                {
                    count = resStream.Read(buf, 0, buf.Length);
                    if (count != 0)
                    {
                        tempString = Encoding.UTF8.GetString(buf, 0, count);
                        sb.Append(tempString);
                    }
                } while (count > 0);
                LoadDataFromString(sb.ToString());
            }
            catch (WebException)
            {
                m_log.Warn("Unable to connect to remote configuration file (" +
                                      remoteConfigSettings.baseConfigURL + configFileName +
                                      "). Creating local file instead.");
                xmlConfig.SetFileName(configFileName);
                xmlConfig.LoadData();
            }
        }

19 Source : SurroundingRegionManager.cs
with BSD 3-Clause "New" or "Revised" License
from HalcyonGrid

private void SendMessageTo(List<KnownNeighborRegion> neighborSnap, string url, MessageType messageType)
        {
            try
            {
                List<Task> waitingResults = new List<Task>();
                OSDMap regionInfo = _scene.RegionInfo.PackRegionInfoData();
                byte[] serializedRegionInfo = OSDParser.SerializeLLSDBinary(regionInfo);

                foreach (var neighbor in neighborSnap)
                {
                    var req = (HttpWebRequest)HttpWebRequest.Create(neighbor.RegionInfo.InsecurePublicHTTPServerURI + url);
                    req.Headers["authorization"] = Util.GenerateHttpAuthorization(_gridSendKey);
                    req.Timeout = NEIGHBOR_HANDLER_TIMEOUT;
                    req.ReadWriteTimeout = NEIGHBOR_HANDLER_TIMEOUT;
                    req.Method = "POST";

                    waitingResults.Add(this.DoRegionAsyncCall(req, neighbor, messageType, serializedRegionInfo));
                }

                Task.WaitAll(waitingResults.ToArray());
            }
            catch (AggregateException e) //we're catching exceptions in the call, so we really should never see this
            {
                for (int j = 0; j < e.InnerExceptions.Count; j++)
                {
                    _log.ErrorFormat("[REGIONMANAGER]: Error thrown from async call: {0}", e);
                }
            }
            catch (Exception e)
            {
                _log.ErrorFormat("[REGIONMANAGER]: Error thrown while sending heartbeat: {0}", e);
            }
        }

19 Source : AvatarRemotePresences.cs
with BSD 3-Clause "New" or "Revised" License
from HalcyonGrid

private async Task<bool> WaitForScenePresenceEstablished(SimpleRegionInfo region)
        {
            //this is the HTTP timeout, however the actual wait timeout on the receiving side is 10 seconds
            //so that timeout should be triggered first
            const int HTTP_SP_WAIT_TIMEOUT = 15000;

            var req = (HttpWebRequest)HttpWebRequest.Create(region.InsecurePublicHTTPServerURI + String.Format("/agent2/{0}/{1}", _sp.UUID, region.RegionHandle));
            req.Headers["authorization"] = Util.GenerateHttpAuthorization(_scene.GridSendKey);
            req.Timeout = HTTP_SP_WAIT_TIMEOUT;
            req.ReadWriteTimeout = HTTP_SP_WAIT_TIMEOUT;
            req.Method = "GET";

            try
            {
                using (WebResponse response = await req.GetResponseAsync(HTTP_SP_WAIT_TIMEOUT))
                {
                    //we do nothing besides dispose on success. a 200 response means all is well
                }

                return true;
            }
            catch (Exception e)
            {
                _log.ErrorFormat("[REMOTEPRESENCE]: Waiting for viewer connection from {0} to {1} failed: {2}", _sp.Name, region.RegionHandle, e);
                return false;
            }
        }

19 Source : CapsBase.cs
with BSD 3-Clause "New" or "Revised" License
from HalcyonGrid

static HttpWebRequest SetupRequest(Uri address, X509Certificate2 clientCert)
        {
            if (address == null)
                throw new ArgumentNullException("address");

            // Create the request
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(address);

            // Add the client certificate to the request if one was given
            if (clientCert != null)
                request.ClientCertificates.Add(clientCert);

            // Leave idle connections to this endpoint open for up to 60 seconds
            request.ServicePoint.MaxIdleTime = 1000 * 60;
            // Disable stupid Expect-100: Continue header
            request.ServicePoint.Expect100Continue = false;
            // Crank up the max number of connections per endpoint (default is 2!)
            request.ServicePoint.ConnectionLimit = Math.Max(request.ServicePoint.ConnectionLimit, 32);
            // Caps requests are never sent as trickles of data, so Nagle's
            // coalescing algorithm won't help us
            request.ServicePoint.UseNagleAlgorithm = false;
            // If not on mono, set accept-encoding header that allows response compression
            if (Type.GetType("Mono.Runtime") == null)
            {
                request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
            }
            return request;
        }

19 Source : DownloadManager.cs
with BSD 3-Clause "New" or "Revised" License
from HalcyonGrid

protected virtual HttpWebRequest SetupRequest(Uri address, string acceptHeader)
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(address);
            request.Method = "GET";

            if (!string.IsNullOrEmpty(acceptHeader))
                request.Accept = acceptHeader;

            // Add the client certificate to the request if one was given
            if (m_ClientCert != null)
                request.ClientCertificates.Add(m_ClientCert);

            // Leave idle connections to this endpoint open for up to 60 seconds
            request.ServicePoint.MaxIdleTime = 0;
            // Disable stupid Expect-100: Continue header
            request.ServicePoint.Expect100Continue = false;
            // Crank up the max number of connections per endpoint (default is 2!)
            request.ServicePoint.ConnectionLimit = m_ParallelDownloads;

            return request;
        }

19 Source : PayPalHelper.cs
with MIT License
from havit

public static NameValueCollection ExecutePayPalRequest(PayPalRequestData requestData, PayPalApiCredentials credentials)
		{			
			string postQueryString = requestData.GetQueryString(credentials);

			HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(credentials.ApiEndpointUrl);
			objRequest.Timeout = Timeout;
			objRequest.Method = "POST";
			objRequest.ContentLength = postQueryString.Length;
			PayPalResponseData responseData;
			
			using (StreamWriter myWriter = new StreamWriter(objRequest.GetRequestStream()))
			{
				myWriter.Write(postQueryString);
			}

			HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();

			string result;
			using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
			{
				result = sr.ReadToEnd();
			}

			responseData = new PayPalResponseData(result);			
			
			return responseData;
		}

19 Source : AresPrehledSubjektuService.cs
with MIT License
from havit

private XDoreplacedent GetAresResponseXDoreplacedent(string requestUrl)
		{
			XDoreplacedent aresResponseXDoreplacedent = null;

			try
			{
				WebRequest aresRequest = HttpWebRequest.Create(requestUrl);
				if (this.Timeout != null)
				{
					aresRequest.Timeout = this.Timeout.Value;
				}
				using (HttpWebResponse aresResponse = (HttpWebResponse)aresRequest.GetResponse())
				{
					aresResponseXDoreplacedent = XDoreplacedent.Load(new StreamReader(aresResponse.GetResponseStream()));
				}
			}
			catch (WebException e)
			{
				throw new AresLoadException(String.Format("Chyba \"{0}\" při pokusu o získání dat ze služby ARES ({1}).", e.Message, requestUrl));
			}

			return aresResponseXDoreplacedent;
		}

19 Source : AresService.cs
with MIT License
from havit

private XDoreplacedent GetAresResponseXDoreplacedent(string requestUrl)
		{
			XDoreplacedent aresResponseXDoreplacedent = null;

            try
			{
				WebRequest aresRequest = HttpWebRequest.Create(requestUrl);
				if (this.Timeout != null)
				{
					aresRequest.Timeout = this.Timeout.Value;
				}

				using (HttpWebResponse aresResponse = (HttpWebResponse)aresRequest.GetResponse())
				{
					aresResponseXDoreplacedent = XDoreplacedent.Load(new StreamReader(aresResponse.GetResponseStream()));
				}
			}
			catch (WebException e)
			{
				throw new AresLoadException(String.Format("Chyba \"{0}\" při pokusu o získání dat ze služby ARES ({1}).", e.Message, requestUrl));
			}

			return aresResponseXDoreplacedent;
		}

19 Source : AresStandardService.cs
with MIT License
from havit

private XDoreplacedent GetAresResponseXDoreplacedent(string requestUrl)
		{
			XDoreplacedent aresResponseXDoreplacedent = null;

			try
			{
				WebRequest aresRequest = HttpWebRequest.Create(requestUrl);
				if (this.Timeout != null)
				{
					aresRequest.Timeout = this.Timeout.Value;
				}

				using (HttpWebResponse aresResponse = (HttpWebResponse)aresRequest.GetResponse())
				{
					aresResponseXDoreplacedent = XDoreplacedent.Load(new StreamReader(aresResponse.GetResponseStream()));
				}
			}
			catch (WebException e)
			{
				throw new AresLoadException(String.Format("Chyba \"{0}\" při pokusu o získání dat ze služby ARES ({1}).", e.Message, requestUrl), e);
			}

			return aresResponseXDoreplacedent;
		}

19 Source : FTPDownloader.cs
with GNU General Public License v3.0
from HicServices

protected virtual void Download(string file, ILoadDirectory destination,IDataLoadEventListener job)
        {

            Stopwatch s = new Stopwatch();
            s.Start();

            string uri;
            if (!string.IsNullOrWhiteSpace(RemoteDirectory))
                uri = "ftp://" + _host + "/" + RemoteDirectory + "/" + file;
            else
                uri = "ftp://" + _host + "/" + file;

            if (_useSSL)
                uri = "s" + uri;

            Uri serverUri = new Uri(uri);
            if (serverUri.Scheme != Uri.UriSchemeFtp)
            {
                return;
            }

            FtpWebRequest reqFTP;
            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
            reqFTP.Credentials = new NetworkCredential(_username, _preplacedword);
            reqFTP.KeepAlive = false;
            reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
            reqFTP.UseBinary = true;
            reqFTP.Proxy = null;
            reqFTP.UsePreplacedive = true;
            reqFTP.EnableSsl = _useSSL;
            reqFTP.Timeout = TimeoutInSeconds*1000;

            FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
            Stream responseStream = response.GetResponseStream();
            string destinationFileName = Path.Combine(destination.ForLoading.FullName, file);
            
            using (FileStream writeStream = new FileStream(destinationFileName, FileMode.Create))
            {
                int Length = 2048;
                Byte[] buffer = new Byte[Length];
                int bytesRead = responseStream.Read(buffer, 0, Length);
                int totalBytesReadSoFar = bytesRead;

                while (bytesRead > 0)
                {
                    writeStream.Write(buffer, 0, bytesRead);
                    bytesRead = responseStream.Read(buffer, 0, Length);


                    //notify whoever is listening of how far along the process we are
                    totalBytesReadSoFar += bytesRead;
                    job.OnProgress(this, new ProgressEventArgs(destinationFileName, new ProgressMeasurement(totalBytesReadSoFar / 1024, ProgressType.Kilobytes), s.Elapsed));
                }
                writeStream.Close();
            }
            
            response.Close();

            _filesRetrieved.Add(serverUri.ToString());
            s.Stop();
        }

19 Source : FTPDownloader.cs
with GNU General Public License v3.0
from HicServices

public virtual void LoadCompletedSoDispose(ExitCodeType exitCode,IDataLoadEventListener postLoadEventListener)
        {

            if (exitCode == ExitCodeType.Success && DeleteFilesOffFTPServerAfterSuccesfulDataLoad)
            {
                foreach (string file in _filesRetrieved)
                {
                    FtpWebRequest reqFTP;
                    reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(file));
                    reqFTP.Credentials = new NetworkCredential(_username, _preplacedword);
                    reqFTP.KeepAlive = false;
                    reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;
                    reqFTP.UseBinary = true;
                    reqFTP.Proxy = null;
                    reqFTP.UsePreplacedive = true;
                    reqFTP.EnableSsl = _useSSL;

                    FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();

                    if(response.StatusCode != FtpStatusCode.FileActionOK)
                        postLoadEventListener.OnNotify(this, new NotifyEventArgs(ProgressEventType.Warning, "Attempt to delete file at URI " + file + " resulted in response with StatusCode = " + response.StatusCode));
                    else
                        postLoadEventListener.OnNotify(this, new NotifyEventArgs(ProgressEventType.Information, "Deleted FTP file at URI " + file + " status code was " + response.StatusCode));

                    response.Close();
                }
            }
        }

19 Source : FTPDownloader.cs
with GNU General Public License v3.0
from HicServices

protected virtual string[] GetFileList()
        {
            StringBuilder result = new StringBuilder();
            WebResponse response = null;
            StreamReader reader = null;
            try
            {
                FtpWebRequest reqFTP;

                string uri;


                if (!string.IsNullOrWhiteSpace(RemoteDirectory))
                    uri = "ftp://" + _host + "/" + RemoteDirectory;
                else
                    uri = "ftp://" + _host;

                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
                reqFTP.UseBinary = true;
                reqFTP.Credentials = new NetworkCredential(_username, _preplacedword);
                reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
                reqFTP.Timeout = TimeoutInSeconds*1000;
                reqFTP.KeepAlive = KeepAlive;
                
                reqFTP.Proxy = null;
                reqFTP.KeepAlive = false;
                reqFTP.UsePreplacedive = true;
                reqFTP.EnableSsl = _useSSL;

                //accept any certificates
                ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate;
                response = reqFTP.GetResponse();

                reader = new StreamReader(response.GetResponseStream());
                string line = reader.ReadLine();
                while (line != null)
                {
                    result.Append(line);
                    result.Append("\n");
                    line = reader.ReadLine();
                }
                // to remove the trailing '\n'
                result.Remove(result.ToString().LastIndexOf('\n'), 1);
                return result.ToString().Split('\n');
            }
            finally
            {
                if (reader != null)
                    reader.Close();

                if (response != null)
                    response.Close();
            }
        }

See More Examples