/* ============================================================================= * httpapi.h - HTTP/1.1 POST 요청 작성 및 전송 (raw-body 서명 포함) * * RPi 대응: sht30_monitor.py post_reading() * 의 requests.post + 재시도. 서명은 X-Signature 헤더로 전송한다. * ===========================================================================*/ #ifndef HTTPAPI_H #define HTTPAPI_H #include #include #include "transport.h" /* POST 요청 문자열을 out 에 작성한다(본문 포함). 반환: 길이 또는 -1(버퍼 부족). * sig_hex 는 X-Signature 헤더 값(sig_raw_body 결과). */ int http_build_post(char *out, size_t cap, const char *host, const char *path, const char *device_id, const char *sig_hex, const char *body); /* 응답 버퍼에서 HTTP 상태 코드를 파싱한다. 반환: 코드(예 200) 또는 -1. */ int http_parse_status(const uint8_t *resp, size_t len); /* 한 번의 POST 시도: 서명 -> 요청 작성 -> connect/send/recv -> 상태 파싱 -> close. * 반환: HTTP 상태 코드(>0) 또는 음수(전송 계층 오류). */ int api_post_once(transport_t *t, const char *host, uint16_t port, const char *path, const char *device_id, const char *api_key, const char *body, uint32_t timeout_ms); #endif /* HTTPAPI_H */