private InternetRequestSettings CreateSettings()
        {
            string url = string.Format("{0}&pageIndex={1}&blockSize={2}", _config.Url, _config.PageIndex, _config.BlockSize);
            InternetRequestSettings settings = new InternetRequestSettings
            {
                RequestedUri = new Uri(url),
                UserAgent    = "NativeHost"
            };

            settings.Headers["WAS-APPID"]        = _config.AppId;
            settings.Headers["WAS-STOREID"]      = _config.StoreId;
            settings.Headers["WAS-DEVICETYPE"]   = _config.DeviceType;
            settings.Headers["WAS-ISBACKGROUND"] = _config.IsBackgroundTask.ToString();
            return(settings);
        }
예제 #2
0
        private async Task <TouchDevelopSchema> GetRemoteProject()
        {
            InternetRequestSettings settings = new InternetRequestSettings()
            {
                RequestedUri = new Uri(string.Format("https://www.touchdevelop.com/api/{0}", _config.ScriptId))
            };

            var result = await InternetRequest.DownloadAsync(settings);

            if (result.Success)
            {
                return(_parser.Parse(result.Result).FirstOrDefault());
            }
            return(null);
        }
예제 #3
0
        public override async Task <IEnumerable <FlickrSchema> > LoadDataAsync()
        {
            InternetRequestSettings settings = new InternetRequestSettings()
            {
                RequestedUri = new Uri(string.Format("http://api.flickr.com/services/feeds/photos_public.gne?{0}={1}", _config.QueryType, WebUtility.UrlEncode(_config.Query)))
            };

            var result = await InternetRequest.DownloadAsync(settings);

            if (result.Success)
            {
                return(_parser.Parse(result.Result));
            }

            throw new RequestFailedException();
        }
예제 #4
0
        public override async Task <IEnumerable <BingSchema> > LoadDataAsync()
        {
            InternetRequestSettings settings = new InternetRequestSettings()
            {
                RequestedUri = new Uri(string.Format("http://www.bing.com/search?q={0}&loc:{1}&format=rss", WebUtility.UrlEncode(_config.Query), _config.QueryType))
            };

            var result = await InternetRequest.DownloadAsync(settings);

            if (result.Success)
            {
                return(_parser.Parse(result.Result));
            }

            throw new RequestFailedException();
        }
예제 #5
0
        public override async Task <IEnumerable <RssSchema> > LoadDataAsync()
        {
            InternetRequestSettings settings = new InternetRequestSettings()
            {
                RequestedUri = new Uri(_config.Url)
            };

            var result = await InternetRequest.DownloadAsync(settings);

            if (result.Success)
            {
                return(_parser.Parse(result.Result));
            }

            throw new RequestFailedException();
        }
예제 #6
0
        public override async Task <IEnumerable <InstagramSchema> > LoadDataAsync()
        {
            InternetRequestSettings settings = new InternetRequestSettings()
            {
                RequestedUri = this.GetApiUrl()
            };

            var requestResult = await InternetRequest.DownloadAsync(settings);

            if (requestResult.Success)
            {
                return(_parser.Parse(requestResult.Result));
            }

            if (requestResult.StatusCode == HttpStatusCode.BadRequest)
            {
                throw new OAuthKeysRevokedException();
            }

            throw new RequestFailedException();
        }
예제 #7
0
        private async Task <IEnumerable <YouTubeSchema> > SearchAsync()
        {
            InternetRequestSettings settings = new InternetRequestSettings
            {
                RequestedUri = GetSearchUrl()
            };

            var requestResult = await InternetRequest.DownloadAsync(settings);

            if (requestResult.Success)
            {
                return(_parser.Parse(requestResult.Result));
            }

            if (requestResult.StatusCode == HttpStatusCode.Forbidden)
            {
                throw new OAuthKeysRevokedException();
            }

            throw new RequestFailedException();
        }
예제 #8
0
        private async Task <string> GetUploadVideosListId()
        {
            InternetRequestSettings settings = new InternetRequestSettings
            {
                RequestedUri = GetChannelUrl()
            };

            var requestResult = await InternetRequest.DownloadAsync(settings);

            if (requestResult.Success)
            {
                var channel = JsonConvert.DeserializeObject <YouTubeResult <YouTubeChannelLookupResult> >(requestResult.Result);
                if (channel != null &&
                    channel.items != null &&
                    channel.items.Count > 0 &&
                    channel.items[0].contentDetails != null &&
                    channel.items[0].contentDetails.relatedPlaylists != null &&
                    !string.IsNullOrEmpty(channel.items[0].contentDetails.relatedPlaylists.uploads))
                {
                    return(channel.items[0].contentDetails.relatedPlaylists.uploads);
                }
            }
            return(string.Empty);
        }