Example #1
0
        public static async ValueTask <string> Request(HttpMethod Method, string URI, string Parameters = null)
        //, string ProxyString
        {
            System.Net.WebRequest req = System.Net.WebRequest.Create(URI);
            //req.Proxy = new System.Net.WebProxy(ProxyString, true);
            //Add these, as we're doing a POST
            req.ContentType = "application/x-www-form-urlencoded";
            req.Method      = Method.Method;
            if (!string.IsNullOrEmpty(Parameters))
            {
                using (System.IO.StreamWriter sw = new System.IO.StreamWriter(await req.GetRequestStreamAsync()))
                //We need to count how many bytes we're sending. Post'ed Faked Forms should be name=value&
                {
                    //req.ContentLength = sw.Encoding.GetBytes(Parameters).Length;
                    sw.Write(Parameters); //Push it out there
                    sw.Flush();
                }
            }
            System.Net.WebResponse resp = await req.GetResponseAsync();

            if (resp == null)
            {
                return(null);
            }
            using (System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream()))
                return(sr.ReadToEnd().Trim());
        }
Example #2
0
        public async Task <string> Get()
        {
            string result = null;

            try
            {
                //"2016-06-12T13:49:24.759Z"
                string request_string = Program.config_couchdb_url + $"/metadata/2016-06-12T13:49:24.759Z/validator.js";

                System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string));
                request.Method          = "GET";
                request.PreAuthenticate = false;

                System.Net.WebResponse response = (System.Net.HttpWebResponse) await request.GetResponseAsync();

                System.IO.Stream       dataStream = response.GetResponseStream();
                System.IO.StreamReader reader     = new System.IO.StreamReader(dataStream);
                result = await reader.ReadToEndAsync();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            return(result);
        }
        /// <summary>
        /// Retrieves the string contents of a remote url containing schema data
        /// </summary>
        /// <param name="location">The location of the contents</param>
        /// <returns>String based Json schema</returns>
        public virtual string GetRemoteSchemaContents(Uri location)
        {
            System.Net.WebRequest webcall = System.Net.WebRequest.Create(location);
            webcall.ContentType = "application/json";

#if NETFX_CORE
            return(System.Threading.Tasks.Task.Run(async() =>
            {
                using (System.Net.WebResponse response = await webcall.GetResponseAsync())
                    using (System.IO.StreamReader readall = new System.IO.StreamReader(response.GetResponseStream()))
                    {
                        return readall.ReadToEnd();
                    }
            }).Result);
#elif PORTABLE
            var response = System.Threading.Tasks.Task.Run(async() => await System.Threading.Tasks.Task.Factory.FromAsync <System.Net.WebResponse>
                                                               (webcall.BeginGetResponse, webcall.EndGetResponse, null)).Result;

            using (System.IO.StreamReader readall = new System.IO.StreamReader(response.GetResponseStream()))
            {
                return(readall.ReadToEnd());
            }
#elif PORTABLE40
            return(""); // Unsupported
#else
            using (System.Net.WebResponse response = webcall.GetResponse())
                using (System.IO.StreamReader readall = new System.IO.StreamReader(response.GetResponseStream()))
                {
                    return(readall.ReadToEnd());
                }
#endif
        }
Example #4
0
 public override string LoadHTML(string url)
 {
     try
     {
         System.Net.WebRequest wRequest = System.Net.WebRequest.Create(url);
         wRequest.Headers.Add("authority", "www.dy2018.com");
         wRequest.Headers.Add("accept-language", "zh-CN,zh;q=0.9,en;q=0.8,da;q=0.7");
         wRequest.Headers.Add("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36");
         wRequest.ContentType           = "text/html; charset=gb2312";
         wRequest.Method                = "get";
         wRequest.UseDefaultCredentials = true;
         var task = wRequest.GetResponseAsync();
         System.Net.WebResponse wResp      = task.Result;
         System.IO.Stream       respStream = wResp.GetResponseStream();
         using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.GetEncoding("GB2312")))
         {
             return(reader.ReadToEnd());
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine($"LoadHTML fail,url:{url},ex:{ex.ToString()}");
         LogHelper.Error(url, ex);
         return(string.Empty);
     }
 }
Example #5
0
        async void GetWeather(string CityName)
        {
            string appID   = "869a1bfdfb679bdbbbf37f4fac4dd3f1";
            string units   = "metric";
            string apibase = "https://api.openweathermap.org/data/2.5/weather?q=";


            if (string.IsNullOrEmpty(CityName))
            {
                Toast.MakeText(this, "Please enter a valid city name", ToastLength.Short).Show();
                return;
            }

            ShowProgressDialogue("Fetching Weather Data...", false);

            string url = apibase + CityName + "&appid=" + appID + "&units=" + units;

            var        handler = new HttpClientHandler();
            HttpClient client  = new HttpClient(handler);
            string     result  = await client.GetStringAsync(url);

            Console.WriteLine(result);

            var    resultObject       = JObject.Parse(result);
            string WeatherDescription = resultObject["weather"][0]["description"].ToString();
            string icon         = resultObject["weather"][0]["icon"].ToString();
            string temperature  = resultObject["main"]["temp"].ToString();
            string placeAddress = resultObject["name"].ToString() + ", " + resultObject["sys"]["country"].ToString();

            WeatherDescription = CultureInfo.InvariantCulture.TextInfo.ToTitleCase(WeatherDescription);

            temperatureText.Text        = temperature;
            placeText.Text              = placeAddress;
            weatherDescriptionText.Text = WeatherDescription;


            // Download Image Using WebRequest

            string imageUrl = "http://openweathermap.org/img/w/" + icon + ".png";

            System.Net.WebRequest request = default(System.Net.WebRequest);
            request         = System.Net.WebRequest.Create(imageUrl);
            request.Timeout = int.MaxValue;
            request.Method  = "GET";

            System.Net.WebResponse response = default(System.Net.WebResponse);
            response = await request.GetResponseAsync();

            MemoryStream ms = new MemoryStream();

            response.GetResponseStream().CopyTo(ms);
            byte[] imageData = ms.ToArray();

            Bitmap bitmap = BitmapFactory.DecodeByteArray(imageData, 0, imageData.Length);

            weatherImage.SetImageBitmap(bitmap);

            CloseProgressDialogue();
        }
Example #6
0
        // GET api/values
        //public IEnumerable<master_record> Get()
        public async System.Threading.Tasks.Task <System.Dynamic.ExpandoObject> Get(string case_id = null)
        {
            try
            {
                string request_string = Program.config_couchdb_url + "/de_id/_all_docs?include_docs=true";

                if (!string.IsNullOrWhiteSpace(case_id))
                {
                    request_string = Program.config_couchdb_url + "/de_id/" + case_id;
                }

                System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string));

                request.PreAuthenticate = false;


                if (this.Request.Headers.Contains("Cookie") && this.Request.Headers.GetValues("Cookie").Count() > 0)
                {
                    string[] cookie_set = this.Request.Headers.GetValues("Cookie").First().Split(';');
                    for (int i = 0; i < cookie_set.Length; i++)
                    {
                        string[] auth_session_token = cookie_set[i].Split('=');
                        if (auth_session_token[0].Trim() == "AuthSession")
                        {
                            request.Headers.Add("Cookie", "AuthSession=" + auth_session_token[1]);
                            request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_token[1]);
                            break;
                        }
                    }
                }

                System.Net.WebResponse response = await request.GetResponseAsync();

                System.IO.Stream       dataStream = response.GetResponseStream();
                System.IO.StreamReader reader     = new System.IO.StreamReader(dataStream);
                string responseFromServer         = reader.ReadToEnd();

                var result = Newtonsoft.Json.JsonConvert.DeserializeObject <System.Dynamic.ExpandoObject> (responseFromServer);

                return(result);



                /*
                 * < HTTP/1.1 200 OK
                 * < Set-Cookie: AuthSession=YW5uYTo0QUIzOTdFQjrC4ipN-D-53hw1sJepVzcVxnriEw;
                 * < Version=1; Path=/; HttpOnly
                 * > ...
                 * <
                 * {"ok":true}*/
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            return(null);
        }
Example #7
0
        public async System.Threading.Tasks.Task <IList <mmria.server.model.c_report_object> > Get()
        {
            List <mmria.server.model.c_report_object> result = new List <mmria.server.model.c_report_object>();

            System.Console.WriteLine("Recieved message.");


            try
            {
                string request_string = this.get_couch_db_url() + "/report/_all_docs?include_docs=true";

                System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string));

                request.PreAuthenticate = false;


                if (!string.IsNullOrWhiteSpace(this.Request.Cookies["AuthSession"]))
                {
                    string auth_session_value = this.Request.Cookies["AuthSession"];
                    request.Headers.Add("Cookie", "AuthSession=" + auth_session_value);
                    request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_value);
                }


                System.Net.WebResponse response = await request.GetResponseAsync();

                System.IO.Stream       dataStream = response.GetResponseStream();
                System.IO.StreamReader reader     = new System.IO.StreamReader(dataStream);
                string all_docs_result            = reader.ReadToEnd();

                System.Dynamic.ExpandoObject expando_result = Newtonsoft.Json.JsonConvert.DeserializeObject <System.Dynamic.ExpandoObject>(all_docs_result, new  Newtonsoft.Json.Converters.ExpandoObjectConverter());

                IDictionary <string, object> all_docs_dictionary = expando_result as IDictionary <string, object>;
                List <object> row_list = all_docs_dictionary ["rows"] as List <object>;
                foreach (object row_item in row_list)
                {
                    IDictionary <string, object> row_dictionary = row_item as IDictionary <string, object>;
                    KeyValuePair <bool, mmria.server.model.c_report_object> convert_result = convert(row_dictionary["doc"]  as IDictionary <string, object>);
                    if (convert_result.Key)
                    {
                        result.Add(convert_result.Value);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }


            //return result;
            return(result);
        }
Example #8
0
        // GET api/values
        //public IEnumerable<mmria.common.model.couchdb.user_alldocs_response> Get()
        public async System.Threading.Tasks.Task <System.Dynamic.ExpandoObject> Get()
        {
            try
            {
                string request_string = this.get_couch_db_url() + "/_users/_all_docs?include_docs=true&skip=1";

                System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string));
                request.PreAuthenticate = false;
                //request.Method = "GET";

                if (this.Request.Headers.Contains("Cookie") && this.Request.Headers.GetValues("Cookie").Count() > 0)
                {
                    string[] cookie_set = this.Request.Headers.GetValues("Cookie").First().Split(';');
                    for (int i = 0; i < cookie_set.Length; i++)
                    {
                        string[] auth_session_token = cookie_set[i].Split('=');
                        if (auth_session_token[0].Trim() == "AuthSession")
                        {
                            request.Headers.Add("Cookie", "AuthSession=" + auth_session_token[1]);
                            request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_token[1]);
                            break;
                        }
                    }
                }

                System.Net.WebResponse response = await request.GetResponseAsync();

                System.IO.Stream       dataStream = response.GetResponseStream();
                System.IO.StreamReader reader     = new System.IO.StreamReader(dataStream);
                string responseFromServer         = reader.ReadToEnd();

                /*mmria.common.model.couchdb.user_alldocs_response json_result = Newtonsoft.Json.JsonConvert.DeserializeObject<mmria.common.model.couchdb.user_alldocs_response>(responseFromServer);
                 * mmria.common.model.couchdb.user_alldocs_response[] result =  new mmria.common.model.couchdb.user_alldocs_response[]
                 * {
                 *      json_result
                 * };
                 *
                 * return result;
                 */

                System.Dynamic.ExpandoObject json_result = Newtonsoft.Json.JsonConvert.DeserializeObject <System.Dynamic.ExpandoObject>(responseFromServer);

                return(json_result);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            return(null);
            //return new mmria.common.model.couchdb.user[] { default(mmria.common.model.couchdb.user), default(mmria.common.model.couchdb.user) };
        }
Example #9
0
        public async System.Threading.Tasks.Task <System.Dynamic.ExpandoObject> Get()
        {
            System.Console.WriteLine("Recieved message.");
            string result = null;

            System.Dynamic.ExpandoObject json_result = null;
            try
            {
                //"2016-06-12T13:49:24.759Z"
                string request_string = this.get_couch_db_url() + "/metadata/2016-06-12T13:49:24.759Z";

                System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string));

                request.PreAuthenticate = false;


                if (this.Request.Headers.Contains("Cookie") && this.Request.Headers.GetValues("Cookie").Count() > 0)
                {
                    string[] cookie_set = this.Request.Headers.GetValues("Cookie").First().Split(';');
                    for (int i = 0; i < cookie_set.Length; i++)
                    {
                        string[] auth_session_token = cookie_set[i].Split('=');
                        if (auth_session_token[0].Trim() == "AuthSession" && auth_session_token[1] != "null")
                        {
                            request.Headers.Add("Cookie", "AuthSession=" + auth_session_token[1]);
                            request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_token[1]);
                            break;
                        }
                    }
                }


                System.Net.WebResponse response = await request.GetResponseAsync();

                //System.Net.WebResponse response = request.GetResponse() as System.Net.WebResponse;
                System.IO.Stream       dataStream = response.GetResponseStream();
                System.IO.StreamReader reader     = new System.IO.StreamReader(dataStream);
                result = reader.ReadToEnd();

                json_result = Newtonsoft.Json.JsonConvert.DeserializeObject <System.Dynamic.ExpandoObject>(result, new  Newtonsoft.Json.Converters.ExpandoObjectConverter());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }


            //return result;
            return(json_result);
        }
Example #10
0
        // POST api/values
        public async System.Threading.Tasks.Task Post([FromBody] mmria.common.metadata.app metadata)
        {
            bool valid_login = false;

            try
            {
                string request_string         = Program.config_couchdb_url + "/_session";
                System.Net.WebRequest request = System.Net.WebRequest.Create(new System.Uri(request_string));

                request.PreAuthenticate = false;

                if (!string.IsNullOrWhiteSpace(this.Request.Cookies["AuthSession"]))
                {
                    string auth_session_value = this.Request.Cookies["AuthSession"];
                    request.Headers.Add("Cookie", "AuthSession=" + auth_session_value);
                    request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_value);
                }

                System.Net.WebResponse response = await request.GetResponseAsync();

                System.IO.Stream       dataStream   = response.GetResponseStream();
                System.IO.StreamReader reader       = new System.IO.StreamReader(dataStream);
                string           responseFromServer = reader.ReadToEnd();
                session_response json_result        = Newtonsoft.Json.JsonConvert.DeserializeObject <session_response>(responseFromServer);

                valid_login = json_result.userCTX.name != null;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            if (valid_login)
            {
                Newtonsoft.Json.JsonSerializerSettings settings = new Newtonsoft.Json.JsonSerializerSettings();
                settings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
                string object_string = Newtonsoft.Json.JsonConvert.SerializeObject(metadata, settings);
                string hash          = GetHash(object_string);
                if (current_edit_list ["metadata"].id != hash)
                {
                    Current_Edit current = new Current_Edit();
                    current.id        = hash;
                    current.metadata  = object_string;
                    current.edit_type = "json";

                    current_edit_list ["metadata"] = current;
                }
            }
        }
Example #11
0
        public async System.Threading.Tasks.Task <IEnumerable <session_response> > Get()
        {
            try
            {
                string request_string         = Program.config_couchdb_url + "/session";
                System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string));

                request.PreAuthenticate = false;

                System.Net.WebResponse response = await request.GetResponseAsync();

                System.IO.Stream       dataStream   = response.GetResponseStream();
                System.IO.StreamReader reader       = new System.IO.StreamReader(dataStream);
                string           responseFromServer = reader.ReadToEnd();
                session_response json_result        = Newtonsoft.Json.JsonConvert.DeserializeObject <session_response>(responseFromServer);

                if (response.Headers["Set-Cookie"] != null)
                {
                    this.Response.Headers.Add("Set-Cookie", response.Headers["Set-Cookie"]);
                    string[] set_cookie = response.Headers["Set-Cookie"].Split(';');
                    string[] auth_array = set_cookie[0].Split('=');
                    if (auth_array.Length > 1)
                    {
                        string auth_session_token = auth_array[1];
                        json_result.auth_session = auth_session_token;
                    }
                    else
                    {
                        json_result.auth_session = "";
                    }
                }

                session_response[] result = new session_response[]
                {
                    json_result
                };

                return(result);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            return(null);
        }
Example #12
0
        /// <summary>
        /// 取得User Name, Email
        /// </summary>
        private async Task <(CloudStorageResult result, string userName, string userEmail)> GetUserInfoAsync()
        {
            string             userName = null, userEmail = null;
            CloudStorageResult result = new CloudStorageResult();

            try
            {
                System.Net.WebRequest request = System.Net.WebRequest.Create(UerInfoEndpoint + oauthClient.AccessToken);
                request.Method      = "GET";
                request.ContentType = "application/json";
                // Get the response.
                System.Net.WebResponse response = await request.GetResponseAsync();

                // Display the status.
                //Console.WriteLine(((HttpWebResponse)response).StatusDescription);
                // Get the stream containing content returned by the server.
                Stream dataStream = response.GetResponseStream();
                // Open the stream using a StreamReader for easy access.
                StreamReader reader = new StreamReader(dataStream);
                // Read the content.
                string responseFromServer = await reader.ReadToEndAsync();

                // Display the content.
                Console.WriteLine(responseFromServer);
                // Clean up the streams and the response.
                reader.Close();
                reader.Dispose();
                dataStream.Close();
                dataStream.Dispose();
                response.Close();
                response.Dispose();
                if (!string.IsNullOrEmpty(responseFromServer))
                {
                    Newtonsoft.Json.Linq.JObject jObject = Newtonsoft.Json.Linq.JObject.Parse(responseFromServer);
                    userEmail     = jObject["email"]?.ToString();
                    userName      = jObject["name"]?.ToString();
                    result.Status = Status.Success;
                }
            }
            catch (Exception ex)
            {
                result.Message = ex.Message;
            }
            return(result, userName, userEmail);
        }
        private async Task _callPush()
        {
            try
            {
                //App Service Publish Profile Credentials
                //string userName = "******"; //userName
                //string userPassword = "******"; //userPWD

                ////change webJobName to your WebJob name
                //string webJobName = "WEBJOBNAME";

                //var unEncodedString = String.Format($"{userName}:{userPassword}");
                //var encodedString = Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(unEncodedString));

                //Change this URL to your WebApp hosting the
                string URL = "https://skagry-net-core.azurewebsites.net/api/job/push";


                System.Net.WebRequest request = System.Net.WebRequest.Create(URL);
                request.Method = "GET";
                //request.ContentLength = 0;
                //request.Headers["Authorization"] = "Basic " + encodedString;
                System.Net.WebResponse response = await request.GetResponseAsync();

                var responseFromServer = "no responce";
                using (System.IO.Stream dataStream = response.GetResponseStream()) {
                    using (System.IO.StreamReader reader = new System.IO.StreamReader(dataStream)) {
                        responseFromServer = await reader.ReadToEndAsync();
                    }
                }

                Console.WriteLine(responseFromServer);  //no response
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message.ToString());
            }
            finally {
                await Task.Delay(30000);

                Console.WriteLine("run Next trigger:" + DateTime.UtcNow);
            }
        }
Example #14
0
        internal async System.Threading.Tasks.Task <string> HttpPost(string URI, string Parameters)
        {
            System.Net.WebRequest req = System.Net.WebRequest.Create(BaseURI + URI);
            req.ContentType = "application/json";
            req.Method      = "POST";
            byte[] bytes = System.Text.Encoding.ASCII.GetBytes(Parameters);
            //req.ContentLength = bytes.Length;
            System.IO.Stream os = await req.GetRequestStreamAsync();

            os.Write(bytes, 0, bytes.Length); //Push it out there
            os.Dispose();
            System.Net.WebResponse resp = await req.GetResponseAsync();

            if (resp == null)
            {
                return(null);
            }
            System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
            return(sr.ReadToEnd().Trim());
        }
Example #15
0
        public static string GetHTMLByURL(string Url, string type = "UTF-8")
        {
            try
            {
                Url = Url.ToLower();

                System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url);
                // Get the response instance.
                System.Net.WebResponse wResp      = wReq.GetResponseAsync().Result;
                System.IO.Stream       respStream = wResp.GetResponseStream();
                using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.GetEncoding(type)))
                {
                    return(reader.ReadToEnd());
                }
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return(string.Empty);
            }
        }
Example #16
0
        // GET api/values/5
        public async System.Threading.Tasks.Task <mmria.common.model.couchdb.user> Get(string id)
        {
            mmria.common.model.couchdb.user result = null;
            try
            {
                string request_string         = this.get_couch_db_url() + "/_users/" + id;
                System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string));

                request.PreAuthenticate = false;


                if (this.Request.Headers.Contains("Cookie") && this.Request.Headers.GetValues("Cookie").Count() > 0)
                {
                    string[] cookie_set = this.Request.Headers.GetValues("Cookie").First().Split(';');
                    for (int i = 0; i < cookie_set.Length; i++)
                    {
                        string[] auth_session_token = cookie_set[i].Split('=');
                        if (auth_session_token[0].Trim() == "AuthSession")
                        {
                            request.Headers.Add("Cookie", "AuthSession=" + auth_session_token[1]);
                            request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_token[1]);
                            break;
                        }
                    }
                }

                System.Net.WebResponse response = await request.GetResponseAsync();

                System.IO.Stream       dataStream = response.GetResponseStream();
                System.IO.StreamReader reader     = new System.IO.StreamReader(dataStream);
                string responseFromServer         = reader.ReadToEnd();
                result = Newtonsoft.Json.JsonConvert.DeserializeObject <mmria.common.model.couchdb.user>(responseFromServer);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            return(result);
        }
Example #17
0
        private async Task <int> GetFileSize(string url)
        {
            try
            {
                int result = 0;

                System.Net.WebRequest req = System.Net.WebRequest.Create(url);
                req.Method = "HEAD";
                using (System.Net.WebResponse resp = await req.GetResponseAsync())
                {
                    if (long.TryParse(resp.Headers.Get("Content-Length"), out long ContentLength))
                    {
                        result = Convert.ToInt32(ContentLength);
                    }
                }

                return(result);
            }
            catch
            {
                return(0);
            }
        }
Example #18
0
        public async System.Threading.Tasks.Task <string> Get()
        {
            System.Console.WriteLine("Recieved message.");
            string result = null;

            try
            {
                //"2016-06-12T13:49:24.759Z"
                string request_string = Program.config_couchdb_url + $"/metadata/2016-06-12T13:49:24.759Z/mmria-check-code.js";

                System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string));
                request.Method          = "GET";
                request.PreAuthenticate = false;

                /*
                 * if (!string.IsNullOrWhiteSpace(this.Request.Cookies["AuthSession"]))
                 * {
                 * string auth_session_value = this.Request.Cookies["AuthSession"];
                 * request.Headers.Add("Cookie", "AuthSession=" + auth_session_value);
                 * request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_value);
                 * }
                 */

                System.Net.WebResponse response = (System.Net.HttpWebResponse) await request.GetResponseAsync();

                System.IO.Stream       dataStream = response.GetResponseStream();
                System.IO.StreamReader reader     = new System.IO.StreamReader(dataStream);
                result = await reader.ReadToEndAsync();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            return(result);
        }
Example #19
0
        public async static Task <Bitmap> loadBitmapFromUrl(string URL)
        {
            if (Memory.imageCache.ContainsKey(URL))
            {
                return(Memory.imageCache[URL]);
            }
            else
            {
                try
                {
                    System.Net.WebRequest  request  = System.Net.WebRequest.Create(URL);
                    System.Net.WebResponse response = await request.GetResponseAsync();

                    System.IO.Stream responseStream = response.GetResponseStream();
                    Bitmap           responseImg    = new Bitmap(responseStream);

                    if (!Memory.imageCache.ContainsKey(URL))
                    {
                        if (Memory.imageCache.Count > 19)
                        {
                            Memory.imageCache.Remove(Memory.imageCache.First().Key);
                        }
                        Memory.imageCache.Add(URL, responseImg);
                        return(responseImg);
                    }
                    else
                    {
                        return(Memory.imageCache[URL]);
                    }
                } catch (Exception e)
                {
                    _log.Error(e, "Could not load image from URL!");
                    return(Properties.Resources.No_Image_Icon);
                }
            }
        }
Example #20
0
        /// <summary>
        /// 请求微信接口(Async方式增加吞吐量);
        /// </summary>
        /// <param name="url"></param>
        /// <param name="param"></param>
        /// <param name="contenttype"></param>
        /// <param name="method"></param>
        /// <returns></returns>
        public async static Task <string> RequestAsync(string url, object param, string contenttype = "application/json;charset=utf-8", string method = "post")
        {
            string responseString = string.Empty;

            System.Net.WebRequest request = System.Net.WebRequest.Create(url);
            request.ContentType = contenttype;
            request.Method      = method;
            if (param != null)
            {
                using (Stream stream = await request.GetRequestStreamAsync())
                {
                    string strJson = JsonConvert.SerializeObject(param);
                    byte[] bytes   = Encoding.UTF8.GetBytes(strJson);
                    await stream.WriteAsync(bytes, 0, bytes.Length);
                }
            }

            using (var response = (await request.GetResponseAsync()).GetResponseStream())
            {
                StreamReader reader = new StreamReader(response, Encoding.UTF8);
                responseString = reader.ReadToEnd();
            }
            return(responseString);
        }
Example #21
0
        public static string GetHTMLByURL(string url)
        {
            try
            {
                System.Net.WebRequest wRequest = System.Net.WebRequest.Create(url);
                wRequest.ContentType = "text/html; charset=gb2312";

                wRequest.Method = "get";
                wRequest.UseDefaultCredentials = true;
                // Get the response instance.
                var task = wRequest.GetResponseAsync();
                System.Net.WebResponse wResp      = task.Result;
                System.IO.Stream       respStream = wResp.GetResponseStream();
                using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.GetEncoding("GB2312")))
                {
                    return(reader.ReadToEnd());
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error("GetHTMLByURL Exception", ex, new { Url = url });
                return(string.Empty);
            }
        }
Example #22
0
        // POST api/values
        public async System.Threading.Tasks.Task Post()
        {
            bool valid_login = false;

            mmria.common.metadata.app metadata = null;

            try
            {
                System.IO.Stream dataStream0 = await this.Request.Content.ReadAsStreamAsync();

                // Open the stream using a StreamReader for easy access.
                //dataStream0.Seek(0, System.IO.SeekOrigin.Begin);
                System.IO.StreamReader reader0 = new System.IO.StreamReader(dataStream0);
                // Read the content.
                string temp = reader0.ReadToEnd();

                metadata = Newtonsoft.Json.JsonConvert.DeserializeObject <mmria.common.metadata.app>(temp);

                //string metadata = DecodeUrlString(temp);
            }
            catch (Exception ex)
            {
            }


            try
            {
                string request_string         = Program.config_couchdb_url + "/_session";
                System.Net.WebRequest request = System.Net.WebRequest.Create(new System.Uri(request_string));

                request.PreAuthenticate = false;

                if (this.Request.Headers.Contains("Cookie") && this.Request.Headers.GetValues("Cookie").Count() > 0)
                {
                    string[] cookie_set = this.Request.Headers.GetValues("Cookie").First().Split(';');
                    for (int i = 0; i < cookie_set.Length; i++)
                    {
                        string[] auth_session_token = cookie_set[i].Split('=');
                        if (auth_session_token[0].Trim() == "AuthSession")
                        {
                            request.Headers.Add("Cookie", "AuthSession=" + auth_session_token[1]);
                            request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_token[1]);
                            break;
                        }
                    }
                }

                System.Net.WebResponse response = await request.GetResponseAsync();

                System.IO.Stream       dataStream   = response.GetResponseStream();
                System.IO.StreamReader reader       = new System.IO.StreamReader(dataStream);
                string           responseFromServer = reader.ReadToEnd();
                session_response json_result        = Newtonsoft.Json.JsonConvert.DeserializeObject <session_response>(responseFromServer);

                valid_login = json_result.userCTX.name != null;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            if (valid_login)
            {
                Newtonsoft.Json.JsonSerializerSettings settings = new Newtonsoft.Json.JsonSerializerSettings();
                settings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
                string object_string = Newtonsoft.Json.JsonConvert.SerializeObject(metadata, settings);
                string hash          = GetHash(object_string);
                if (current_edit_list ["metadata"].id != hash)
                {
                    Current_Edit current = new Current_Edit();
                    current.id        = hash;
                    current.metadata  = object_string;
                    current.edit_type = "json";

                    current_edit_list ["metadata"] = current;
                }
            }
        }
Example #23
0
        // GET api/values
        //public IEnumerable<master_record> Get()
        public async System.Threading.Tasks.Task <IEnumerable <export_queue_item> > Get()
        {
            List <export_queue_item> result = new List <export_queue_item>();

            try
            {
                string request_string         = Program.config_couchdb_url + "/export_queue/_all_docs?include_docs=true";
                System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string));

                request.PreAuthenticate = false;


                if (this.Request.Headers.Contains("Cookie") && this.Request.Headers.GetValues("Cookie").Count() > 0)
                {
                    string[] cookie_set = this.Request.Headers.GetValues("Cookie").First().Split(';');
                    for (int i = 0; i < cookie_set.Length; i++)
                    {
                        string[] auth_session_token = cookie_set[i].Split('=');
                        if (auth_session_token[0].Trim() == "AuthSession")
                        {
                            request.Headers.Add("Cookie", "AuthSession=" + auth_session_token[1]);
                            request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_token[1]);
                            break;
                        }
                    }
                }

                System.Net.WebResponse response = await request.GetResponseAsync();

                System.IO.Stream       dataStream = response.GetResponseStream();
                System.IO.StreamReader reader     = new System.IO.StreamReader(dataStream);
                string responseFromServer         = reader.ReadToEnd();

                IDictionary <string, object> response_result = Newtonsoft.Json.JsonConvert.DeserializeObject <System.Dynamic.ExpandoObject>(responseFromServer) as IDictionary <string, object>;
                IList <object> enumerable_rows = response_result["rows"] as IList <object>;



                foreach (IDictionary <string, object> enumerable_item in enumerable_rows)
                {
                    IDictionary <string, object> doc_item = enumerable_item["doc"] as IDictionary <string, object>;


                    export_queue_item item = new export_queue_item();
                    try
                    {
                        item._id               = doc_item ["_id"].ToString();
                        item._rev              = doc_item ["_rev"].ToString();
                        item._deleted          = doc_item.ContainsKey("_deleted") ? doc_item["_deleted"] as bool?: null;
                        item.date_created      = doc_item["date_created"] as DateTime?;
                        item.created_by        = doc_item.ContainsKey("created_by") ? doc_item["created_by"] as string: null;
                        item.date_last_updated = doc_item["date_last_updated"] as DateTime?;
                        item.last_updated_by   = doc_item.ContainsKey("last_updated_by")? doc_item["last_updated_by"] as string : null;
                        item.file_name         = doc_item["file_name"] != null? doc_item["file_name"].ToString() : null;
                        item.export_type       = doc_item["export_type"] != null? doc_item["export_type"].ToString() : null;
                        item.status            = doc_item["status"] != null? doc_item["status"].ToString() : null;


                        result.Add(item);
                    }
                    catch (Exception ex)
                    {
                        // do nothing for now
                    }
                }

                return(result);

                /*
                 * < HTTP/1.1 200 OK
                 * < Set-Cookie: AuthSession=YW5uYTo0QUIzOTdFQjrC4ipN-D-53hw1sJepVzcVxnriEw;
                 * < Version=1; Path=/; HttpOnly
                 * > ...
                 * <
                 * {"ok":true}*/
            }
            catch (Exception ex)
            {
                //Console.WriteLine (ex);
            }

            return(null);
        }
Example #24
0
        public async System.Threading.Tasks.Task <IList <mmria.server.model.c_report_object> > Get()
        {
            List <mmria.server.model.c_report_object> result = new List <mmria.server.model.c_report_object>();

            System.Console.WriteLine("Recieved message.");


            try
            {
                string request_string = this.get_couch_db_url() + "/report/_all_docs?include_docs=true";

                System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string));

                request.PreAuthenticate = false;


                if (this.Request.Headers.Contains("Cookie") && this.Request.Headers.GetValues("Cookie").Count() > 0)
                {
                    string[] cookie_set = this.Request.Headers.GetValues("Cookie").First().Split(';');
                    for (int i = 0; i < cookie_set.Length; i++)
                    {
                        string[] auth_session_token = cookie_set[i].Split('=');
                        if (auth_session_token[0].Trim() == "AuthSession")
                        {
                            request.Headers.Add("Cookie", "AuthSession=" + auth_session_token[1]);
                            request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_token[1]);
                            break;
                        }
                    }
                }


                System.Net.WebResponse response = await request.GetResponseAsync();

                System.IO.Stream       dataStream = response.GetResponseStream();
                System.IO.StreamReader reader     = new System.IO.StreamReader(dataStream);
                string all_docs_result            = reader.ReadToEnd();

                System.Dynamic.ExpandoObject expando_result = Newtonsoft.Json.JsonConvert.DeserializeObject <System.Dynamic.ExpandoObject>(all_docs_result, new  Newtonsoft.Json.Converters.ExpandoObjectConverter());

                IDictionary <string, object> all_docs_dictionary = expando_result as IDictionary <string, object>;
                List <object> row_list = all_docs_dictionary ["rows"] as List <object>;
                foreach (object row_item in row_list)
                {
                    IDictionary <string, object> row_dictionary = row_item as IDictionary <string, object>;
                    KeyValuePair <bool, mmria.server.model.c_report_object> convert_result = convert(row_dictionary["doc"]  as IDictionary <string, object>);
                    if (convert_result.Key)
                    {
                        result.Add(convert_result.Value);
                    }
                }


/*
 * {
 * "total_rows": 3, "offset": 0, "rows": [
 *  {"id": "doc1", "key": "doc1", "value": {"rev": "4324BB"}},
 *  {"id": "doc2", "key": "doc2", "value": {"rev":"2441HF"}},
 *  {"id": "doc3", "key": "doc3", "value": {"rev":"74EC24"}}
 * ]
 * }*/
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }


            //return result;
            return(result);
        }
        protected async Task <SearchViewModel> Search(SearchViewModel.SearchQuery query, string page = null)
        {
            var model          = new SearchViewModel();
            int ResultsPerPage = 10;

            model.ResultsPerPage = ResultsPerPage;

            await LoadAsync(model);

#if !DEBUG
            try
            {
#endif
            model.Title = "Search";

            bool isTranslationsSearch = string.Equals(query.Text, "translation", StringComparison.OrdinalIgnoreCase) ||
                                        string.Equals(query.Text, "translations", StringComparison.OrdinalIgnoreCase);
            string requestPath = Properties.Settings.Default.AzureSearchUri.ToString();
            if (!string.IsNullOrEmpty(query.Text))
            {
                if (!isTranslationsSearch)
                {
                    requestPath += string.Format("&{0}={1}", "search", UrlEncoder.Default.Encode(query.Text));
                }
                requestPath += string.Format("&{0}={1}", "searchMode", "all");
            }
            //if (!string.IsNullOrEmpty(query.DateRange))
            //requestPath += string.Format("+{0}:{1}", "daterange", query.DateRange);

            requestPath += string.Format("&{0}={1}", "$top", Convert.ToString(ResultsPerPage));

            requestPath += string.Format("&{0}={1}", "$select", "key,releaseType,documentsHeadline,documentsSubheadline,summary,publishDateTime,hasMediaAssets,assetUrl,translations,hasTranslations, socialMediaHeadline");

            requestPath += string.Format("&{0}={1}", "$orderby", "publishDateTime desc");

            var facets = new Dictionary <string, string> {
                { "languages", "Language" }, { "collection", "Date" }, { "ministries", "Ministry" }, { "sectors", "Sector" }, { "location", "City" }, { "releaseType", "Content" }
            };

            bool useCustomRange = query.UseCustomRange();
            foreach (var facet in facets)
            {
                if (facet.Value == "Date" && useCustomRange)
                {
                    continue;
                }
                if (query.Filters?.ContainsKey(facet.Value) != true)
                {
                    requestPath += string.Format("&{0}={1}", "facet", facet.Key);
                }
            }

            var filters = new List <string>();
            if (isTranslationsSearch)
            {
                filters.Add("hasTranslations eq true");
                filters.Add("translations ne null");
                filters.Add("translations ne ''");
            }
            if (useCustomRange)
            {
                filters.Add("publishDateTime le " + query.ToDate.ToUniversalTime().AddDays(1).ToString("s") + "Z"); // include the selected day too
                filters.Add("publishDateTime ge " + query.FromDate.ToUniversalTime().ToString("s") + "Z");
            }
            if (query.Filters != null)
            {
                foreach (var filter in query.Filters)
                {
                    string facetKey = facets.SingleOrDefault(f => f.Value == filter.Key).Key;
                    filters.Add(string.Format(facetKey.EndsWith('s') ? "{0}/any(t: t eq '{1}')" : "{0} eq '{1}'", facetKey, filter.Value.Replace("'", "''")));
                }
            }
            if (filters.Count != 0)
            {
                requestPath += string.Format("&{0}={1}", "$filter", string.Join(" and ", filters));
            }

            //This should match page meta data date format, which is now "yyyy-mm"
            //if (query.YearMonth != null)
            //    requestPath += String.Format("&{0}={1}", "partialfields", "DC%252Edate%252Eissued:" + query.YearMonth);

            requestPath += string.Format("&{0}={1}", "$count", "true");

            int skip = (int.Parse(page ?? "1") - 1) * ResultsPerPage;
            if (skip > 0)
            {
                requestPath += string.Format("&{0}={1}", "$skip", skip);
            }

            dynamic searchServiceResult = null;
            using (Profiler.StepStatic("Calling search.gov.bc.ca"))
            {
                System.Net.WebRequest request = System.Net.WebRequest.Create(requestPath);
                request.Headers.Add("api-key", Properties.Settings.Default.AzureSearchKey);

                using (System.Net.WebResponse response = await request.GetResponseAsync())
                {
                    using (System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream()))
                    {
                        string res = reader.ReadToEnd();
                        searchServiceResult = JsonConvert.DeserializeObject <dynamic>(res);
                    }
                }
            }

            model.Count = searchServiceResult["@odata.count"];

            model.FirstResult = Math.Min(Math.Max(skip + 1, 1), (model.Count / ResultsPerPage) * ResultsPerPage + 1);

            model.LastResult = Math.Min(model.FirstResult + ResultsPerPage - 1, model.Count);

            model.Query = query;

            var searchFacets = searchServiceResult["@search.facets"];
            if (searchFacets != null)
            {
                foreach (var facet in facets) // iterate in the order we asked for
                {
                    var    facetHits = new List <SearchViewModel.FacetHit>();
                    string filteredFacet;
                    var    searchFacet = searchFacets[facet.Key];
                    if (searchFacet != null)
                    {
                        foreach (var facetHit in searchFacet)
                        {
                            string facetHitValue = facetHit["value"];
                            if (string.IsNullOrEmpty(facetHitValue))
                            {
                                continue;
                            }
                            facetHits.Add(new SearchViewModel.FacetHit
                            {
                                Value = facetHitValue,
                                Count = facetHit["count"]
                            });
                        }
                    }
                    else if (query.Filters != null && query.Filters.TryGetValue(facet.Value, out filteredFacet))
                    {
                        facetHits.Add(new SearchViewModel.FacetHit
                        {
                            Value = filteredFacet,
                            Count = model.Count
                        });
                    }
                    bool isDateCollection = facet.Key == "collection";
                    model.FacetResults.Add(facet.Value, isDateCollection ? facetHits.OrderByDescending(f => f.Value) : facetHits.OrderByDescending(f => f.Count));
                }
            }

            if (searchServiceResult.value != null)
            {
                foreach (var result in searchServiceResult.value)
                {
                    string key = result["key"];

                    string postKind = result["releaseType"];
                    postKind = postKind.EndsWith("y") ? postKind.Substring(0, postKind.Length - 1) + "ies" : postKind + "s";

                    IEnumerable <object> titles    = result["documentsHeadline"];
                    IEnumerable <object> headlines = result["documentsSubheadline"];
                    string translations            = result["translations"];
                    bool   hasTranslations         = result["hasTranslations"];

                    string assetUrl = result["assetUrl"];
                    var    date     = (DateTimeOffset)DateTimeOffset.Parse(Convert.ToString(result["publishDateTime"]));

                    model.Results.Add(new SearchViewModel.Result()
                    {
                        Title               = System.Net.WebUtility.HtmlDecode(titles.FirstOrDefault().ToString()),
                        Headline            = System.Net.WebUtility.HtmlDecode(headlines?.FirstOrDefault().ToString()),
                        Uri                 = NewsroomExtensions.GetPostUri(postKind.ToLower(), key),
                        Description         = result["summary"],
                        HasMediaAssets      = result["hasMediaAssets"],
                        HasTranslations     = translations != null && hasTranslations,
                        PublishDate         = DateTime.Parse(date.FormatDateLong()),
                        ThumbnailUri        = NewsroomExtensions.GetThumbnailUri(assetUrl),
                        AssetUrl            = result["assetUrl"],
                        SocialMediaHeadline = result["socialMediaHeadline"]
                    });
                }
            }


            model.LastPage = Math.Min(Convert.ToInt32(Math.Ceiling(model.Count / (decimal)ResultsPerPage)), 100);
#if !DEBUG
        }

        catch
        {
            model.Success = false;

            //TODO: Report exception message
        }
#endif

            return(model);
        }
Example #26
0
        // GET api/values
        //public IEnumerable<master_record> Get()
        public async System.Threading.Tasks.Task <mmria.common.model.couchdb.case_view_response> Get
        (
            int skip          = 0,
            int take          = 25,
            string sort       = "by_date_created",
            string search_key = null,
            bool descending   = false
        )
        {
            /*
             *
             * http://localhost:5984/de_id/_design/sortable/_view/conflicts
             *
             * by_date_created
             * by_date_last_updated
             * by_last_name
             * by_first_name
             * by_middle_name
             * by_year_of_death
             * by_month_of_death
             * by_committe_review_date
             * by_created_by
             * by_last_updated_by
             * by_state_of_death
             *
             *
             */

            string sort_view = sort != null?sort.ToLower() : "by_date_created";

            switch (sort_view)
            {
            case "by_date_created":
            case "by_date_last_updated":
            case "by_last_name":
            case "by_first_name":
            case "by_middle_name":
            case "by_year_of_death":
            case "by_month_of_death":
            case "by_committe_review_date":
            case "by_created_by":
            case "by_last_updated_by":
            case "by_state_of_death":
                break;

            default:
                sort_view = "by_date_created";
                break;
            }



            try
            {
                System.Text.StringBuilder request_builder = new System.Text.StringBuilder();
                request_builder.Append(Program.config_couchdb_url);
                request_builder.Append($"/de_id/_design/sortable/_view/{sort_view}?");


                if (string.IsNullOrWhiteSpace(search_key))
                {
                    if (skip > -1)
                    {
                        request_builder.Append($"skip={skip}");
                    }
                    else
                    {
                        request_builder.Append("skip=0");
                    }


                    if (take > -1)
                    {
                        request_builder.Append($"&limit={take}");
                    }

                    if (descending)
                    {
                        request_builder.Append("&descending=true");
                    }
                }
                else
                {
                    request_builder.Append("skip=0");

                    if (descending)
                    {
                        request_builder.Append("&descending=true");
                    }
                }



                string request_string         = request_builder.ToString();
                System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string));

                request.PreAuthenticate = false;


                if (this.Request.Headers.Contains("Cookie") && this.Request.Headers.GetValues("Cookie").Count() > 0)
                {
                    string[] cookie_set = this.Request.Headers.GetValues("Cookie").First().Split(';');
                    for (int i = 0; i < cookie_set.Length; i++)
                    {
                        string[] auth_session_token = cookie_set[i].Split('=');
                        if (auth_session_token[0].Trim() == "AuthSession")
                        {
                            request.Headers.Add("Cookie", "AuthSession=" + auth_session_token[1]);
                            request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_token[1]);
                            break;
                        }
                    }
                }



                System.Net.WebResponse response = await request.GetResponseAsync();

                System.IO.Stream       dataStream = response.GetResponseStream();
                System.IO.StreamReader reader     = new System.IO.StreamReader(dataStream);
                string responseFromServer         = reader.ReadToEnd();

                mmria.common.model.couchdb.case_view_response case_view_response = Newtonsoft.Json.JsonConvert.DeserializeObject <mmria.common.model.couchdb.case_view_response>(responseFromServer);

                if (string.IsNullOrWhiteSpace(search_key))
                {
                    return(case_view_response);
                }
                else
                {
                    string key_compare = search_key.ToLower().Trim(new char [] { '"' });

                    mmria.common.model.couchdb.case_view_response result = new mmria.common.model.couchdb.case_view_response();
                    result.offset     = case_view_response.offset;
                    result.total_rows = case_view_response.total_rows;

                    foreach (mmria.common.model.couchdb.case_view_item cvi in case_view_response.rows)
                    {
                        bool add_item = false;
                        if (cvi.value.first_name != null && cvi.value.first_name.IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1)
                        {
                            add_item = true;
                        }

                        if (cvi.value.middle_name != null && cvi.value.middle_name.IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1)
                        {
                            add_item = true;
                        }

                        if (cvi.value.last_name != null && cvi.value.last_name.IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1)
                        {
                            add_item = true;
                        }

                        if (cvi.value.record_id != null && cvi.value.record_id.IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1)
                        {
                            add_item = true;
                        }

                        if (cvi.value.agency_case_id != null && cvi.value.agency_case_id.IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1)
                        {
                            add_item = true;
                        }

                        if (cvi.value.created_by != null && cvi.value.created_by.IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1)
                        {
                            add_item = true;
                        }

                        if (cvi.value.last_updated_by != null && cvi.value.last_updated_by.IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1)
                        {
                            add_item = true;
                        }

                        if (cvi.value.date_of_death_month != null && cvi.value.date_of_death_month.HasValue && cvi.value.date_of_death_month.Value.ToString().IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1)
                        {
                            add_item = true;
                        }
                        if (cvi.value.date_of_death_year != null && cvi.value.date_of_death_year.HasValue && cvi.value.date_of_death_year.Value.ToString().IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1)
                        {
                            add_item = true;
                        }

                        if (cvi.value.date_of_committee_review != null && cvi.value.date_of_committee_review.HasValue && cvi.value.date_of_committee_review.Value.ToString().IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1)
                        {
                            add_item = true;
                        }

                        if (add_item)
                        {
                            result.rows.Add(cvi);
                        }
                    }

                    result.total_rows = result.rows.Count;
                    result.rows       = result.rows.Skip(skip).Take(take).ToList();

                    return(result);
                }


                /*
                 * < HTTP/1.1 200 OK
                 * < Set-Cookie: AuthSession=YW5uYTo0QUIzOTdFQjrC4ipN-D-53hw1sJepVzcVxnriEw;
                 * < Version=1; Path=/; HttpOnly
                 * > ...
                 * <
                 * {"ok":true}*/
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            return(null);
        }
Example #27
0
        private async void OnBtnSndClicked(object sender, System.EventArgs e)
        {
            var lst = listView.ItemsSource as List <Receipt>;

            if (lst.Count == 0)
            {
                lblInfo.Text = "Нет чеков для отправки";
                return;
            }

            string login = _loginField.Text;

            if (String.IsNullOrWhiteSpace(login))
            {
                lblInfo.Text = "Введите логин";
                return;
            }

            string passwd = _pwdField.Text;

            if (String.IsNullOrWhiteSpace(passwd))
            {
                lblInfo.Text = "Введите пароль";
                return;
            }

            lblInfo.Text = "Ожидание ответа сервера";
            System.Net.WebRequest request = System.Net.WebRequest.Create(string.Format("{0}?login={1}&passwd={2}", "http://orv.org.ru/pricer/api/receipt/send.php", login, passwd));
            request.Method = "POST";
            string sName = "";

            foreach (Receipt r in lst)
            {
                sName += r.Detail + ';';
            }
            byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(sName);
            request.ContentType   = "application/x-www-form-urlencoded";
            request.ContentLength = byteArray.Length;

            try
            {
                using (Stream dataStream = request.GetRequestStream())
                {
                    dataStream.Write(byteArray, 0, byteArray.Length);
                }
            }
            catch (Exception ex)
            {
                lblInfo.Text = "Ошибка отправки " + ex.Message;
            }

            try
            {
                System.Net.WebResponse response = await request.GetResponseAsync();

                using (Stream stream = response.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        lblInfo.Text = reader.ReadToEnd();
                    }
                }
                response.Close();
            }
            catch (Exception ex)
            {
                lblInfo.Text = "Ошибка получения ответа " + ex.Message;
            }
        }
        public async Task <T> Download <T>(string inUrl, int retryTimesOnException = 1, int timeout_Header_InSconds = 3, int timeout_Content_InSconds = 10, Action <Exception> exHandler = null, System.Threading.CancellationToken?cToken = null, bool cacheEnabled = false, Action <List <string> > logHandler = null)
        {
            object r = null;
            int    retryTime_Counter;

            retryTime_Counter = 1;
            List <string> logs = null;

            if (logHandler != null)
            {
                logs = new List <string>();
            }
            while (retryTime_Counter <= retryTimesOnException)
            {
                try
                {
                    if (cToken != null && cToken.Value.IsCancellationRequested)
                    {
                        break;
                    }
                    if (logs != null)
                    {
                        logs.Add($"Try - Start: {retryTime_Counter}");
                    }
                    Download_Done   = 0;
                    Download_Length = null;
                    try
                    {
                        System.Net.HttpWebRequest req_Header = System.Net.WebRequest.Create(inUrl) as System.Net.HttpWebRequest;
                        req_Header.Method = "HEAD";
                        var req_Header_GetResponseAsync_Task = req_Header.GetResponseAsync();
                        if (await Task.WhenAny(req_Header_GetResponseAsync_Task, Task.Delay(TimeSpan.FromSeconds(timeout_Header_InSconds))) == req_Header_GetResponseAsync_Task)
                        {
                            using (System.Net.WebResponse resp_Header = req_Header_GetResponseAsync_Task.Result)
                            {
                                int resp_Header_ContentLength;
                                if (resp_Header.Headers.AllKeys.Count(a1 => a1 == "Content-Length") > 0)
                                {
                                    if (int.TryParse(resp_Header.Headers["Content-Length"], out resp_Header_ContentLength))
                                    {
                                        Download_Length = resp_Header_ContentLength;
                                        if (logs != null)
                                        {
                                            logs.Add($"Download_Length - Try 1: {Download_Length}");
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            throw new TimeoutException($"Time out (HEADER) on URL: {inUrl}");
                        }
                    }
                    catch (Exception ex1)
                    {
                        if (logs != null)
                        {
                            logs.Add($"DownloadLength - Try 1 Ex: {ex1.ToString()}");
                        }
                    }
                    //
                    if (cToken != null && cToken.Value.IsCancellationRequested)
                    {
                        break;
                    }
                    //
                    System.Net.HttpWebRequest hWReq = System.Net.WebRequest.Create(inUrl) as System.Net.HttpWebRequest;
                    hWReq.Method = "GET";
                    hWReq.Accept = null;
                    //if (!cacheEnabled)
                    //{
                    //    hWReq.Headers["Cache-Control"] = "no-cache";
                    //    hWReq.Headers["Pragma"] = "no-cache";
                    //}
                    //
                    System.Net.WebResponse hWResp      = null;
                    System.Net.WebRequest  hwReq_Typed = hWReq as System.Net.WebRequest;
                    var hWResp_GetResponseAsync_Task   = hwReq_Typed.GetResponseAsync();
                    if (await Task.WhenAny(hWResp_GetResponseAsync_Task, Task.Delay(TimeSpan.FromSeconds(timeout_Content_InSconds))) == hWResp_GetResponseAsync_Task)
                    {
                        if (cToken != null && cToken.Value.IsCancellationRequested)
                        {
                            break;
                        }
                        //
                        hWResp = hWResp_GetResponseAsync_Task.Result;
                        // Check for content length in GET header (if no success using HEAD method)
                        if (Download_Length == null)
                        {
                            int resp_Header_ContentLength;
                            if (hWResp.Headers.AllKeys.Count(a1 => a1 == "Content-Length") > 0)
                            {
                                if (int.TryParse(hWResp.Headers["Content-Length"], out resp_Header_ContentLength))
                                {
                                    Download_Length = resp_Header_ContentLength;
                                    if (logs != null)
                                    {
                                        logs.Add($"Download_Length - Try 2: {Download_Length}");
                                    }
                                }
                            }
                        }
                        // Read the response into a Stream object.
                        byte[] data_Native;
                        using (System.IO.MemoryStream ms1 = new System.IO.MemoryStream())
                        {
                            using (System.IO.Stream responseStream = hWResp.GetResponseStream())
                            {
                                int    bufferSize = 8192;
                                byte[] buffer     = new byte[bufferSize];
                                int    bufferUsed;
                                do
                                {
                                    if (cToken != null && cToken.Value.IsCancellationRequested)
                                    {
                                        break;
                                    }
                                    //
                                    Task <int> responseStream_ReadAsync_Task;
                                    if (cToken != null)
                                    {
                                        responseStream_ReadAsync_Task = responseStream.ReadAsync(buffer, 0, bufferSize, cToken.Value);
                                    }
                                    else
                                    {
                                        responseStream_ReadAsync_Task = responseStream.ReadAsync(buffer, 0, bufferSize);
                                    }
                                    //
                                    if (await Task.WhenAny(responseStream_ReadAsync_Task, Task.Delay(TimeSpan.FromSeconds(timeout_Content_InSconds))) == responseStream_ReadAsync_Task)
                                    {
                                        bufferUsed = responseStream_ReadAsync_Task.Result;
                                        if (bufferUsed > 0)
                                        {
                                            ms1.Write(buffer, 0, bufferUsed);
                                            Download_Done += bufferUsed;
                                            if (Download_ProgressChanged != null)
                                            {
                                                Download_ProgressChanged(this, EventArgs.Empty);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        throw new TimeoutException($"Time out (GET - Read) on URL: {inUrl}");
                                    }
                                } while (bufferUsed > 0);
                            }
                            //
                            if (cToken != null && cToken.Value.IsCancellationRequested)
                            {
                                break;
                            }
                            //
                            data_Native  = ms1.ToArray();
                            ms1.Position = 0;
                            //
                            if (typeof(T) == typeof(string))
                            {
                                string data;
                                using (var reader = new System.IO.StreamReader(ms1))
                                {
                                    data = reader.ReadToEnd();
                                }
                                r = data;
                            }
                            else if (typeof(T) == typeof(byte[]))
                            {
                                r = data_Native;
                            }
                            else if (typeof(T) == typeof(System.IO.MemoryStream))
                            {
                                System.IO.MemoryStream ms2 = new System.IO.MemoryStream(data_Native);
                                r = ms2;
                            }
                        }
                    }
                    else
                    {
                        throw new TimeoutException($"Time out (GET) on URL: {inUrl}");
                    }
                }
                catch (Exception ex)
                {
                    if (logs != null)
                    {
                        logs.Add($"Try {retryTime_Counter} Ex: {ex.ToString()}");
                    }
                    //
                    r = null;
                    if (exHandler != null)
                    {
                        exHandler(ex);
                    }
                    //
                    var we = ex.InnerException as System.Net.WebException;
                    if (we != null)
                    {
                        //var resp = we.Response as System.Net.HttpWebResponse;
                        //if (resp != null)
                        //{
                        //    var code = resp.StatusCode;
                        //}
                        Debug.WriteLine("RespCallback Exception raised! Message:{0}" + we.Message);
                        Debug.WriteLine("Status:{0}", we.Status);
                    }
                    else
                    {
                        Debug.WriteLine("Unknown Exception: {0}", ex.ToString());
                    }
                }
                //
                if (cToken != null && cToken.Value.IsCancellationRequested)
                {
                    break;
                }
                //
                if (r != null)
                {
                    break;
                }
                retryTime_Counter++;
            }
            //
            if (cToken != null)
            {
                cToken.Value.ThrowIfCancellationRequested();
            }
            //
            if (logHandler != null)
            {
                logHandler(logs);
            }
            //
            return((T)r);
        }
        protected async Task <SearchViewModel> Search(SearchViewModel.SearchQuery query, int first)
        {
            var model          = new SearchViewModel();
            int ResultsPerPage = 10;

            model.ResultsPerPage = ResultsPerPage;

            await LoadAsync(model);

#if !DEBUG
            try
            {
#endif
            model.Title = "Search";

            //Google Search Protocol Reference - Request Format
            //http://www.google.com/support/enterprise/static/gsa/docs/admin/72/gsa_doc_set/xml_reference/request_format.html

            string requestPath = Properties.Settings.Default.GoogleSearchApplianceUri.ToString();
            string searchText  = "";

            if (!string.IsNullOrEmpty(query.Text))
            {
                searchText = query.Text;
            }
            else if (!string.IsNullOrEmpty(query.DateRange))
            {
                searchText = "bc";  //Assume all stories have "bc" word in them. This is because daterange search by google appliance does not support daterange search without text query
            }
            requestPath += String.Format("&{0}={1}", "q", UrlEncoder.Default.Encode(searchText));
            if (!string.IsNullOrEmpty(query.DateRange))
            {
                requestPath += String.Format("+{0}:{1}", "daterange", query.DateRange);
            }

            requestPath += String.Format("&{0}={1}", "output", "xml_no_dtd");
            requestPath += String.Format("&{0}={1}", "num", Convert.ToString(ResultsPerPage));

            requestPath += String.Format("&{0}={1}", "requiredfields", "MBCTERMS%252EcontentType:News");
            if (!string.IsNullOrEmpty(query.Sector))
            {
                requestPath += String.Format(".{0}:{1}", "NEWSTERMS%252EsectorKeys", query.Sector);
            }

            if (!string.IsNullOrEmpty(query.Ministry))
            {
                requestPath += String.Format(".{0}:{1}", "NEWSTERMS%252EministryKeys", query.Ministry);
            }

            if (!string.IsNullOrEmpty(query.NewsType))
            {
                requestPath += String.Format(".{0}:{1}", "NEWSTERMS%252EcontentPath", query.NewsType);
            }

            //This should match page meta data date format, which is now "yyyy-mm"
            //if (query.YearMonth != null)
            //    requestPath += String.Format("&{0}={1}", "partialfields", "DC%252Edate%252Eissued:" + query.YearMonth);

            requestPath += String.Format("&{0}={1}", "filter", "p");
            requestPath += String.Format("&{0}={1}", "rc", 1);
            //requestPath += String.Format("&{0}={1}", "sitesearch", "news.gov.bc.ca");

            requestPath += String.Format("&{0}={1}", "sort", "date:D:R:d1");

            if (first > 1)
            {
                requestPath += String.Format("&{0}={1}", "start", first - 1);
            }

            System.Xml.Linq.XDocument xml;

            using (Profiler.StepStatic("Calling search.gov.bc.ca"))
            {
                System.Net.WebRequest request = System.Net.WebRequest.Create(requestPath);
                request.Proxy = null;

                using (System.Net.WebResponse response = await request.GetResponseAsync())
                {
                    using (System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream()))
                        xml = System.Xml.Linq.XDocument.Load(reader, System.Xml.Linq.LoadOptions.None);
                }
            }

            model.Count = xml.Element("GSP").Element("RES") == null ? 0 : Convert.ToInt32(xml.Element("GSP").Element("RES").Element("M").Value);

            model.FirstResult = Math.Min(Math.Max(first, 1), (model.Count / ResultsPerPage) * ResultsPerPage + 1);

            model.LastResult = Math.Min(model.FirstResult + ResultsPerPage - 1, model.Count);

            model.Query = query;

            if (!string.IsNullOrEmpty(query.Ministry))
            {
                model.Ministry = (await Repository.GetMinistryAsync(query.Ministry)).Index as Ministry;
            }

            if (!string.IsNullOrEmpty(query.Sector))
            {
                model.Sector = (await Repository.GetSectorAsync(query.Sector)).Index as Sector;
            }

            if (!string.IsNullOrEmpty(query.DateRange))
            {
                var dates = query.DateRange.Replace("..", "+").Split('+');

                if (dates.Count() == 2)
                {
                    model.DateRangeText = string.Format("{0:MMMM d, yyyy} to {1:MMMM d, yyyy}", DateTime.Parse(dates[0]), DateTime.Parse(dates[1]));
                }
            }
            else
            {
                model.DateRangeText = string.Format("{0} to {1}", "March 12, 2011", "Present");
            }


            var results = xml.Element("GSP").Element("RES");

            if (results != null)
            {
                var result = results.Element("R");

                while (result != null)
                {
                    if (result.Name == "R")
                    {
                        string url = result.Element("U").Value;

                        string title       = result.Element("T") == null ? "[no title]" : result.Element("T").Value.Replace(" | BC Newsroom", "").Replace(" | BC Gov News", "").Replace(" | BC <b>...</b>", "");
                        string description = result.Element("S").Value.Replace("�", "").Replace("<br>", "<br />").Replace("<br />", " ");

                        string size = result.Element("HAS").Element("C") == null ? "" : result.Element("HAS").Element("C").Attribute("SZ").Value;

                        string localUrl = url.Replace("http://", "").Replace("https://", "");

                        Post post = null;

                        //TODO: Use result["CRAWLDATE"] to set Date

                        try
                        {
                            if (url.StartsWith("https://news.gov.bc.ca/"))
                            {
                                string[] urlFragments = url.Split("/");
                                string   postKind     = urlFragments[urlFragments.Length - 2];
                                if (postKind == "stories" || postKind == "releases" || postKind == "factsheets" || postKind == "updates")
                                {
                                    post = await Repository.GetPostAsync(urlFragments[urlFragments.Length - 1]);
                                }
                            }
                        }
                        // handle cases where the search has a result not in our database.
                        catch (Exception)
                        {
                        }

                        var searchResult = new Models.SearchViewModel.Result();

                        searchResult.Title          = System.Net.WebUtility.HtmlDecode(title.Replace("<b>", "").Replace("</b>", ""));
                        searchResult.Uri            = new Uri(url.Replace("https://news.gov.bc.ca/", Properties.Settings.Default.NewsHostUri.ToString()));
                        searchResult.UriLabel       = localUrl;
                        searchResult.Description    = "";
                        searchResult.HasMediaAssets = false;

                        if (post != null)
                        {
                            searchResult.Title = post.Headline();

                            if (!string.IsNullOrEmpty(post.Summary))
                            {
                                searchResult.Description = post.Summary;
                            }

                            searchResult.HasMediaAssets = post.HasMediaAssets == true;
                            searchResult.PublishDate    = post.PublishDate.HasValue ? post.PublishDate.Value : DateTimeOffset.MinValue;

                            searchResult.ThumbnailUri = post.GetThumbnailUri();
                        }
                        else
                        {
                            if (searchResult.Title.EndsWith(" | BC Gov News"))
                            {
                                searchResult.Title = searchResult.Title.Substring(0, searchResult.Title.Length - " | BC Gov News".Length);
                            }

                            if (searchResult.Title.EndsWith(" | BC ..."))
                            {
                                searchResult.Title = searchResult.Title.Substring(0, searchResult.Title.Length - " | BC ...".Length);
                            }
                        }

                        model.Results.Add(searchResult);
                    }

                    result = result.ElementsAfterSelf().FirstOrDefault();
                }
            }


            model.LastPage = Math.Min(Convert.ToInt32(Math.Ceiling((decimal)model.Count / (decimal)ResultsPerPage)), 100);
#if !DEBUG
        }

        catch
        {
            model.Success = false;

            //TODO: Report exception message
        }
#endif

            return(model);
        }
Example #30
0
        public async System.Threading.Tasks.Task <mmria.common.model.couchdb.document_put_response> Post()
        {
            //bool valid_login = false;
            mmria.common.metadata.app metadata = null;
            string object_string = null;

            mmria.common.model.couchdb.document_put_response result = new mmria.common.model.couchdb.document_put_response();

            try
            {
                System.IO.Stream dataStream0 = await this.Request.Content.ReadAsStreamAsync();

                // Open the stream using a StreamReader for easy access.
                //dataStream0.Seek(0, System.IO.SeekOrigin.Begin);
                System.IO.StreamReader reader0 = new System.IO.StreamReader(dataStream0);
                // Read the content.
                string temp = reader0.ReadToEnd();

                metadata = Newtonsoft.Json.JsonConvert.DeserializeObject <mmria.common.metadata.app>(temp);
                //System.Dynamic.ExpandoObject json_result = Newtonsoft.Json.JsonConvert.DeserializeObject<System.Dynamic.ExpandoObject>(result, new  Newtonsoft.Json.Converters.ExpandoObjectConverter());



                //string metadata = DecodeUrlString(temp);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
            try
            {
                Newtonsoft.Json.JsonSerializerSettings settings = new Newtonsoft.Json.JsonSerializerSettings();
                settings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
                object_string = Newtonsoft.Json.JsonConvert.SerializeObject(metadata, settings);

                string metadata_url = this.get_couch_db_url() + "/metadata/" + metadata._id;

                System.Net.WebRequest request = System.Net.WebRequest.Create(new System.Uri(metadata_url));
                request.Method          = "PUT";
                request.ContentType     = "application/json";
                request.ContentLength   = object_string.Length;
                request.PreAuthenticate = false;

                if (this.Request.Headers.Contains("Cookie") && this.Request.Headers.GetValues("Cookie").Count() > 0)
                {
                    string[] cookie_set = this.Request.Headers.GetValues("Cookie").First().Split(';');
                    for (int i = 0; i < cookie_set.Length; i++)
                    {
                        string[] auth_session_token = cookie_set[i].Split('=');
                        if (auth_session_token[0].Trim() == "AuthSession")
                        {
                            request.Headers.Add("Cookie", "AuthSession=" + auth_session_token[1]);
                            request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_token[1]);
                            break;
                        }
                    }
                }

                using (System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(request.GetRequestStream()))
                {
                    try
                    {
                        streamWriter.Write(object_string);
                        streamWriter.Flush();
                        streamWriter.Close();


                        System.Net.WebResponse response = await request.GetResponseAsync();

                        System.IO.Stream       dataStream = response.GetResponseStream();
                        System.IO.StreamReader reader     = new System.IO.StreamReader(dataStream);
                        string responseFromServer         = reader.ReadToEnd();

                        result = Newtonsoft.Json.JsonConvert.DeserializeObject <mmria.common.model.couchdb.document_put_response>(responseFromServer);

                        if (response.Headers["Set-Cookie"] != null)
                        {
                            string[] set_cookie = response.Headers["Set-Cookie"].Split(';');
                            string[] auth_array = set_cookie[0].Split('=');
                            if (auth_array.Length > 1)
                            {
                                string auth_session_token = auth_array[1];
                                result.auth_session = auth_session_token;
                            }
                            else
                            {
                                result.auth_session = "";
                            }
                        }



                        //System.Threading.Tasks.Task.Run( new Action(()=> { var f = new GenerateSwaggerFile(); System.IO.File.WriteAllText(Program.config_file_root_folder + "/api-docs/api.json", f.generate(metadata)); }));
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex);
                    }
                }

                if (!result.ok)
                {
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            return(result);
        }