1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-06-16 15:22:17 +03:00

PLUGINS.md: Allow use of CAPIData.source_host

* Additional Allowed Imports `from companion ...`.

* Plugin authors will still need to chain `cmdr_data_legacy()` to calling
  `cmdr_data()`, but with sanctioned access to `data.source_host` they can
  then determine the galaxy data source.

* Re-worked the documentation for CAPI data a little to make all of this as
  clear as possible.
This commit is contained in:
Athanasius 2022-12-08 13:17:13 +00:00
parent af5d998464
commit 84615db839
No known key found for this signature in database
GPG Key ID: 772697E181BB2767

View File

@ -98,6 +98,12 @@ liable to change without notice.
`from prefs import prefsVersion` - to allow for versioned preferences. `from prefs import prefsVersion` - to allow for versioned preferences.
`from companion import CAPIData, SERVER_LIVE, SERVER_LEGACY, SERVER_BETA` -
`CAPIData` is the actual type of `data` as passed into `cmdr_data()` and
`cmdr_data_legacy()`.
See [Commander Data from Frontier CAPI](#commander-data-from-frontier-capi))
for further information.
`import edmc_data` (or specific 'from' imports) - This contains various static `import edmc_data` (or specific 'from' imports) - This contains various static
data that used to be in other files. You should **not** now import anything data that used to be in other files. You should **not** now import anything
from the original files unless specified as allowed in this section. from the original files unless specified as allowed in this section.
@ -881,8 +887,14 @@ constants.
--- ---
### Commander Data from Frontier CAPI ### Commander Data from Frontier CAPI
If a plugin has a `cmdr_data()` function it gets called when the application
has just fetched fresh Cmdr and station data from Frontier's servers, **but not
for the Legacy galaxy**. See `cmdr_data_legacy()` below for Legacy data
handling.
```python ```python
from companion import CAPIData, SERVER_LIVE, SERVER_LEGACY, SERVER_BETA
def cmdr_data(data, is_beta): def cmdr_data(data, is_beta):
""" """
We have new data on our commander We have new data on our commander
@ -891,18 +903,29 @@ def cmdr_data(data, is_beta):
raise ValueError("this isn't possible") raise ValueError("this isn't possible")
logger.info(data['commander']['name']) logger.info(data['commander']['name'])
```
This gets called when the application has just fetched fresh Cmdr and station # Determining source galaxy for the data
data from Frontier's servers, **but not for the Legacy galaxy**. if data.source_host == SERVER_LIVE:
...
elif data.source_host == SERVER_BETA:
...
elif data.source_host == SERVER_LEGACY:
...
```
| Parameter | Type | Description | | Parameter | Type | Description |
| :-------- | :--------------: | :------------------------------------------------------------------------------------------------------- | | :-------- | :--------------: | :------------------------------------------------------------------------------------------------------- |
| `data` | `Dict[str, Any]` | `/profile` API response, with `/market` and `/shipyard` added under the keys `marketdata` and `shipdata` | | `data` | `CAPIData` | `/profile` API response, with `/market` and `/shipyard` added under the keys `marketdata` and `shipdata` |
| `is_beta` | `bool` | If the game is currently in beta | | `is_beta` | `bool` | If the game is currently in beta |
NB: Actually `data` is a custom type, based on `UserDict`, called `CAPIData`, `CAPIData` is a class, which you can `from companion import CAPIDATA`, and is
and has some extra properties. However, these are for **internal use only** based on `UserDict`. The actual data from CAPI queries is thus accessible
at this time, especially as there are some caveats about at least one of them. via python's normal `data['key']` syntax. However, being a class, it can also
have extra properties, such as `source_host`, as shown above. Plugin authors
are free to use *that* property, **but MUST NOT rely on any other extra
properties present in `CAPIData`, they are for internal use only.**
#### CAPI data for Legacy #### CAPI data for Legacy
When CAPI data has been retrieved from the separate CAPI host for the Legacy When CAPI data has been retrieved from the separate CAPI host for the Legacy