I wish to make a small contribution. A final gesture of good will to the people of this little planet who have given—from whom I have taken—so much.

- S.R. Hadden, Contact

Okay, so I’m not exactly giving the world the key to unlocking an advanced alien communication. But I do what I can.

I’ve been working on a not-so-little WoW-related project in my free time, set to launch with the upcoming debut of its latest expansion at the end of the year. Part of that project involves some heavy parsing of the WoW Armory. To my surprise, there wasn’t much in the way of existing libraries to accomplish that task. While it’s true that issuing HTTP requests and parsing the resulting XML into plain old java objects isn’t rocket science, it’s still a chunk of work that deserves a pre-built API.

Since my side project’s backend is heavily written in java, I decided to open source my custom java API for interacting with the Armory. Over the last week, I’ve polished it up and added support for all the other parts of the WoW Armory that I wasn’t personally using. As a result, the finished API is pretty comprehensive and now available on Github:

http://github.com/todc/wgr-armory

Per the description in the README file:

wgr-armory is a full-featured Java API for accessing Blizzard's World of
Warcraft Armory. It parses the resulting XML and converts it into plain old
java objects. All regional armories are supported, including Americas, Europe,
Korea, China, and Taiwan. Methods exist to fetch the following information:

* Guild roster data
* Detailed character data, including:
    * Base stats
    * Talent specs
    * Professions
    * Reputations
    * Statistics
    * Items
    * Arena Teams
* Customizable character activity feed
* Sortable and paginated Arena Ladders
* Detailed Arena Team data, including:
    * Arena Team characters
    * Arena Team match history
    * Arena Team opponent history
* Individual arena match stats
* Comprehensive item search. All filters supported.

The goal is to eventually port it to several other languages, including PHP, Ruby, and Python (mostly just to give me a reason to learn Ruby and Python).

Enjoy world!