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) |
Icahmura Hasaki
EVE University Ivy League
0
|
Posted - 2014.03.30 15:50:00 -
[1] - Quote
EveLib is a .NET Library for the Eve Online API and a few other popular APIs. It is written in C#, is open source and licensed under Apache v2.
It is still under heavy development, so expect a lot of fixes, tweaks and some new features. I will fix any bugs as soon as they are reported, and I can take requests for new features and APIs to be included.
Current stable version is v1.0, and includes the official Eve Online API, Eve-Central API and Eve-MarketData API.
Features
- Easy to use.
- XML configuration through app.config.
- Access to all popular APIs through one library.
- Adheres to C# and .NET conventions.
- Provides caching for CCP API requests.
- Modular and open source; you can easily change the caching, serialization or any other part of the library.
- A fairly comprehensive set of unit tests, including static xml samples for calls requiring authentication.
For more information, downloads and examples, check out the Github page. |
Icahmura Hasaki
EVE University Ivy League
0
|
Posted - 2014.04.02 16:04:00 -
[2] - Quote
I've fixed a few minor bugs and updated the API to the newest version, described here.
The current version is stable and tagged. If anyone wants me to upload the dll files separately, let me know. |
Icahmura Hasaki
EVE University Ivy League
1
|
Posted - 2014.04.14 15:37:00 -
[3] - Quote
Updated again with some more bugfixes. Added a better way to check if a given key is valid, and implemented support for parts of the api provided by element43. Next on the schedule is a few more of the calls to element43 and then the CREST api.
|
Icahmura Hasaki
EVE University Ivy League
1
|
Posted - 2014.04.19 15:43:00 -
[4] - Quote
Released version 1.2, with much improved error handling, debug output and other fixes, as well as support for element-43.com. Feel free to ask questions or for help here, or through email. I can normally get things fixed within a few hours. |
Jack Mensen
Specter Force Security
0
|
Posted - 2014.04.19 16:40:00 -
[5] - Quote
Heya, nice work there! Just took a quick look at your code, did you know that you have to take the current culture settings the program is running under into account when you are parsing numbers? I can't see any use of cultures in your code, but as said, I just skimmed it.
When parsing the security status for example I have to do
var culture = new CultureInfo("en-US"); c.SecurityStatus = float.Parse(cResult.Element("securityStatus").Value, culture);
to parse this correctly: -2.66483930517884
That's because the point is used to group thousands in Germany, the colon marks the decimal part. Just wanted to tell you that, if you are already aware of it never mind me!
Greetings, Jack |
RO ALEXANDER
S0utherN Comfort Against ALL Authorities
0
|
Posted - 2014.04.20 20:41:00 -
[6] - Quote
Hey! Trying out your code, build your projects and added the resulting dlls as a reference to my current c# solution (a tool I'm making just for me that displays various information and views of my accounts in a format I want) .
Question is: I've seen you're storing hashes of request so that you know if you already made that request and when the cache expires, however I might be mistaken but there are certain data pieces (logs, assets list, journal) that are not stored on Eve's CDN and you only get one chance to get the data. Are you planning on storing that sort of stuff locally somewhere, or should I just add that option myself? |
Icahmura Hasaki
eZet Trade Consortium
2
|
Posted - 2014.04.28 17:56:00 -
[7] - Quote
Sorry for the late replies, I was sure I had added notifications for this topic, but it doesn't seem to be working.
About parsing decimals, I believe it should be working, but if there are any bugs let me know and I'll fix it asap.
About the caching, every page is cached locally by Windows, assuming you are running that. I'm not entirely sure how it works under other OS, feel free to provide some feedback. So unless you clear the IE cache, the returned data is available there and is used by the library on subsequent requests. The caching part was written very quickly, and isn't very robust. I will implement a custom cache in the near future.
If you however want to write your own, you simply need to implement the IRequestHandler for complete control, or use CachedRequestHandler which already implements IRequestHandler with some default logic for caching.
Again, I'm really sorry for the late replies, I simply haven't checked this for a while assuming I would get notified. Bugs and other requests are normally responded to within a day.
|
Icahmura Hasaki
eZet Trade Consortium
2
|
Posted - 2014.05.05 09:23:00 -
[8] - Quote
Updated with much improved cache handling, and various other minor fixes. Starting work on CREST support, which should be ready shortly. |
RO ALEXANDER
S0utherN Comfort DARKNESS.
0
|
Posted - 2014.05.05 10:08:00 -
[9] - Quote
Icahmura Hasaki wrote:Updated with much improved cache handling, and various other minor fixes. XML files are stored in /AppData/Roaming/EveLib/Cache by default on windows, or under ~/config/... on most other platforms, though this can be changed with app.config.
Starting work on CREST support, which should be ready shortly.
Found a bug in the update, app crashes in the Store() function, namely the "File.WriteAllText(Config.CachePath + Path.DirectorySeparatorChar + GetUriHash(uri), data);" line. It's because the directory is not created anywhere in the app, and I assume that when you ran it yourself, you already had that path.
|
Icahmura Hasaki
eZet Trade Consortium
2
|
Posted - 2014.05.05 10:22:00 -
[10] - Quote
Oh, I had that sorted at some point, but seems it didn't make it to the sync. It's fixed now. Let me know if there is anything else |
|
Icahmura Hasaki
eZet Trade Consortium
2
|
Posted - 2014.05.05 11:24:00 -
[11] - Quote
Basic CREST support has been added using dynamics. All current endpoints should be working. Not sure if I want to spend too much time on it in it's current state as things may likely change still. But if there are requests for it, I can add more robust handling for the current CREST endpoints.
Also added a UserAgent option in App.config, as CCP wants you to use your applications name when requesting data. |
Icahmura Hasaki
eZet Trade Consortium
2
|
Posted - 2014.05.05 11:30:00 -
[12] - Quote
And it seems I had missed the new PI endpoints on the API. I'll be adding those now, along with the other things that changed in the last two API updates. And I'm still taking requests for APIs or features you want to see in EveLib. |
Icahmura Hasaki
eZet Trade Consortium
2
|
Posted - 2014.05.05 11:40:00 -
[13] - Quote
I do not participate in PI, making it hard to test these endpoints. Would someone be willing to share an API key for a PI characters for an hour ? You can delete the key afterwards, or if you're willing to leave it enabled I can write some tests as well. Just send me a PM with the key if you're willing to help out |
Icahmura Hasaki
eZet Trade Consortium
2
|
Posted - 2014.05.05 12:23:00 -
[14] - Quote
The library has been updated to support the newest version of the API, which includes the addition of four PI endpoints and some other minor changes in existing ones. However, as I do not have access to an API key for PI, absolutely nothing has been tested. I'll need some help with that. |
Kendra Zane
Working From Home
5
|
Posted - 2014.05.05 21:04:00 -
[15] - Quote
Is this thread safe? I've used another library for a while and found much to my annoyance that is isn't. |
Icahmura Hasaki
eZet Trade Consortium
2
|
Posted - 2014.05.05 21:18:00 -
[16] - Quote
It should be thread safe, all though I haven't tested it with that in mind. Though, if any issues arise I'm sure I can have it sorted. You cannot however use a shared cache for multiple instances of the library at the moment, so keep that in mind.
If there are any requests for being able to share the cache, I can have implement that too. But I think one of the local proxy solutions would solve that problem in a better way. |
Icahmura Hasaki
eZet Trade Consortium
2
|
Posted - 2014.05.05 21:26:00 -
[17] - Quote
After giving it some thought, I can think of a few things that aren't thread safe, but these are mostly minor issues that I can probably have fixed tomorrow. If you would like to use it in a threaded environment and provide me with bug reports I'm sure we can get rid of them pretty fast. |
Icahmura Hasaki
eZet Trade Consortium
2
|
Posted - 2014.05.06 12:17:00 -
[18] - Quote
I've made a few changes, and it should be thread safe now. In fact it already was, but I've made some optimizations here and there. Please let me know if I've overlooked anything |
Hel O'Ween
Men On A Mission
76
|
Posted - 2014.05.06 13:33:00 -
[19] - Quote
RO ALEXANDER wrote:however I might be mistaken but there are certain data pieces (logs, assets list, journal) that are not stored on Eve's CDN and you only get one chance to get the data.
As for journals: you can't get them past a certain date (1 month), but you certianly can retrieve them as often as you like during that period.
Same's true for assets. What you miss ofc is the change of assets in between two cache calls:
- pull API the first time, caching starts - add item A to your assets - remove item A from your assets - caching expires, pull API a second time
From an asset API POV, item A has never existed. EVEWalletAware - an offline wallet manager. |
Icahmura Hasaki
eZet Trade Consortium
2
|
Posted - 2014.05.06 14:36:00 -
[20] - Quote
I know the /char/Killlog endpoint won't return any data after the first request, until the cache has expired. Are there any other endpoints with similar behavior?
Also, added basic implementation for Zkillboard.com. However, make sure you read https://neweden-dev.com/ZKillboard_API before using it, as they have quite a few limitations and rules for usage, and incorrect use will get your IP suspended.
|
|
Cryten Jones
Chill Cabal The Serenity Initiative
109
|
Posted - 2014.05.08 10:47:00 -
[21] - Quote
**Warning Stupid Question""
I have spent a load of time this year teaching myself C# and had been doing ok thus far trying to create my own industry app as a means to lean the language, so in short I have worked a load out but am still a noob.
I have created some code that does a very basic job of pulling info from the API but have decided to use this far superior library for the task so that I can focus on the actual task at hand.
Could some kind person explain to me how I can add Evelib to my project? when I try and add existing project and add in each part of the Evelib solution I get a load of namespace reference errors so I must be doing it wrong.
All I want access to is EveCentral and the ability to fetch from the authenticated API (eg assets, wallets etc)
Thanks in advance.
|
Icahmura Hasaki
Brave Newbies Inc. Brave Collective
3
|
Posted - 2014.05.08 11:17:00 -
[22] - Quote
That's a valid question. You will need 3 modules, EveLib.Core, EveLib.EveCentral and EveLib.EveOnline. The reference errors you are seeing, is most likely because you need to add a reference to EveLib.Core in EveCentral and EveOnline. Assuming you are using VS: With all 3 projects in your solution, you will see a sub-item under each project called "References". Rightclick this, select "Add reference", select EveLib.Core under "Solution -> Projects". Do this for both EveCentral and EveOnline, and you should be good to go.
Let me know if you're still having issues. |
Cryten Jones
Chill Cabal The Serenity Initiative
109
|
Posted - 2014.05.08 12:07:00 -
[23] - Quote
Great, thanks! that cleared up the errors... still having issues getting the using eZet.EveLib.Modules to work but again I may be missing somehting |
Icahmura Hasaki
Brave Newbies Inc. Brave Collective
3
|
Posted - 2014.05.08 12:16:00 -
[24] - Quote
You're not entirely clear on what isn't working, could you be more specific? eZet.EveLib.Modules is just a namespace. I do however recognize that the library isn't distributed in a very user-friendly manner at the moment, though I'm not sure what would be the best way to distribute it either.
edit: Oh, I misread. You need to add EveLib.EveCentral and/or EveLib.EveOnline as a reference in the project you want to use it in, the same way you did with Core. |
Cryten Jones
Chill Cabal The Serenity Initiative
109
|
Posted - 2014.05.08 12:20:00 -
[25] - Quote
Cryten Jones wrote:Great, thanks! that cleared up the errors... still having issues getting the using eZet.EveLib.Modules to work but again I may be missing somehting
Never mind, worked it out, thanks |
Cryten Jones
Chill Cabal The Serenity Initiative
109
|
Posted - 2014.05.08 12:20:00 -
[26] - Quote
Icahmura Hasaki wrote:You're not entirely clear on what isn't working, could you be more specific? eZet.EveLib.Modules is just a namespace. I do however recognize that the library isn't distributed in a very user-friendly manner at the moment, though I'm not sure what would be the best way to distribute it either.
edit: Oh, I misread. You need to add EveLib.EveCentral and/or EveLib.EveOnline as a reference in the project you want to use it in, the same way you did with Core.
LOL got there at the same time :-)
|
Cryten Jones
Chill Cabal The Serenity Initiative
109
|
Posted - 2014.05.08 12:26:00 -
[27] - Quote
On a side note:
When I request something from the API, lets say the asset list for a character. What is the return format?
On the project I did myself I processed the API XML into a datatable and returned that.. what is the return format in and what would be the best method for loading that into a table ?
Thanks |
Icahmura Hasaki
Brave Newbies Inc. Brave Collective
3
|
Posted - 2014.05.08 12:40:00 -
[28] - Quote
The API parses the XML and returns an object, depending on the request you make. The EveOnline module returns objects of the type EveApiResponse[T] (cant use html tags) where T is specific to the request, EveCentral uses EveCentralSomeName where SomeName depends on the request.
There are more specific examples in the github readme.
edit: As a follow up, the best way to insert it in a db would be to convert the API objects into the domain models/data models you use for your database, and then insert those into your database. To convert you can use a simple mapper that reads the data from the API object, and maps it to a new domain object. |
Cryten Jones
Chill Cabal The Serenity Initiative
109
|
Posted - 2014.05.08 12:53:00 -
[29] - Quote
You are already out of my knowledge here..
I was hoping that I could call character.assetslist(keyData) and get the data back but I can't even work out what the options for T let alone data models etc :-)
|
Icahmura Hasaki
Brave Newbies Inc. Brave Collective
3
|
Posted - 2014.05.08 12:56:00 -
[30] - Quote
A specific example for asset list would be:
var key = new CharacterKey(12345, "someVcode"); var character =key.Characters.Single(c => c.CharacterName == "Icahmura Hasaki"); var result = character.GetAssetList(); // or replace var with EveApiResponse[AssetList]
Keep in mind [ ] is a repacement for HTML style pointy brackets if you aren't used to generics. Anyone know if you can get around the forum limitations for showing these?
You can then use intellisense or some other code completion too see the available properties on result, or you can check the source or debug the object to see what's available. In most cases it follows the XML structure, but some properties are slightly renamed for clarity.
|
|
|
|
|
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 |