From f05dfb702726c4fdd49b06926eeca78a6f1a0012 Mon Sep 17 00:00:00 2001 From: Julian Rother <julian@jrother.eu> Date: Wed, 28 Jul 2021 15:20:17 +0200 Subject: [PATCH] Added http request caching with cachecontrol --- config.json | 3 ++- requirements.txt | 2 ++ server.py | 8 +++++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/config.json b/config.json index ed8458c..e04452f 100644 --- a/config.json +++ b/config.json @@ -3,5 +3,6 @@ "bind_password": "thisisthebindpassword", "api_baseurl": "http://localhost:5000/api/v1", "api_key": "secretapikey", - "listen_addr": "127.0.0.1:3389" + "listen_addr": "127.0.0.1:3389", + "cache_ttl": 60 } diff --git a/requirements.txt b/requirements.txt index 0091a34..b636ab0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,4 @@ --extra-index-url https://git.cccv.de/api/v4/projects/220/packages/pypi/simple ldapserver==0.0.1.dev3 + +CacheControl diff --git a/server.py b/server.py index 6a53bf5..99257bc 100644 --- a/server.py +++ b/server.py @@ -2,6 +2,8 @@ import sys import json import socketserver import requests +from cachecontrol import CacheControl +from cachecontrol.heuristics import ExpiresAfter from ldapserver import SimpleLDAPRequestHandler from ldapserver.dn import DN, RDN @@ -12,10 +14,10 @@ from ldapserver.exceptions import LDAPInvalidCredentials from ldapserver.schema import RFC2307BIS_SUBSCHEMA class UffdAPI: - def __init__(self, baseurl, key): + def __init__(self, baseurl, key, cache_ttl=60): self.baseurl = baseurl self.key = key - self.session = requests.Session() + self.session = CacheControl(requests.Session(), heuristic=ExpiresAfter(seconds=cache_ttl)) self.session.headers['Authorization'] = 'Bearer '+self.key def get(self, endpoint, **kwargs): @@ -191,7 +193,7 @@ class RequestHandler(SimpleLDAPRequestHandler): def main(config): dn_base = DN(config['dn_base']) - api = UffdAPI(config['api_baseurl'], config['api_key']) + api = UffdAPI(config['api_baseurl'], config['api_key'], config.get('cache_ttl', 60)) user_directory = UserDirectory(api, dn_base) group_directory = GroupDirectory(api, dn_base) -- GitLab