diff --git a/CHANGELOG.md b/CHANGELOG.md index f73267f..9b2cc87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## 0.7.9 (2024-04-10) + +### Changes + +- Add `HeadConfig` API. + + ## 0.7.8 (2024-03-19) ### Changes diff --git a/python/mujinwebstackclient/version.py b/python/mujinwebstackclient/version.py index b443574..b4474cb 100644 --- a/python/mujinwebstackclient/version.py +++ b/python/mujinwebstackclient/version.py @@ -1,4 +1,4 @@ -__version__ = '0.7.8' +__version__ = '0.7.9' # Do not forget to update CHANGELOG.md diff --git a/python/mujinwebstackclient/webstackclient.py b/python/mujinwebstackclient/webstackclient.py index 8b2155f..e701f0a 100644 --- a/python/mujinwebstackclient/webstackclient.py +++ b/python/mujinwebstackclient/webstackclient.py @@ -952,6 +952,21 @@ def GetConfig(self, filename=None, timeout=5): raise WebstackClientError(_('Failed to retrieve configuration from controller, status code is %d') % response.status_code, response=response) return response.json() + def HeadConfig(self, filename, timeout=5): + """Perform a HEAD operation on the given configuration filename to retrieve metadata. + + :return: A dict containing "modified (datetime.datetime)" and "size (int)" + """ + path = '/config/' + if filename: + path = '/config/%s/' % filename + response = self._webclient.Request('HEAD', path, timeout=timeout) + if response.status_code != 200: + raise WebstackClientError(_('Failed to check configuration existence, status code is %d') % response.status_code, response=response) + return { + 'modified': datetime.datetime(*parsedate(response.headers['Last-Modified'])[:6]), + } + def SetConfig(self, data, filename=None, timeout=5): """Set configuration file content to controller.