This repository has been archived on 2022-08-04. You can view files and clone it, but cannot push or open issues or pull requests.
twtxt-registry-client/twtxt_registry_client/client.py

81 lines
2.3 KiB
Python
Raw Normal View History

2019-09-02 20:19:40 +00:00
import urllib
import requests
from twtxt.config import Config
2019-09-02 20:19:40 +00:00
class RegistryClient(object):
def __init__(self, registry_url, insecure=False, disclose_identity=None):
2019-09-02 20:19:40 +00:00
self.registry_url = registry_url
self.session = requests.Session()
self.session.verify = not insecure
2019-09-02 20:19:40 +00:00
from twtxt_registry_client import __version__
if disclose_identity or disclose_identity is None:
try:
config = Config.discover()
except ValueError:
disclose_identity = False
else:
disclose_identity = config.disclose_identity
if disclose_identity:
user_agent = 'twtxt-registry/{} (+{}; @{})'.format(
__version__,
config.twturl,
config.nick,
)
else:
user_agent = 'twtxt-registry/{}'.format(__version__)
self.session.headers['User-Agent'] = user_agent
2019-09-02 20:19:40 +00:00
def request(self, method, endpoint, *, format='plain', **params):
resp = method(
'/'.join([self.registry_url, format, endpoint]),
# Ignore parameters with None values
params={k: v for k, v in params.items() if v},
)
resp.raise_for_status()
return resp
def get(self, *args, **kwargs):
return self.request(self.session.get, *args, **kwargs)
2019-09-02 20:19:40 +00:00
def post(self, *args, **kwargs):
return self.request(self.session.post, *args, **kwargs)
2019-09-02 20:19:40 +00:00
def register(self, nickname, url, *, format='plain'):
return self.post(
'users',
format=format,
nickname=nickname,
url=url,
)
def list_users(self, *, q=None, format='plain'):
return self.get(
'users',
q=q,
format=format,
)
def list_tweets(self, *, q=None, format='plain'):
return self.get(
'tweets',
q=q,
format=format,
)
def list_mentions(self, url, *, format='plain'):
return self.get(
'mentions',
url=url,
format=format,
)
def list_tag_tweets(self, name, *, format='plain'):
return self.get(
2019-09-23 19:00:19 +00:00
'tags/{}'.format(urllib.parse.quote(name)),
2019-09-02 20:19:40 +00:00
format=format,
)