rfc7231.c 750 B

1234567891011121314151617181920212223242526272829
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #include "../libnetdata.h"
  3. inline size_t rfc7231_datetime(char *buffer, size_t len, time_t now_t) {
  4. if (unlikely(!buffer || !len))
  5. return 0;
  6. struct tm *tmp, tmbuf;
  7. // Use gmtime_r for UTC time conversion.
  8. tmp = gmtime_r(&now_t, &tmbuf);
  9. if (unlikely(!tmp)) {
  10. buffer[0] = '\0';
  11. return 0;
  12. }
  13. // Format the date and time according to the RFC 7231 format.
  14. size_t ret = strftime(buffer, len, "%a, %d %b %Y %H:%M:%S GMT", tmp);
  15. if (unlikely(ret == 0))
  16. buffer[0] = '\0';
  17. return ret;
  18. }
  19. size_t rfc7231_datetime_ut(char *buffer, size_t len, usec_t now_ut) {
  20. return rfc7231_datetime(buffer, len, (time_t) (now_ut / USEC_PER_SEC));
  21. }