Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 .. 15 :: one page |
|
Author |
Thread Statistics | Show CCP posts - 2 post(s) |
Aio Kaze
Black Shell Industries
2
|
Posted - 2016.05.05 13:07:36 -
[391] - Quote
The LP store endpoint would be very useful as I've been wanting to put together an LP profit calculator and don't fancy entering thousands of LP/ISK/item requirements by hand. |
Brain Gehirn
Reikoku Pandemic Legion
74
|
Posted - 2016.05.05 17:35:02 -
[392] - Quote
Aio Kaze wrote:The LP store endpoint would be very useful as I've been wanting to put together an LP profit calculator and don't fancy entering thousands of LP/ISK/item requirements by hand.
afaik there is no such endpoint
What is a signature?
|
Mr Mac
Dark Goliath
139
|
Posted - 2016.05.05 17:56:08 -
[393] - Quote
Brain Gehirn wrote:Aio Kaze wrote:The LP store endpoint would be very useful as I've been wanting to put together an LP profit calculator and don't fancy entering thousands of LP/ISK/item requirements by hand. afaik there is no such endpoint You can get LP store from test crest |
Brain Gehirn
Reikoku Pandemic Legion
74
|
Posted - 2016.05.05 23:04:34 -
[394] - Quote
Awesome, just saw it. Btw its working in the TQ CREST too, not just test.
What is a signature?
|
Aeon Haginen
Hogyoku Goonswarm Federation
0
|
Posted - 2016.05.11 22:49:23 -
[395] - Quote
Hi. I must admit, that your lib is a great work!
But... I'm getting a lot of "Safe handle has been closed" exceptions when using crest.
I'm using only one instance of EveCrest. When using crest.GetRoot().Query(r=>r.Regions), its like 5 of 6 times, when i get that exception. On market queries, i get it in about 1% of queries.
My code is: var allRegions = crest.GetRoot() .Query(r => r.Regions) .Query(r => r.Items) .OrderBy(item => Helpers.GetRegionOrder((int)item.Id));
Stack trace is: at System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean& success) at System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle pHandle, Boolean& success) at System.Security.Cryptography.Utils.HashData(SafeHashHandle hHash, Byte[] data, Int32 cbData, Int32 ibStart, Int32 cbSize) at System.Security.Cryptography.SHA1CryptoServiceProvider.HashCore(Byte[] rgb, Int32 ibStart, Int32 cbSize) at System.Security.Cryptography.HashAlgorithm.ComputeHash(Byte[] buffer) at eZet.EveLib.Core.Cache.EveLibFileCache.getHash(Uri uri) at eZet.EveLib.Core.Cache.EveLibFileCache.< StoreAsync >d__13.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at eZet.EveLib.EveCrestModule.RequestHandlers.CachedCrestRequestHandler.< GetAsync >d__53`1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at eZet.EveLib.EveCrestModule.EveCrest.< getAsync >d__121`1.MoveNext()
Do you think you can look into it, or give me a hint, what should i do to not get this exception? Thanks. |
Icahmura Hasaki
Perkone Caldari State
29
|
Posted - 2016.05.12 12:30:22 -
[396] - Quote
I've updated Core, fixing a bug that would sometimes throw ObjectDisposedException when attempting to write the cache. https://www.nuget.org/packages/eZet.EveLib.Core/3.0.8
Developer of EveLib and EveAuthUtility
|
Icahmura Hasaki
Perkone Caldari State
29
|
Posted - 2016.05.12 13:44:04 -
[397] - Quote
Added support for LP stores as requested, and also NpcCorporationCollection and Stations. https://www.nuget.org/packages/eZet.EveLib.EveCrest/3.4.3
Developer of EveLib and EveAuthUtility
|
Aeon Haginen
Hogyoku Goonswarm Federation
0
|
Posted - 2016.05.13 13:04:28 -
[398] - Quote
Thx, now its working like expected.
I have one question though... are you planning on implementing some rate limit mechanizm instead of limiting concurrent requests with semaphore? |
Icahmura Hasaki
Perkone Caldari State
29
|
Posted - 2016.05.13 14:11:16 -
[399] - Quote
Aeon Haginen wrote:Thx, now its working like expected. I have one question though... are you planning on implementing some rate limit mechanizm instead of limiting concurrent requests with semaphore?
No plans, no. Why, is it causing any problems ?
Developer of EveLib and EveAuthUtility
|
Aeon Haginen
Hogyoku Goonswarm Federation
0
|
Posted - 2016.05.13 14:51:20 -
[400] - Quote
Icahmura Hasaki wrote:Aeon Haginen wrote:Thx, now its working like expected. I have one question though... are you planning on implementing some rate limit mechanizm instead of limiting concurrent requests with semaphore? No plans, no. Why, is it causing any problems ?
No, but when i'm doing parallel quering, i dont want end up being banned by CCP when i end up doing 100req/sec. It can happen wery offen, as lot of queries that im doing are parallel and are less than 100ms. (like for example detail information about regions.. 100 reqs, done mostly in about 1 or 2 sec). as those requests are done inside your lib, im not able to limit it. i was able to limit queries to your lib for 10q/sec, but i cant control how many real requests (excluding cache hits) are being made from your lib to crest. |
|
Icahmura Hasaki
Perkone Caldari State
29
|
Posted - 2016.05.13 14:58:14 -
[401] - Quote
Aeon Haginen wrote:Icahmura Hasaki wrote:Aeon Haginen wrote:Thx, now its working like expected. I have one question though... are you planning on implementing some rate limit mechanizm instead of limiting concurrent requests with semaphore? No plans, no. Why, is it causing any problems ? No, but when i'm doing parallel quering, i dont want end up being banned by CCP when i end up doing 100req/sec. It can happen wery offen, as lot of queries that im doing are parallel and are less than 100ms. (like for example detail information about regions.. 100 reqs, done mostly in about 1 or 2 sec). as those requests are done inside your lib, im not able to limit it. i was able to limit queries to your lib for 10q/sec, but i cant control how many real requests (excluding cache hits) are being made from your lib to crest.
You can set the amount of concurrent requests you allow through EveCrest.RequestHandler.AuthedMaxConcurrentRequests. And as far as I know 100 req/sec is roughly what is allowed, which is why the default value is what it is.
Developer of EveLib and EveAuthUtility
|
Brain Gehirn
Reikoku Pandemic Legion
74
|
Posted - 2016.05.13 15:00:13 -
[402] - Quote
What are you doing to work with parallel querys? I'm **** with parallel things and was having issues (mostly with the cache).
When I need to update market order information for like 100 products.. it takes like 25/30 seconds. I have tried the Parallel.ForEach but then got stuck with the cache issue. (last version gave me some errors but this new version is giving a lot more, so I just gave up on the parallel thing)
What is a signature?
|
Icahmura Hasaki
Perkone Caldari State
29
|
Posted - 2016.05.13 15:16:53 -
[403] - Quote
Brain Gehirn wrote:What are you doing to work with parallel querys? I'm **** with parallel things and was having issues (mostly with the cache).
When I need to update market order information for like 100 products.. it takes like 25/30 seconds. I have tried the Parallel.ForEach but then got stuck with the cache issue. (last version gave me some errors but this new version is giving a lot more, so I just gave up on the parallel thing)
The library is built from the ground up using the task API and is how it should be used, ideally. There are async versions of all methods. Asynchronicity is not the same as parallelism, but in this case where most of the time is spent waiting for a response, parallelism doesn't make much sense.
With that said, what errors are you getting ?
Developer of EveLib and EveAuthUtility
|
Brain Gehirn
Reikoku Pandemic Legion
74
|
Posted - 2016.05.13 15:28:26 -
[404] - Quote
Yeah I need to update my skills as I have been falling a bit behind... haven't had time to read/learn about it yet.
Most of issues apeeared to be around cache files being used already. But as you said its probably due the **** implementation that I have made.
I will try to learn about it this weekend and will also try to adjust my code accordingly
What is a signature?
|
Icahmura Hasaki
Perkone Caldari State
29
|
Posted - 2016.05.13 15:36:37 -
[405] - Quote
Brain Gehirn wrote:Yeah I need to update my skills as I have been falling a bit behind... haven't had time to read/learn about it yet.
Most of issues apeeared to be around cache files being used already. But as you said its probably due the **** implementation that I have made.
I will try to learn about it this weekend and will also try to adjust my code accordingly
If you give me some more code examples I'll have a look again. But, if you want better performance, use the async methods, that is, the methods that end with Async. Using these will take care of everything in regards to "parallelism", granted you will probably have to make some changes to your code. I could possibly help if you've got examples.
One would think the latest updates would help with your way of doing it though, as access to the cache is being controlled by locks now.
Developer of EveLib and EveAuthUtility
|
Aeon Haginen
Hogyoku Goonswarm Federation
0
|
Posted - 2016.05.13 19:49:47 -
[406] - Quote
Icahmura Hasaki wrote:Aeon Haginen wrote:Icahmura Hasaki wrote:Aeon Haginen wrote:Thx, now its working like expected. I have one question though... are you planning on implementing some rate limit mechanizm instead of limiting concurrent requests with semaphore? No plans, no. Why, is it causing any problems ? No, but when i'm doing parallel quering, i dont want end up being banned by CCP when i end up doing 100req/sec. It can happen wery offen, as lot of queries that im doing are parallel and are less than 100ms. (like for example detail information about regions.. 100 reqs, done mostly in about 1 or 2 sec). as those requests are done inside your lib, im not able to limit it. i was able to limit queries to your lib for 10q/sec, but i cant control how many real requests (excluding cache hits) are being made from your lib to crest. You can set the amount of concurrent requests you allow through EveCrest.RequestHandler.AuthedMaxConcurrentRequests. And as far as I know 100 req/sec is roughly what is allowed, which is why the default value is what it is.
ah, they updated limits: General Rate Limit: 150 requests per second Burst Size: 400 Concurrent Connections: 20 (as i remember, there were 2 separate limits, one for authed and one for unauthed requests)
now my app works great. currently about 20 req/s. |
Icahmura Hasaki
Perkone Caldari State
29
|
Posted - 2016.05.14 14:18:03 -
[407] - Quote
A small project I've been working on lately to reduce the maintenance efforts required to keep up with crest changes, here's an attempt at a dynamic crest library for .net.
https://www.nuget.org/packages/eZet.EveLib.DynamicCrest
In many ways it's similar to the EveCrest library, at least syntactically, but also very different.
It currently supports GetAsync and PostAsync, Put and Delete are not implemented yet. GetAsync is equal to QueryAsync in EveCrest. The major difference is, all methods return Expando objects, which is a custom implementation of DynamicObject, which support late binding. This means it offers no static or compile time type checking, but also automatically supports every crest resource right out of the gate, and any changes will be reflected immediately.
Sample use:
var crest = new DynamicCrest(); var root = await crest.GetAsync(crest.Host); var alliance = await (await root.GetAsync(r => r.alliances)).GetAsync(a => a.First(o => o.id == 99000967));
As you can see, it's very similar to how EveCrest is used. It already supports automatic pagination when querying collections, and all the other good stuff. One difference is that the property names are now strictly camelCased, directly mirroring the json response. So what would be r.Alliances in EveCrest is now r.alliances.
Basic support for POST requests are also available:
public async Task AddWaypoint() { var character = await (await (await crest.GetAsync(crest.Host)).GetAsync(r => r.decode)).GetAsync(r => r.character); var system = (await(await crest.GetAsync(crest.Host)).GetAsync(r => r.systems)).First(); or //var system = new Resource(30000142, "http://crest.regner.dev/solarsystems/30000142/"); var wp = new AutopilotWaypoint(system); or //wp.SolarSystem = system; await crest.PostAsync(character["waypoints"].href, wp); }
If you need access to an endpoint that isn't yet supported in EveCrest, this can be used to access anything made available through crest. To find which properties are available, you can enumerate the Properties property on the Expando object, which provides an IDictionary[string, object] interface to all the properties.
Keep in mind that this is an early preview. In time I hope to have this replace EveCrest, since the amount of maintenance needed to keep up with CREST changes is a bit much.
Developer of EveLib and EveAuthUtility
|
Dread Griffin
Blueprint Haus Blades of Grass
0
|
Posted - 2016.05.27 16:53:13 -
[408] - Quote
Thanks for this tool, it's very helpful!
I've successfully used EveAuth to get my access and refresh tokens. Next, I create the EveCrest object using my refresh token and encoded key. All great up to this point.
However, when I run GetRoot() on the crest object in authenticated mode it doesn't seem to include anything extra for the scopes I authenticated with. Maybe this is working as expected and i'm just not understanding.
I after reading about RESTful practices, I assumed the root would return additional endpoints if an access token was used. Is this not the case? |
Icahmura Hasaki
Perkone Caldari State
30
|
Posted - 2016.05.28 15:24:06 -
[409] - Quote
Dread Griffin wrote:Thanks for this tool, it's very helpful!
I've successfully used EveAuth to get my access and refresh tokens. Next, I create the EveCrest object using my refresh token and encoded key. All great up to this point.
However, when I run GetRoot() on the crest object in authenticated mode it doesn't seem to include anything extra for the scopes I authenticated with. Maybe this is working as expected and i'm just not understanding.
I after reading about RESTful practices, I assumed the root would return additional endpoints if an access token was used. Is this not the case?
Root is the same, unauthorized requests will be denied upon performing the request.
Developer of EveLib and EveAuthUtility
|
Dread Griffin
Blueprint Haus Blades of Grass
0
|
Posted - 2016.05.30 05:56:06 -
[410] - Quote
Icahmura Hasaki wrote:Root is the same, unauthorized requests will be denied upon performing the request.
Ok, thanks for the reply. Then I guess I'm missing how I'm supposed to use EVELib to access endpoints requiring authentication. I thought we had to get the root and then navigate from there using querys and loads. |
|
Icahmura Hasaki
Perkone Caldari State
31
|
Posted - 2016.05.31 08:28:11 -
[411] - Quote
Dread Griffin wrote:Icahmura Hasaki wrote:Root is the same, unauthorized requests will be denied upon performing the request. Ok, thanks for the reply. Then I guess I'm missing how I'm supposed to use EVELib to access endpoints requiring authentication. I thought we had to get the root and then navigate from there using querys and loads.
Well, they will only be denied if the request is unauthorized. If you authenticate with the SSO you should be good ? And yeah, you are supposed to go through the root. All I'm saying is the root doesn't change based on authentication, the authorization check is performed upon requesting an endpoint that requires authentication, the root is public.
Developer of EveLib and EveAuthUtility
|
Dread Griffin
Blueprint Haus Blades of Grass
0
|
Posted - 2016.06.01 18:50:46 -
[412] - Quote
In evelib/EveLib.EveCrest/Models/Resources/Region.cs there doesn't appear to be a datamember for 'marketOrdersAll'. I assume this means I can't use evelib to access bulk market orders yet?
Thanks in advance.
EDIT: I just read the post about the dynamic crest lib on the previous page. Maybe this will work instead. Still need to check it out. |
Icahmura Hasaki
Perkone Caldari State
31
|
Posted - 2016.06.02 06:02:39 -
[413] - Quote
Dread Griffin wrote:In evelib/EveLib.EveCrest/Models/Resources/Region.cs there doesn't appear to be a datamember for 'marketOrdersAll'. I assume this means I can't use evelib to access bulk market orders yet?
Thanks in advance.
EDIT: I just read the post about the dynamic crest lib on the previous page. Maybe this will work instead. Still need to check it out.
Oh, I thought "marketOrders" was the correct endpoint, and I hadn't even noticed "marketOrdersAll". I will try and fix this asap, but i'll probably be a week as I'm busy with exams. Funny how no one else has commented on this.
But yes, this is exactly why I made dynamic crest, because it allows you to query any endpoint and retrieve any resource without the need for updates.
Please let me know if you are having any issues with dynamic crest or need more examples of how to use it. GET requests should be easy to do.
Developer of EveLib and EveAuthUtility
|
Dread Griffin
Blueprint Haus Blades of Grass
0
|
Posted - 2016.06.02 06:22:42 -
[414] - Quote
Icahmura Hasaki wrote:Dread Griffin wrote:In evelib/EveLib.EveCrest/Models/Resources/Region.cs there doesn't appear to be a datamember for 'marketOrdersAll'. I assume this means I can't use evelib to access bulk market orders yet?
Thanks in advance.
EDIT: I just read the post about the dynamic crest lib on the previous page. Maybe this will work instead. Still need to check it out. Oh, I thought "marketOrders" was the correct endpoint, and I hadn't even noticed "marketOrdersAll". I will try and fix this asap, but i'll probably be a week as I'm busy with exams. Funny how no one else has commented on this. But yes, this is exactly why I made dynamic crest, because it allows you to query any endpoint and retrieve any resource without the need for updates. Please let me know if you are having any issues with dynamic crest or need more examples of how to use it. GET requests should be easy to do.
I've managed to get all the market orders in The Forge using this:var theForgeMarketOrders = await(await(await(await crest.GetAsync(crest.Host)) .GetAsync(r => r.regions)) .GetAsync(a => a.First(o => o.id == 10000002))) .GetAsync(r => r.marketOrdersAll); However, I'm fairly new to C# and LINQ and wasn't really sure how to work with the returned object. I think i managed to hammer it into a list of objects i made with this:foreach (var marketOrder in theForgeMarketOrders) { MarketOrder temp = new MarketOrder(); temp.buy = marketOrder.buy; temp.issued = marketOrder.issued; temp.price = marketOrder.price; temp.volume = marketOrder.volume; temp.duration = marketOrder.duration; temp.id = marketOrder.id; temp.minVolume = marketOrder.minVolume; temp.volumeEntered = marketOrder.volumeEntered; temp.range = marketOrder.range; temp.stationID = marketOrder.stationID; temp.type = marketOrder.type; MarketOrders.Add(temp); }
I didn't have much time to work on it today, but I hope to hammer away some more tomorrow. |
Dread Griffin
Blueprint Haus Blades of Grass
0
|
Posted - 2016.06.02 19:40:38 -
[415] - Quote
It seems executing a foreach loop on your eZet.EveLib.DynamicCrest.Expando object works fine until the end when I get an exception for the object not containing a definition for 'next'. I've looked up ways to identify if an ExpandoObject contains a given method, but I don't think you can use them to control a foreach call.
I'm currently just catching and suppressing the exception and everything is going fine. I'm not sure if I need to be doing something different or if your object could end a foreach differently. |
Icahmura Hasaki
Perkone Caldari State
31
|
Posted - 2016.06.04 14:28:32 -
[416] - Quote
Thanks for the feedback so far, greatly appreciated. How you are creating the list is fine, and intended. I assume you have defined the MarketOrder class, it isnt the EveCrest one?
I'll look into the exception you mentioned, that's not intended.
So far it looks like you've got it working, let me know if you have other issues! :)
Developer of EveLib and EveAuthUtility
|
Dread Griffin
Blueprint Haus Blades of Grass
0
|
Posted - 2016.06.05 22:08:11 -
[417] - Quote
Icahmura Hasaki wrote:Thanks for the feedback so far, greatly appreciated. How you are creating the list is fine, and intended. I assume you have defined the MarketOrder class, it isnt the EveCrest one?
I'll look into the exception you mentioned, that's not intended.
So far it looks like you've got it working, let me know if you have other issues! :)
Yes, I created that market order class. Everything seems to be working fine so far. |
Tommy Tripod
Shady Castle AddictClan
0
|
Posted - 2016.06.11 22:13:59 -
[418] - Quote
Hi, I've been trying to access my fleet through EveCrest, but sofar I have not been able to find it. Am I looking in the wrong place or has that not been added to the library yet? |
Icahmura Hasaki
Perkone Caldari State
31
|
Posted - 2016.06.13 07:30:24 -
[419] - Quote
Tommy Tripod wrote:Hi, I've been trying to access my fleet through EveCrest, but sofar I have not been able to find it. Am I looking in the wrong place or has that not been added to the library yet?
Fleet endpoints are not supported yet, sorry.
Developer of EveLib and EveAuthUtility
|
Mathliney Kagrel
Too Many Miners
0
|
Posted - 2016.06.14 12:22:26 -
[420] - Quote
Hello,
Since today's changes, API is broken, server status or something like this. |
|
|
|
|
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 .. 15 :: one page |
First page | Previous page | Next page | Last page |