5 * HTTP Status codes that the server can send in response to a request, see
6 * rfc2616 section 10.3 for descriptions of each of these.
8 typedef enum EHTTPStatusCode
10 /* Invalid status code (this isn't defined in HTTP, used to indicate unset
13 k_EHTTPStatusCodeInvalid
= 0,
15 /* Informational codes */
16 k_EHTTPStatusCode100Continue
= 100,
17 k_EHTTPStatusCode101SwitchingProtocols
= 101,
20 k_EHTTPStatusCode200OK
= 200,
21 k_EHTTPStatusCode201Created
= 201,
22 k_EHTTPStatusCode202Accepted
= 202,
23 k_EHTTPStatusCode203NonAuthoritative
= 203,
24 k_EHTTPStatusCode204NoContent
= 204,
25 k_EHTTPStatusCode205ResetContent
= 205,
26 k_EHTTPStatusCode206PartialContent
= 206,
28 /* Redirection codes */
29 k_EHTTPStatusCode300MultipleChoices
= 300,
30 k_EHTTPStatusCode301MovedPermanently
= 301,
31 k_EHTTPStatusCode302Found
= 302,
32 k_EHTTPStatusCode303SeeOther
= 303,
33 k_EHTTPStatusCode304NotModified
= 304,
34 k_EHTTPStatusCode305UseProxy
= 305,
36 /* (used in old HTTP spec, now unused in 1.1)
37 k_EHTTPStatusCode306Unused = 306,
40 k_EHTTPStatusCode307TemporaryRedirect
= 307,
43 k_EHTTPStatusCode400BadRequest
= 400,
46 * You probably want 403 or something else. 401 implies you're sending a
47 * WWW-Authenticate header and the client can sent an Authorization header in
50 k_EHTTPStatusCode401Unauthorized
= 401,
52 /* This is reserved for future HTTP specs, not really supported by clients */
53 k_EHTTPStatusCode402PaymentRequired
= 402,
54 k_EHTTPStatusCode403Forbidden
= 403,
55 k_EHTTPStatusCode404NotFound
= 404,
56 k_EHTTPStatusCode405MethodNotAllowed
= 405,
57 k_EHTTPStatusCode406NotAcceptable
= 406,
58 k_EHTTPStatusCode407ProxyAuthRequired
= 407,
59 k_EHTTPStatusCode408RequestTimeout
= 408,
60 k_EHTTPStatusCode409Conflict
= 409,
61 k_EHTTPStatusCode410Gone
= 410,
62 k_EHTTPStatusCode411LengthRequired
= 411,
63 k_EHTTPStatusCode412PreconditionFailed
= 412,
64 k_EHTTPStatusCode413RequestEntityTooLarge
=413,
65 k_EHTTPStatusCode414RequestURITooLong
= 414,
66 k_EHTTPStatusCode415UnsupportedMediaType
=415,
67 k_EHTTPStatusCode416RequestedRangeNotSatisfiable
= 416,
68 k_EHTTPStatusCode417ExpectationFailed
= 417,
70 /* 418 is reserved, so we'll use it to mean unknown */
71 k_EHTTPStatusCode4xxUnknown
= 418,
72 k_EHTTPStatusCode429TooManyRequests
= 429,
73 k_EHTTPStatusCode444ConnectionClosed
= 444, /* nginx only? */
75 /* Server error codes */
76 k_EHTTPStatusCode500InternalServerError
= 500,
77 k_EHTTPStatusCode501NotImplemented
= 501,
78 k_EHTTPStatusCode502BadGateway
= 502,
79 k_EHTTPStatusCode503ServiceUnavailable
= 503,
80 k_EHTTPStatusCode504GatewayTimeout
= 504,
81 k_EHTTPStatusCode505HTTPVersionNotSupported
= 505,
82 k_EHTTPStatusCode5xxUnknown
= 599,
88 k_EHTTPMethodInvalid
= 0,
97 /* The remaining HTTP methods are not yet supported, per rfc2616 section
98 * 5.1.1 only GET and HEAD are required for a compliant general purpose
99 * server. We'll likely add more as we find uses for them.
101 * k_EHTTPMethodTRACE,
102 * k_EHTTPMethodCONNECT
105 typedef enum EHTTPMethod EHTTPMethod
;
107 typedef u32 HTTPRequestHandle
;
109 #ifdef VALVE_CALLBACK_PACK_SMALL
110 #pragma pack( push, 4 )
112 #pragma pack( push, 8 )
115 typedef struct HTTPRequestCompleted_t HTTPRequestCompleted_t
;
116 struct HTTPRequestCompleted_t
118 HTTPRequestHandle m_hRequest
;
119 u64 m_ulContextValue
;
120 steamapi_bool m_bRequestSuccessful
;
121 EHTTPStatusCode m_eStatusCode
;
129 * TODO: Copy steamworks documentation here
132 void *SteamAPI_SteamGameServerHTTP_v003(void);
133 static inline void *SteamAPI_SteamGameServerHTTP(void)
135 return SteamAPI_SteamGameServerHTTP_v003();
139 void *SteamAPI_SteamHTTP_v003(void);
140 static inline void *SteamAPI_SteamHTTP(void)
142 return SteamAPI_SteamHTTP_v003();
145 HTTPRequestHandle
SteamAPI_ISteamHTTP_CreateHTTPRequest(
146 void *self
, EHTTPMethod eHTTPRequestMethod
, const char *pchAbsoluteURL
);
148 steamapi_bool
SteamAPI_ISteamHTTP_SendHTTPRequest( void *self
,
149 HTTPRequestHandle hRequest
, SteamAPICall_t
*pCallHandle
);
151 steamapi_bool
SteamAPI_ISteamHTTP_ReleaseHTTPRequest( void *self
,
152 HTTPRequestHandle hRequest
);
154 steamapi_bool
SteamAPI_ISteamHTTP_GetHTTPResponseBodySize( void *self
,
155 HTTPRequestHandle hRequest
, u32
*unBodySize
);
157 steamapi_bool
SteamAPI_ISteamHTTP_GetHTTPResponseBodyData( void* self
,
158 HTTPRequestHandle hRequest
, u8
*pBodyDataBuffer
, u32 unBufferSize
);