public async Task <ActionResult> InstagramAuthAsync(string query)
        {
            var consumerKey    = System.Web.HttpContext.Current.Application["InstagramClientKey"].ToString();
            var consumerSecret = System.Web.HttpContext.Current.Application["InstagramClientSecret"].ToString();
            var redirecturl    = this.Request.Url.AbsoluteUri.Replace("InstagramAuth", "InstagramSearch");

            redirecturl = redirecturl.Replace(query, "?query=" + query);
            InstagramAdapter.InstagramConfig = new InstagramConfig(
                consumerKey,
                consumerSecret,
                redirecturl,
                string.Empty);

            return(this.Redirect(InstagramAdapter.GetLoginLink()));
        }
        public async Task <ActionResult> InstagramSearchAsync(string query, string code)
        {
            var model = new InstagramSearch()
            {
                Query = query, ResultsXml = string.Empty
            };

            if (string.IsNullOrEmpty(query))
            {
                return(this.View(model));
            }

            query = query.Replace(" ", string.Empty);

            var oauthResponse = InstagramAdapter.GetOAuthResponse(code);

            if (oauthResponse == null || oauthResponse.User == null || oauthResponse.AccessToken == null)
            {
                return(this.View(model));
            }

            if (query.StartsWith("lat:", StringComparison.InvariantCulture))
            {
                if (!query.Contains(',') || !query.ToLower().Contains("lat:") || !query.ToLower().Contains("lon:"))
                {
                    return(this.View(model));
                }

                var coordinates = query.Split(',');
                var lat         = Convert.ToDouble(coordinates[0].Replace("lat:", string.Empty), CultureInfo.InvariantCulture);
                var lon         = Convert.ToDouble(coordinates[1].Replace("lon:", string.Empty), CultureInfo.InvariantCulture);
                model.ResultsXml = await InstagramAdapter.SearchAsync(lat, lon, oauthResponse);
            }
            else
            {
                model.ResultsXml = await InstagramAdapter.TagsAsync(query, oauthResponse);
            }

            return(this.View(model));
        }