示例#1
0
        public async Task <IEnumerable <Notification> > GetNotificationsAsync(CharacterSpecificApiKey apiKey)
        {
            var result = await WebServiceConsumer.Consume <DefaultRestClient, XmlDeserializer, NotificationCollection>(
                $"{this.Server.XMLApi}char/Notifications.xml.aspx?keyId={apiKey.KeyId}&vCode={apiKey.VerificationCode}&characterID={apiKey.CharacterId}");

            return(result.Items.Where(x => !x.IsRead));
        }
示例#2
0
        public override async Task <SearchResult> Search(string term)
        {
            Config.Parameters["q"] = term.Replace(" ", "+");

            try
            {
                var result = await WebServiceConsumer.ConsumeAsync <GoogleSearchResult>(Url);

                var mappedResult = Map(result, term);

                return(mappedResult);
            }
            catch (Exception ex)
            {
                //TODO: Log ex to a target
                return(new SearchResult
                {
                    SearchEngine = EngineName,
                    SearchTerm = term,
                    ResultsCount = 0,
                    Status = SearchResultStatus.Error,
                    ErrorMessage = "There was an issue"
                });
            }
        }
示例#3
0
        public async Task <IEnumerable <MailMessageItem> > GetMailMessagesAsync(CharacterSpecificApiKey apiKey)
        {
            var result = await WebServiceConsumer.Consume <DefaultRestClient, XmlDeserializer, MailMessageCollection>(
                $"{this.Server.XMLApi}char/MailMessages.xml.aspx?keyId={apiKey.KeyId}&vCode={apiKey.VerificationCode}&characterID={apiKey.CharacterId}");

            return(result.Items.Where(x => x.SenderId != apiKey.CharacterId));
        }
示例#4
0
        /// <summary>
        /// </summary>

        public void DeSerializeXMLMappings()
        {
            try
            {
                this.initExplorer();
                treeView1.Nodes[0].Nodes.Clear();
                AddWebServiceClient.listWebServiceClient.Clear();
                AddWebServiceClient.listWebServiceName.Clear();
                XmlDocument xmldoc   = new XmlDocument();
                string      path     = EIBXMLUtilities.folderName + @"\\webserviceconsumer";
                string      fileName = path + "\\webserviceconsumer.xml";
                xmldoc.Load(fileName);
                foreach (XmlNode xmlNode in xmldoc.FirstChild.ChildNodes)
                {
                    WebServiceConsumer webservCons = new WebServiceConsumer();
                    webservCons.Deserialize(xmlNode);
                    AddWebServiceClient.listWebServiceClient.Add(webservCons.name, webservCons);
                    AddWebServiceClient.listWebServiceName.Add(webservCons.name, webservCons.name);
                    TreeNode webTreeNode = new TreeNode(webservCons.name);
                    webTreeNode.ContextMenuStrip = deleteContextMenuStrip;
                    treeView1.Nodes[0].Nodes.Add(webTreeNode);
                }
            }
            catch
            {
            }
        }
示例#5
0
        public async Task <CharacterLocationInfo> GetCharacterLocationAsync(long characterId)
        {
            var token = await this.GetAccessTokenAsync(characterId, CrestAccessScopes.CharacterLocationRead);

            return(await WebServiceConsumer.Consume <DefaultRestClient, JsonDeserializer, CharacterLocationInfo>(
                       $"{this.Server.Crest}characters/{characterId}/location/", token.AccessToken)); // TODO
        }
示例#6
0
        public async Task <ReadOnlyDictionary <long, AssetItem> > GetAssetsAsync(CharacterSpecificApiKey apiKey)
        {
            var result = await WebServiceConsumer.Consume <DefaultRestClient, XmlDeserializer, EveXmlSpecializedCollectionCacheAgent <AssetItem>, AssetItemCollection>(
                $"{this.Server.XMLApi}char/AssetList.xml.aspx?keyId={apiKey.KeyId}&vCode={apiKey.VerificationCode}&characterID={apiKey.CharacterId}");

            return(result.Items.ToDictionary(x => x.ItemId).AsReadOnly());
        }
示例#7
0
        public async Task <IEnumerable <Character> > GetCharactersAsync(ApiKey apiKey)
        {
            var result = await WebServiceConsumer.Consume <DefaultRestClient, XmlDeserializer, EveXmlSpecializedCollectionCacheAgent <Character>, CharacterCollection>(
                $"{this.Server.XMLApi}account/Characters.xml.aspx?keyId={apiKey.KeyId}&vCode={apiKey.VerificationCode}");

            return(result.Items);
        }
示例#8
0
        public async Task <IEnumerable <PriceHistory> > GetMarketPriceHistoryAsync(long itemTypeId, long regionId)
        {
            var result = await WebServiceConsumer.Consume <DefaultRestClient, JsonDeserializer, OneDayLifetimeDiskCacheAgent, PriceHistoryCollection>(
                $"{this.Server.Crest}market/{regionId}/types/{itemTypeId}/history/"); // TODO

            if (result == null)
            {
                return(new List <PriceHistory>());
            }

            var average = result.Items.Average(x => x.AveragePrice);

            if (_itemprices.ContainsKey(itemTypeId))
            {
                _itemprices[itemTypeId].AveragePrice = average;
            }
            else
            {
                _itemprices.TryAdd(itemTypeId, new ItemPrice
                {
                    ItemId = new ItemId {
                        Id = itemTypeId
                    },
                    AveragePrice  = average,
                    AdjustedPrice = result.Items.Min(x => x.LowPrice)
                });
            }

            return(result.Items);
        }
示例#9
0
        public async Task <IEnumerable <SkillQueue> > GetSkillQueueAsync(CharacterSpecificApiKey apiKey)
        {
            var result = await WebServiceConsumer.Consume <DefaultRestClient, XmlDeserializer, EveXmlSpecializedCollectionCacheAgent <SkillQueueCollection>, SkillQueueCollection>(
                $"{this.Server.XMLApi}char/SkillQueue.xml.aspx?keyId={apiKey.KeyId}&vCode={apiKey.VerificationCode}&characterID={apiKey.CharacterId}");

            return(result.Items);
        }
示例#10
0
        public async Task <IEnumerable <MailBody> > GetMailBodyAsync(CharacterSpecificApiKey apiKey, long messageId)
        {
            var result = await WebServiceConsumer.Consume <DefaultRestClient, XmlDeserializer, EveXmlSpecializedCollectionCacheAgent <MailBodyCollection>, MailBodyCollection>(
                $"{this.Server.XMLApi}char/MailBodies.xml.aspx?keyId={apiKey.KeyId}&vCode={apiKey.VerificationCode}&characterID={apiKey.CharacterId}&IDs={messageId}");

            return(result.Items);
        }
        public void TestConsume()
        {
            var consumer = new WebServiceConsumer(ServiceUrl, ApiKey);
            var response = consumer.RequestScore(_scoreRequest);

            response.Wait();
            Assert.NotNull(response.Result.Item2);
        }
示例#12
0
        public async static Task <long> GetOnlinePlayersAsync()
        {
            try
            {
                var server = Factory.Create <IEveApi>().Server;
                var result = await WebServiceConsumer.Consume <DefaultRestClient, XmlDeserializer, ServerStatus>($"{server.XMLApi}server/ServerStatus.xml.aspx");

                return(result.OnlinePlayers);
            }
            catch
            {
                return(0);
            }
        }
示例#13
0
        public async static Task <EveServerStatus> GetServerStatusAsync()
        {
            try
            {
                EveServers   server = Factory.Create <IEveApi>().Server;
                ServerStatus result = await WebServiceConsumer.Consume <DefaultRestClient, XmlDeserializer, ServerStatus>($"{server.XMLApi}server/ServerStatus.xml.aspx");

                return(result.ServerOpen ? EveServerStatus.Online : EveServerStatus.Offline);
            }
            catch
            {
                return(EveServerStatus.Unknown);
            }
        }
示例#14
0
        /// <summary>
        /// Tries to authenticate the application using OAuth2 to CREST. The application requires a callback.
        /// Check http://eveonline-third-party-documentation.readthedocs.io/en/latest/sso/nonbrowserapps.html for more information
        /// </summary>
        /// <param name="crest">The information required for the authentification</param>
        /// <exception cref="ArgumentNullException"><paramref name="crest"/> is null</exception>
        /// <exception cref="ArgumentException">No access scope defined</exception>
        public async Task AuthorizeApplicationForCrestAsync(CrestApiKey crest, params string[] accessScopes)
        {
            if (crest == null)
            {
                throw new ArgumentNullException(nameof(crest));
            }

            if (accessScopes.Length == 0)
            {
                throw new ArgumentException("At least one access scope must be defined");
            }

            var url    = $"{this.Server.Login}oauth/authorize/?response_type=code&redirect_uri={WebUtility.HtmlEncode(crest.CallbackUrl)}&client_id={crest.ClientId}&scope={WebUtility.HtmlEncode(accessScopes.Join(" "))}&state={crest.KeyId}";
            var result = await WebAuthenticationBrokerWrapper.AuthenticateAsync(new Uri(url), new Uri(crest.CallbackUrl));

            var parameters = new Uri(result).ParseQueryString();

            var basicAuth = $"{crest.ClientId}:{crest.SecretKey}".ToBase64String();
            var client    = new HttpClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", basicAuth);
            client.DefaultRequestHeaders.Host          = "login.eveonline.com";

            var response = await client.PostAsync(
                $"{this.Server.Login}oauth/token/",
                new FormUrlEncodedContent(new Dictionary <string, string>
            {
                { "grant_type", "authorization_code" },
                { "code", parameters["code"] }
            }));

            var tokenInfo     = JsonConvert.DeserializeObject <CrestTokenInfo>(await response.Content.ReadAsStringAsync());
            var characterInfo = await WebServiceConsumer.Consume <DefaultRestClient, JsonDeserializer, CrestCharacterInfo>($"{this.Server.Login}oauth/verify", tokenInfo.AccessToken, "login.eveonline.com");

            tokenInfo.Authentification = basicAuth;

            if (this.tokenInfos.Any(x => x.CharacterId == characterInfo.CharacterId))
            {
                this.tokenInfos.RemoveAll(x => x.CharacterId == characterInfo.CharacterId);
            }

            this.tokenInfos.Add(new TokenKey
            {
                AccessScope = accessScopes,
                CharacterId = characterInfo.CharacterId,
                TokenInfo   = tokenInfo,
                ServerName  = this.Server.ServerName
            });
        }
示例#15
0
        public async static Task <DateTime> GetEveTimeAsync()
        {
            try
            {
                var eve    = Factory.Create <IEveApi>();
                var result = await WebServiceConsumer.Consume <DefaultRestClient, JsonDeserializer, EveTime>((await eve.GetMotdAsync()).Time.HRef);

                return(result.Time);
            }
            catch
            {
                var info = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time");
                return(TimeZoneInfo.ConvertTime(DateTimeOffset.Now, info).DateTime);
            }
        }
示例#16
0
        private async Task <List <TResult> > ConsumeUntil <TResult>(string requestUri, Func <TResult, string> nextUri)
        {
            List <TResult> items = new List <TResult>();
            TResult        result;

            do
            {
                result = await WebServiceConsumer.Consume <DefaultRestClient, JsonDeserializer, TResult>(requestUri);

                requestUri = nextUri(result);

                items.Add(result);
            } while (requestUri != null);

            return(items);
        }
示例#17
0
        private async void GetMoney()
        {
            try
            {
                //MoneyProgressRing.IsActive = true;
                this.ViewModel.Money.Clear();
                var res = WebServiceConsumer.GetMoney(GetMoneyAddress(), () => { });

                await res.ContinueWith((t) =>
                {
                    this.HandleMoneyResults(t.Result);
                    // this.OnDataComplete();
                }, TaskScheduler.FromCurrentSynchronizationContext());
            }
            catch (AggregateException aex)
            {
                this.ViewModel.SetErrorAlert();
            }
        }
示例#18
0
        public async Task CachePriceAsync()
        {
            var priceUrl = (await this.GetMotdAsync()).MarketPrices.HRef;

            try
            {
                if (_itemprices.Count > 0)
                {
                    return;
                }

                var result = await WebServiceConsumer.Consume <DefaultRestClient, JsonDeserializer, EveXmlSpecializedCollectionCacheAgent <ItemPriceCollection>, ItemPriceCollection>(priceUrl);

                result?.Items?.Foreach(x => _itemprices.TryAdd(x.ItemId.Id, x));
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.Message);
            }
        }
示例#19
0
        public async Task <IEnumerable <CharacterName> > GetCharacterNamesAsync(long[] characterIds)
        {
            if (characterIds.Length == 0)
            {
                return(new CharacterName[0]);
            }

            // If not loaded... Load it
            try
            {
                if (_characterNames.Count == 0)
                {
                    _characterNames.AddRange(await EveCache.GetCacheCollection <CharacterName>());
                }
            }
            catch
            {
                // Happens... And expected if cache is not available... But too lazy to correctly handle this
            }

            var notFound = characterIds.Where(x => _characterNames.All(y => y.CharacterId != x));

            if (!notFound.Any() && _characterNames.Count > 0)
            {
                return(_characterNames.Where(x => characterIds.Contains(x.CharacterId)));
            }

            var result = await WebServiceConsumer.Consume <DefaultRestClient, XmlDeserializer, CharacterNameCollection>(
                $"{this.Server.XMLApi}eve/CharacterName.xml.aspx?ids={(_characterNames.Count == 0 ? characterIds : notFound).Join(",")}");

            _characterNames.AddRange(result.Items);

            if (result.Items.Any())
            {
                await EveCache.SetCache(_characterNames);
            }

            return(_characterNames.Where(x => characterIds.Contains(x.CharacterId)));
        }
示例#20
0
        public async Task <QuicklookCollection> GetMarketOrdersAsync(long itemTypeId)
        {
            var result = await WebServiceConsumer.Consume <DefaultRestClient, XmlDeserializer, DefaultDiskCacheAgent, QuicklookCollection>(string.Format("http://api.eve-central.com/api/quicklook?typeid={0}", itemTypeId));

            var average = result.SellOrders.Count > 0 ? result.SellOrders.Average(x => x.Price) : 0;

            if (_itemprices.ContainsKey(itemTypeId))
            {
                _itemprices[itemTypeId].AveragePrice = average;
            }
            else
            {
                _itemprices.TryAdd(itemTypeId, new ItemPrice
                {
                    ItemId = new ItemId {
                        Id = itemTypeId
                    },
                    AveragePrice  = average,
                    AdjustedPrice = result.SellOrders.Count > 0 ? result.SellOrders.Min(x => x.Price) : 0
                });
            }

            return(result);
        }
示例#21
0
        public async Task <IEnumerable <ConquerableStation> > GetConquerableStationAsync()
        {
            var result = await WebServiceConsumer.Consume <DefaultRestClient, XmlDeserializer, EveXmlSpecializedCollectionCacheAgent <ConquerableStation>, ConquerableStationCollection>($"{this.Server.XMLApi}eve/ConquerableStationList.xml.aspx");

            return(result.Items);
        }
示例#22
0
        async Task AccessTheWebAsync(CancellationToken ct)
        {
            try
            {
                HttpClient    client  = new HttpClient();
                List <string> urlList = UrlBuilder.SetUpURLList(Convert.ToInt32((this.ViewModel.EndDate - this.ViewModel.StartDate).TotalDays), ViewModel.Table, ViewModel.CurrencyCode, ViewModel.StartDate);
                List <Task <List <RateModel> > > downloadTasks = (from url in urlList select WebServiceConsumer.ProcessURL(url, client, ct, () => this.ViewModel.SetErrorText("Error"))).ToList();
                this.ViewModel.ShowProgressBars();
                this.ViewModel.SetProgressInterval(Convert.ToInt32(Math.Ceiling(100D / downloadTasks.Count())));
                while (downloadTasks.Count > 0)
                {
                    Task <List <RateModel> > firstFinishedTask = await Task.WhenAny(downloadTasks);

                    downloadTasks.Remove(firstFinishedTask);
                    await firstFinishedTask.ContinueWith((t) =>
                    {
                        var res = t.Result;
                        this.ViewModel.CurrenciesSet(Randomizer.RandomArrayEntries(res, 10));
                        this.ViewModel.UpdateProgress();
                    }, TaskScheduler.FromCurrentSynchronizationContext());
                }
                this.ViewModel.HideProgress();
            }
            catch (AggregateException aggex)
            {
                this.ViewModel.HideProgress();
                this.ViewModel.SetErrorText("Connection can not be established");
            }
            catch (Exception ex)
            {
                this.ViewModel.HideProgress();
                this.ViewModel.SetErrorText("Connection can not be established");
            }
        }
示例#23
0
 public async Task <T> GetItemAttributesAsync <T>(long itemTypeId) where T : ItemAttributes, IKeyedModel, new() =>
 await WebServiceConsumer.Consume <DefaultRestClient, JsonDeserializer, EveXmlSpecializedCacheAgent <T>, T>(
     $"{(await this.GetMotdAsync()).InventoryTypes.HRef}{itemTypeId}/");
示例#24
0
 public async Task <Motd> GetMotdAsync() => await WebServiceConsumer.Consume <DefaultRestClient, JsonDeserializer, MotdCachingAgent, Motd>(this.Server.Crest);
示例#25
0
 public async Task <T> GetCharacterSheetAsync <T>(CharacterSpecificApiKey apiKey)
     where T : CharacterSheetCompact, new()
 {
     return(await WebServiceConsumer.Consume <DefaultRestClient, XmlDeserializer, EveXmlSpecializedCacheAgent <T>, T>(
                $"{this.Server.XMLApi}char/CharacterSheet.xml.aspx?keyId={apiKey.KeyId}&vCode={apiKey.VerificationCode}&characterID={apiKey.CharacterId}"));
 }
示例#26
0
 public async Task <SolarSystemInfo> GetSolarSystemInfoAsync(long solarSystemId) =>
 await WebServiceConsumer.Consume <DefaultRestClient, JsonDeserializer, SolarSystemInfo>(
     $"{(await this.GetMotdAsync()).SolarSystems.HRef}{solarSystemId}/stats/");
示例#27
0
 public async Task <SkillInTraining> GetSkillInTrainingAsync(CharacterSpecificApiKey apiKey)
 {
     return(await WebServiceConsumer.Consume <DefaultRestClient, XmlDeserializer, EveXmlSpecializedCacheAgent <SkillInTraining>, SkillInTraining>(
                $"{this.Server.XMLApi}char/SkillInTraining.xml.aspx?keyId={apiKey.KeyId}&vCode={apiKey.VerificationCode}&characterID={apiKey.CharacterId}"));
 }
示例#28
0
 public async Task <IncursionCollection> GetIncursionsAsync() =>
 await WebServiceConsumer.Consume <DefaultRestClient, JsonDeserializer, FiveMinutesDiskCacheAgent, IncursionCollection>((await this.GetMotdAsync()).Incursions.HRef);