/// <summary> /// Queries a collection of resources. /// </summary> /// <typeparam name="TOut">The type of the t out.</typeparam> /// <param name="objFunc">The object function.</param> /// <param name="parameters">The parameters.</param> /// <returns>Task<TOut[]>.</returns> public virtual IEnumerable <TOut> Query <TOut>(Func <T, IEnumerable <ILinkedEntity <TOut> > > objFunc, params string[] parameters) where TOut : class, ICrestResource <TOut> { var items = objFunc.Invoke(this as T); return(EveCrest.Load(items, parameters)); }
/// <summary> /// Queries a collection of resources asynchronously. /// </summary> /// <typeparam name="TOut">The type of the t out.</typeparam> /// <param name="objFunc">The object function.</param> /// <returns>Task<TOut[]>.</returns> public virtual Task <IEnumerable <TOut> > QueryAsync <TOut>(Func <T, IEnumerable <Href <TOut> > > objFunc) where TOut : class, ICrestResource <TOut> { IEnumerable <Href <TOut> > items = objFunc.Invoke(this as T); return(EveCrest.LoadAsync(items)); }
/// <summary> /// Queries a collection of resources. /// </summary> /// <typeparam name="TOut">The type of the t out.</typeparam> /// <param name="objFunc">The object function.</param> /// <returns>Task<TOut[]>.</returns> public virtual IEnumerable <TOut> Query <TOut>(Func <T, IEnumerable <ILinkedEntity <TOut> > > objFunc) where TOut : class, ICrestResource <TOut> { IEnumerable <ILinkedEntity <TOut> > items = objFunc.Invoke(this as T); return(EveCrest.Load(items)); }
/// <summary> /// Injects the specified instance. /// </summary> /// <param name="instance">The instance.</param> public override void Inject(EveCrest instance) { base.Inject(instance); Contacts.EveCrest = instance; Fittings.EveCrest = instance; Waypoints.EveCrest = instance; }
/// <summary> /// Queries a collection of resources asynchronously. /// </summary> /// <typeparam name="TOut">The type of the t out.</typeparam> /// <param name="objFunc">The object function.</param> /// <param name="parameters">The parameters.</param> /// <returns>Task<TOut[]>.</returns> public virtual Task <IEnumerable <TOut> > QueryAsync <TOut>(Func <T, IEnumerable <Href <TOut> > > objFunc, params string[] parameters) where TOut : class, ICrestResource <TOut> { var items = objFunc.Invoke(this as T); return(EveCrest.LoadAsync(items, parameters)); }
/// <summary> /// Injects the specified crest instance. /// </summary> /// <param name="crestInstance">The crest instance.</param> public override void Inject(EveCrest crestInstance) { base.Inject(crestInstance); foreach (var item in Items) { item.EveCrest = EveCrest; item.PostUri = Uri.ToString(); } }
/// <summary> /// Injects the specified instance. /// </summary> /// <param name="instance">The instance.</param> public override void Inject(EveCrest instance) { base.Inject(instance); Contacts.EveCrest = instance; Fittings.EveCrest = instance; UI.SetWaypoints.EveCrest = instance; UI.ShowMarketDetails.EveCrest = instance; UI.ShowContact.EveCrest = instance; }
public EveCrest_Singularity_Tests() { Crest = new EveCrest(refreshToken, encodedKey); Crest.Host = "https://api-sisi.testeveonline.com/"; Crest.EveAuth.Host = "sisilogin.testeveonline.com"; Crest.RequestHandler.ThrowOnDeprecated = true; Crest.RequestHandler.ThrowOnMissingContentType = true; Crest.EnableAutomaticPaging = true; Crest.RequestHandler.CacheLevel = CacheLevel.BypassCache; }
/// <summary> /// Queries a collection resource for a single item, async. /// </summary> /// <typeparam name="TOut">The type of the t out.</typeparam> /// <param name="objFunc">The object function.</param> /// <returns>Task<TOut[]>.</returns> public async Task <TOut> QueryAsync <TOut>(Func <IEnumerable <TItem>, Href <TOut> > objFunc) where TOut : class, ICrestResource <TOut> { //var collection = this; //var list = collection.Items.ToList(); //if (EveCrest.EnableAutomaticPaging) { // while (collection.Next != null) { // collection = await EveCrest.LoadAsync(collection.Next).ConfigureAwait(false); // list.AddRange(collection.Items); // } //} var item = objFunc.Invoke(this); return(await EveCrest.LoadAsync(item).ConfigureAwait(false)); }
protected override void _ExecuteInConsole(IConsole console) { string retval = ""; EveCrest crest = new EveCrest(); var regions = crest.GetRoot().Query(r => r.Regions); var list = regions.Items.ToList(); foreach (var region in list) { retval += region.Name; retval += "\n"; } console.Write(retval); }
/// <summary> /// Gets all items in the collection as an asynchronous operation. /// </summary> /// <returns>Task<IEnumerable<TCollection>>.</returns> public async Task <IEnumerable <TItem> > AllItemsAsync() { var collection = this; var list = collection.Items.ToList(); while (collection.Next != null) { if (collection.NextResource == null) { collection.NextResource = await EveCrest.LoadAsync(collection.Next).ConfigureAwait(false); } collection = collection.NextResource; list.AddRange(collection.Items); } return(list); }
/// <summary> /// Gets all items in the collection as an asynchronous operation. /// </summary> /// <returns>Task<IEnumerable<TCollection>>.</returns> public async Task <IEnumerable <TCollection> > AllItemsAsync() { CollectionResource <T, TCollection> collection = this; List <TCollection> list = collection.Items.ToList(); if (EveCrest.EnableAutomaticPaging) { while (collection.Next != null) { collection = await EveCrest.LoadAsync(collection.Next).ConfigureAwait(false); list.AddRange(collection.Items); } } return(list); }
/// <summary> /// Queries a collection resource for a single item, async. /// </summary> /// <typeparam name="TOut">The type of the t out.</typeparam> /// <param name="objFunc">The object function.</param> /// <returns>Task<TOut[]>.</returns> public async Task <TOut> QueryAsync <TOut>(Func <IEnumerable <TCollection>, ILinkedEntity <TOut> > objFunc) where TOut : class, ICrestResource <TOut> { CollectionResource <T, TCollection> collection = this; List <TCollection> list = collection.Items.ToList(); if (EveCrest.EnableAutomaticPaging) { while (collection.Next != null) { collection = await EveCrest.LoadAsync(collection.Next).ConfigureAwait(false); list.AddRange(collection.Items); } } ILinkedEntity <TOut> item = objFunc.Invoke(list); return(await EveCrest.LoadAsync(item).ConfigureAwait(false)); }
/// <summary> /// Returns an enumerator that iterates through a collection. /// </summary> /// <returns>An <see cref="T:System.Collections.IEnumerator" /> object that can be used to iterate through the collection.</returns> IEnumerator IEnumerable.GetEnumerator() { foreach (var item in Items) { yield return(item); } if (Next == null || !EveCrest.EnableAutomaticPaging) { yield break; } if (NextResource == null) { NextResource = EveCrest.Load(Next); } var iter = NextResource.GetEnumerator(); while (iter.MoveNext()) { yield return(iter.Current); } }
public static void Main(string[] args) { // There are alternate views for things requiring a preamble. var crest = new EveCrest(); var root = crest.GetRoot(); // Note collections hold only the first 1000 or so items. To get an enumerable // over all, one might use the AllItems utility method. // The following is an illustration of one way to get the region ID for a given // named region. var regions = root.Query(r => r.Regions); const string regionName = "Deklein"; var regionId = regions.AllItems().First(r => r.Name == regionName).Id; Console.WriteLine("Id for region '{0}' is {1}", regionName, regionId); // Now get the market type ID for generic small antimatter. var marketTypes = crest.Load(root.MarketTypes); const string itemName = "Antimatter Charge S"; var itemId = marketTypes.AllItems().Select(i => i.Type).First(t => t.Name == itemName).Id; Console.WriteLine("Id for market item '{0}' is {1}", itemName, itemId); // The following call is deprecated as it is not idiomatic w.r.t. CREST, but it's // unclear to me what its replacement actually is. var hist = crest.GetMarketHistory(regionId, itemId); double monies = 0; long items = 0; foreach (var item in hist.AllItems()) { monies += item.AvgPrice * item.Volume; items += item.Volume; } // These reports seem to span 13 total months. Console.WriteLine("Avg for '{0}' in '{1}' is {2} across {3} total ISK volume", itemName, regionName, monies / items, monies); // That's actually rather more than I expected. Who finds it effective to brawl with // antimatter charge S in nullsec, against the NPCs we often see here? }
private async Task produce(int region, int typeId, EveData.MarketData.MarketHistoryEntry latest) { CrestMarketHistory result; while (true) { try { result = await EveCrest.GetMarketHistoryAsync(region, typeId).ConfigureAwait(false); break; } catch (Exception) { Console.WriteLine("Something went wrong, waiting..."); Thread.Sleep(30000); } } var limit = DateTime.UtcNow.AddMonths(-3); var history = result.Entries.Where(e => e.Date > limit).ToList(); if (latest != null) { history = history.Where(e => e.Date > latest.Date).ToList(); } Queue.Add(new ConsumerTask(typeId, region, history)); }
/// <summary> /// Queries the resource asynchronously. /// </summary> /// <typeparam name="TOut">The type of the t out.</typeparam> /// <param name="objFunc">The object function.</param> /// <returns>Task<TOut>.</returns> public Task <TOut> QueryAsync <TOut>(Func <T, ILinkedEntity <TOut> > objFunc) where TOut : class, ICrestResource <TOut> { return(EveCrest.LoadAsync(objFunc.Invoke(this as T))); }
/// <summary> /// Queries the resource. /// </summary> /// <typeparam name="TOut">The type of the t out.</typeparam> /// <param name="objFunc">The object function.</param> /// <returns>Task<TOut>.</returns> public virtual TOut Query <TOut>(Func <T, Href <TOut> > objFunc) where TOut : class, ICrestResource <TOut> { return(EveCrest.Load(objFunc.Invoke(this as T))); }
/// <summary> /// Queries the asynchronous. /// </summary> /// <typeparam name="TOut">The type of the t out.</typeparam> /// <typeparam name="TParam">The type of the t parameter.</typeparam> /// <param name="objFunc">The object function.</param> /// <param name="param">The parameter.</param> /// <returns>Task<TOut>.</returns> public Task <TOut> QueryAsync <TOut, TParam>(Func <T, Href <TOut> > objFunc, LinkedEntity <TParam> param) where TOut : class, ICrestResource <TOut> where TParam : IQueryParameter <TParam> { return(EveCrest.LoadAsync(objFunc.Invoke(this as T), param)); }
/// <summary> /// Injects the specified crest. /// </summary> /// <param name="crest">The crest.</param> public virtual void Inject(EveCrest crest) { EveCrest = crest; }
public EveService(EveAuth eveAuth, EveCrest eveCrest) { _eveAuth = eveAuth; _eveCrest = eveCrest; }
public EveService(string refreshToken) { _eveAuth = new EveAuth(); _eveCrest = new EveCrest(refreshToken, GenerateEncryptedKey()); }
/// <summary> /// Queries the resource. /// </summary> /// <typeparam name="TOut">The type of the t out.</typeparam> /// <param name="objFunc">The object function.</param> /// <param name="parameters">The parameters.</param> /// <returns>Task<TOut>.</returns> public virtual TOut Query <TOut>(Func <T, Href <TOut> > objFunc, params string[] parameters) where TOut : class, ICrestResource <TOut> { return(EveCrest.Load(objFunc.Invoke(this as T), parameters)); }
/// <summary> /// Queries the resource asynchronously. /// </summary> /// <typeparam name="TOut">The type of the t out.</typeparam> /// <param name="objFunc">The object function.</param> /// <param name="parameters">The parameters.</param> /// <returns>Task<TOut>.</returns> public Task <TOut> QueryAsync <TOut>(Func <T, Href <TOut> > objFunc, params string[] parameters) where TOut : class, ICrestResource <TOut> { return(EveCrest.LoadAsync(objFunc.Invoke(this as T), parameters)); }
/// <summary> /// Saves this instance. /// </summary> /// <param name="forcePostRequest">if set to <c>true</c> [force post request].</param> /// <returns>Task.</returns> public Task <bool> SaveAsync(bool forcePostRequest = false) { return(EveCrest.SaveEntityAsync(this, forcePostRequest)); }
/// <summary> /// Deletes this instance. /// </summary> /// <returns>Task.</returns> public Task <bool> DeleteAsync() { return(EveCrest.DeleteEntityAsync(this)); }
public MarketHistoryUpdater() { EveCrest = new EveCrest(); StaticDataContext = new EveStaticData(); Queue = new BlockingCollection <ConsumerTask>(); }