1 #ifndef VG_STEAM_HTTP_H
2 #define VG_STEAM_HTTP_H
7 * HTTP Status codes that the server can send in response to a request, see
8 * rfc2616 section 10.3 for descriptions of each of these.
10 typedef enum EHTTPStatusCode
12 /* Invalid status code (this isn't defined in HTTP, used to indicate unset
15 k_EHTTPStatusCodeInvalid
= 0,
17 /* Informational codes */
18 k_EHTTPStatusCode100Continue
= 100,
19 k_EHTTPStatusCode101SwitchingProtocols
= 101,
22 k_EHTTPStatusCode200OK
= 200,
23 k_EHTTPStatusCode201Created
= 201,
24 k_EHTTPStatusCode202Accepted
= 202,
25 k_EHTTPStatusCode203NonAuthoritative
= 203,
26 k_EHTTPStatusCode204NoContent
= 204,
27 k_EHTTPStatusCode205ResetContent
= 205,
28 k_EHTTPStatusCode206PartialContent
= 206,
30 /* Redirection codes */
31 k_EHTTPStatusCode300MultipleChoices
= 300,
32 k_EHTTPStatusCode301MovedPermanently
= 301,
33 k_EHTTPStatusCode302Found
= 302,
34 k_EHTTPStatusCode303SeeOther
= 303,
35 k_EHTTPStatusCode304NotModified
= 304,
36 k_EHTTPStatusCode305UseProxy
= 305,
38 /* (used in old HTTP spec, now unused in 1.1)
39 k_EHTTPStatusCode306Unused = 306,
42 k_EHTTPStatusCode307TemporaryRedirect
= 307,
45 k_EHTTPStatusCode400BadRequest
= 400,
48 * You probably want 403 or something else. 401 implies you're sending a
49 * WWW-Authenticate header and the client can sent an Authorization header in
52 k_EHTTPStatusCode401Unauthorized
= 401,
54 /* This is reserved for future HTTP specs, not really supported by clients */
55 k_EHTTPStatusCode402PaymentRequired
= 402,
56 k_EHTTPStatusCode403Forbidden
= 403,
57 k_EHTTPStatusCode404NotFound
= 404,
58 k_EHTTPStatusCode405MethodNotAllowed
= 405,
59 k_EHTTPStatusCode406NotAcceptable
= 406,
60 k_EHTTPStatusCode407ProxyAuthRequired
= 407,
61 k_EHTTPStatusCode408RequestTimeout
= 408,
62 k_EHTTPStatusCode409Conflict
= 409,
63 k_EHTTPStatusCode410Gone
= 410,
64 k_EHTTPStatusCode411LengthRequired
= 411,
65 k_EHTTPStatusCode412PreconditionFailed
= 412,
66 k_EHTTPStatusCode413RequestEntityTooLarge
=413,
67 k_EHTTPStatusCode414RequestURITooLong
= 414,
68 k_EHTTPStatusCode415UnsupportedMediaType
=415,
69 k_EHTTPStatusCode416RequestedRangeNotSatisfiable
= 416,
70 k_EHTTPStatusCode417ExpectationFailed
= 417,
72 /* 418 is reserved, so we'll use it to mean unknown */
73 k_EHTTPStatusCode4xxUnknown
= 418,
74 k_EHTTPStatusCode429TooManyRequests
= 429,
75 k_EHTTPStatusCode444ConnectionClosed
= 444, /* nginx only? */
77 /* Server error codes */
78 k_EHTTPStatusCode500InternalServerError
= 500,
79 k_EHTTPStatusCode501NotImplemented
= 501,
80 k_EHTTPStatusCode502BadGateway
= 502,
81 k_EHTTPStatusCode503ServiceUnavailable
= 503,
82 k_EHTTPStatusCode504GatewayTimeout
= 504,
83 k_EHTTPStatusCode505HTTPVersionNotSupported
= 505,
84 k_EHTTPStatusCode5xxUnknown
= 599,
90 k_EHTTPMethodInvalid
= 0,
99 /* The remaining HTTP methods are not yet supported, per rfc2616 section
100 * 5.1.1 only GET and HEAD are required for a compliant general purpose
101 * server. We'll likely add more as we find uses for them.
103 * k_EHTTPMethodTRACE,
104 * k_EHTTPMethodCONNECT
107 typedef enum EHTTPMethod EHTTPMethod
;
109 typedef u32 HTTPRequestHandle
;
111 #ifdef VALVE_CALLBACK_PACK_SMALL
112 #pragma pack( push, 4 )
114 #pragma pack( push, 8 )
117 typedef struct HTTPRequestCompleted_t HTTPRequestCompleted_t
;
118 struct HTTPRequestCompleted_t
120 HTTPRequestHandle m_hRequest
;
121 u64 m_ulContextValue
;
122 steamapi_bool m_bRequestSuccessful
;
123 EHTTPStatusCode m_eStatusCode
;
131 * TODO: Copy steamworks documentation here
134 void *SteamAPI_SteamGameServerHTTP_v003(void);
135 void *SteamAPI_SteamGameServerHTTP(void)
137 return SteamAPI_SteamGameServerHTTP_v003();
141 void *SteamAPI_SteamHTTP_v003(void);
142 void *SteamAPI_SteamHTTP(void)
144 return SteamAPI_SteamHTTP_v003();
147 HTTPRequestHandle
SteamAPI_ISteamHTTP_CreateHTTPRequest(
148 void *self
, EHTTPMethod eHTTPRequestMethod
, const char *pchAbsoluteURL
);
150 steamapi_bool
SteamAPI_ISteamHTTP_SendHTTPRequest( void *self
,
151 HTTPRequestHandle hRequest
, SteamAPICall_t
*pCallHandle
);
153 steamapi_bool
SteamAPI_ISteamHTTP_ReleaseHTTPRequest( void *self
,
154 HTTPRequestHandle hRequest
);
156 steamapi_bool
SteamAPI_ISteamHTTP_GetHTTPResponseBodySize( void *self
,
157 HTTPRequestHandle hRequest
, u32
*unBodySize
);
159 steamapi_bool
SteamAPI_ISteamHTTP_GetHTTPResponseBodyData( void* self
,
160 HTTPRequestHandle hRequest
, u8
*pBodyDataBuffer
, u32 unBufferSize
);
162 #endif /* VG_STEAM_HTTP_H */