MCPcopy Create free account
hub / github.com/Pagghiu/SaneCppLibraries / formatHttpDate

Method formatHttpDate

Libraries/Http/HttpAsyncFileServer.cpp:809–840  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

807}
808
809Result HttpAsyncFileServer::Internal::formatHttpDate(int64_t millisecondsSinceEpoch, char* buffer, size_t bufferSize,
810 size_t& outLength)
811{
812 const time_t seconds = static_cast<time_t>(millisecondsSinceEpoch / 1000);
813 struct tm parsedTm;
814#if SC_PLATFORM_WINDOWS
815 if (_gmtime64_s(&parsedTm, &seconds) != 0)
816 {
817 return Result::Error("Failed to convert time");
818 }
819#else
820 if (gmtime_r(&seconds, &parsedTm) == nullptr)
821 {
822 return Result::Error("Failed to convert time");
823 }
824#endif
825
826 // Format as HTTP date: "Wed, 21 Oct 2015 07:28:00 GMT"
827 const char* days[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
828 const char* months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
829
830 outLength = static_cast<size_t>(
831 snprintf(buffer, bufferSize, "%s, %02d %s %04d %02d:%02d:%02d GMT", days[parsedTm.tm_wday], parsedTm.tm_mday,
832 months[parsedTm.tm_mon], parsedTm.tm_year + 1900, parsedTm.tm_hour, parsedTm.tm_min, parsedTm.tm_sec));
833
834 if (outLength == 0 || outLength >= bufferSize)
835 {
836 return Result::Error("Failed to format time");
837 }
838
839 return Result(true);
840}
841
842Result HttpAsyncFileServer::Internal::formatContentRange(const ByteRange& range, size_t fileSize, char* buffer,
843 size_t bufferSize, size_t& outLength)

Callers

nothing calls this directly

Calls 2

ErrorEnum · 0.50
ResultClass · 0.50

Tested by

no test coverage detected