|
|
||
|---|---|---|
| awc | ||
| examples | ||
| scripts | ||
| .editorconfig | ||
| .gitignore | ||
| LICENSE | ||
| MANIFEST.in | ||
| pyproject.toml | ||
| README.md | ||
| setup.cfg | ||
| tox.ini | ||
awc
ari-web comments ( awc ) API wrapper
what
this libarary is a wrapper for https://server.ari-web.xyz/ API to help you manage, query and edit content using it
awc wraps pypika for sql queries and in sql.helpers you can access
some pre-made SQL queries, i suggest you use pypika for all ( or at least
most ) sql queries, reason being that manually writing them is
fairly insecure, especially with concat and f-strings
examples
see the examples folder
installation
python3 -m pip install --user awc
or ( in the cloned repo dir )
python3 -m pip install -e .
-e is for editable, you can also leave it out if you
wont be editing the library
intro
awc is a synchronous library wrapping https://server.ari-web.xyz/ API, that includes
wrappers for all known endpoints ( see https://server.ari-web.xyz/git ) and an interface
to use custom endpoints using Awc.{request, get, post} APIs
provided packages :
awc-- base interface for the API ( required forawc.Awcinterface so other helpers could use it )awc.api-- wrappers for general APIs ( signatures are(awc: awc.Awc, ...) -> typing.Any)awc.const-- includes required constants for the library and you to use- * note :
iprefers to a SHA256 hash of an IP, not an actual IP
- * note :
awc.exc-- custom exceptionsawc.sql-- SQL database definitions, wrappers around pypikaawc.sql.helpers-- SQL API helpers, pre-made SQL queries
awc.util-- utilitiesawc.wrn-- custom warnings
it all starts from creating an instance of awc.Awc object, which is basically
a wrapper around furl.furl ( a parsed instance url ) and requests.Session
( to make requests to API endpoints ), you instantiate it like this :
api: awc.Awc = awc.Awc("https://some-instance.org/", "optional api key", rate_limit_wait)
rate_limit_wait is how many seconds should the requester wait if its rate limited ( default value is 5 )
example :
# will sleep 2 seconds if it gets rate limited
api: awc.Awc = awc.Awc("https://google.com/", "HIHIUHIyhu9f839uf9hiuh(U()I*)989hIOUjhfew", 2)
after that you are free to use the interface, make requests using the provided requester functions,
get API urls ( api["some-api-endpoint"] => https://google.com/some-api-endpoint ) and use the
provided library functions, wrappers and abstractions
also, a note : not all library functions will work if you dont have an API key, awc.Awc.require_key
decorator is used on all functions that require an API key to work, on no api key it will raise
awc.exc.NoAPIKeyError with called function name being the error message