Google.SafeBrowsing.API.GetListData C# (CSharp) Method

GetListData() public method

This is used by clients who want to get new data for known list types. Step 1/2. Get chunk URLs redirects for ALL chunks Only supports data for one list at the time (which is not a problem for our implementation since we always only request from one list)
public GetListData ( string list, IEnumerable whilelist, IEnumerable blacklist ) : ListData
list string list name
whilelist IEnumerable
blacklist IEnumerable all blacklist chunks already available localy
return ListData
        public ListData GetListData(string list, IEnumerable<Interval> whilelist, IEnumerable<Interval> blacklist)
        {
            var requestUrl = String.Format(ApiURL, "downloads", ApiKey, ClientVersion);
            var request = (HttpWebRequest)WebRequest.Create(requestUrl);

            if (request.Proxy != null)
                request.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials;

            request.Method = "POST";

            string strwlist = PrintIntervals(whilelist, "a"),
                strblist = PrintIntervals(blacklist, "s");

            var sb = new StringBuilder();

            sb.Append(list);
            sb.Append(";");

            if (strwlist.Length > 0)
            {
                sb.Append(strwlist);
                sb.Append(':');
            }
            if (strblist.Length > 0)
                sb.Append(strblist);

            sb.Append('\n');


            var s = request.GetRequestStream();

            var content = Encoding.ASCII.GetBytes(sb.ToString());
            s.Write(content, 0, content.Length);
            s.Close();

            var response = (HttpWebResponse)request.GetResponse();

            if (response.StatusCode != HttpStatusCode.OK)
                return null;

            //read individual redirect addresses
            var data = ParseListData(response.GetResponseStream());

            return data;
        }