Skip to content

Latest commit

 

History

History
51 lines (33 loc) · 2.35 KB

rest.rst

File metadata and controls

51 lines (33 loc) · 2.35 KB

Auraxium Client

All of Auraxium's API interactions are performed through the auraxium.Client class, which contains a few essential references, like the current event loop, the connection pool, or the unique service ID used to identify your app.

Note

You can use the default value of s:example for testing, but you may run into rate limiting issues if your app generates more than 5-6 queries a minute.

You can apply for your custom service ID here; the process is free, and you usually hear back within a few hours.

Retrieving Data

Note

The game-specific object representations for PlanetSide 2 reside in the auraxium.ps2 submodule. Refer to the Object Model Documentation for details.

The auraxium.Client class exposes several methods used to access the REST API data, like ~auraxium.Client.get(), used to return a single match, or ~auraxium.Client.find(), used to return a list of matching entries.

It also provides some utility methods, like ~auraxium.Client.get_by_id() and ~auraxium.Client.get_by_name(). They behave much like the more general ~auraxium.Client.get() but are generally preferrably for performance as they use an internal TLRU cache to keep recently used objects in local storage.

This means that repeatedly accessing an object through ~auraxium.Client.get_by_id() will only generate network traffic once, after which it is retrieved from cache:

import asyncio
import auraxium
from auraxium import ps2

async def main():
    async with auraxium.Client() as client:

        char = await client.get_by_name(ps2.Character, 'auroram')
        print(char.name)
        print(char.data.prestige_level)

        # NOTE: Any methods that might incur network traffic are asynchronous.
        # If the data type has been cached locally, no network communication
        # is required and the coroutine will be done with no delay.

        # This will only generate a request once per faction, as the faction
        # data type is cached forever by default
        print(await char.faction())

        # The online status is never cached as it is bound to change at any
        # moment.
        print(await char.is_online())

asyncio.run(main())