Twitch SDK (Internal)
httprequest.h
Go to the documentation of this file.
1 /********************************************************************************************
2 * Twitch Broadcasting SDK
3 *
4 * This software is supplied under the terms of a license agreement with Twitch Interactive, Inc. and
5 * may not be copied or used except in accordance with the terms of that agreement
6 * Copyright (c) 2012-2016 Twitch Interactive, Inc.
7 *********************************************************************************************/
8 
9 #pragma once
10 
11 #include <functional>
12 #include <map>
13 #include <memory>
14 #include <vector>
15 #include <iostream>
16 
19 
20 
21 namespace ttv
22 {
23  class HttpRequest;
24 
26  {
28 
33 
35  };
36 
37  enum
38  {
40  };
41 
42  struct HttpParam
43  {
44  HttpParam(const std::string& name, const std::string& value);
45  HttpParam(const std::string& name, int value);
46 
47  std::string paramName;
48  std::string paramValue;
49  };
50 
51  typedef std::function<bool (uint statusCode, const std::map<std::string, std::string>& headers, void* userData)> HttpRequestHeadersCallback;
52  typedef std::function<void (uint statusCode, const std::vector<char>& body, void* userData)> HttpRequestCallback;
53 
54 
55  void SetHttpRequest(const std::shared_ptr<HttpRequest>& http);
56 
60  std::shared_ptr<HttpRequest> GetHttpRequest();
61 
63 
64  TTV_ErrorCode SendHttpRequest(const std::string& url,
65  const std::vector<HttpParam>& requestHeaders,
66  const uint8_t* requestBody,
67  size_t requestBodySize,
68  HttpRequestType httpReqType,
69  uint timeOutInSecs,
70  HttpRequestHeadersCallback headersCallback,
71  HttpRequestCallback responseCallback,
72  void* userData);
73 
74  TTV_ErrorCode SendHttpRequest(const std::string& url,
75  const std::vector<HttpParam>& requestHeaders,
76  const uint8_t* requestBody,
77  size_t requestBodySize,
78  HttpRequestType httpReqType,
79  uint timeOutInSecs,
80  uint numRetries,
81  HttpRequestHeadersCallback headersCallback,
82  HttpRequestCallback responseCallback,
83  void* userData);
84 
85  TTV_ErrorCode SendHttpRequest(const std::string& url,
86  const std::vector<HttpParam>& urlParams,
87  const std::vector<HttpParam>& requestHeaders,
88  const uint8_t* requestBody,
89  size_t requestBodySize,
90  HttpRequestType httpReqType,
91  uint timeOutInSecs,
92  uint numRetries,
93  HttpRequestHeadersCallback headersCallback,
94  HttpRequestCallback responseCallback,
95  void* userData);
96 
98 
102  bool IsTwitchEndpoint(const std::string& url);
103 
105  {
106  public:
107  HttpRequest();
108  virtual ~HttpRequest();
109 
110  // Must be called once by each thread that will be making HTTP requests
111  virtual TTV_ErrorCode ThreadInit();
112 
113  // Handles automatic retries of failed requests
114  virtual TTV_ErrorCode SendHttpRequest(const std::string& url,
115  const std::vector<HttpParam>& requestHeaders,
116  const uint8_t* requestBody,
117  size_t requestBodySize,
118  HttpRequestType httpReqType,
119  uint timeOutInSecs,
120  uint numRetries,
121  HttpRequestHeadersCallback headersCallback,
122  HttpRequestCallback responseCallback,
123  void* userData);
124 
125  virtual TTV_ErrorCode ThreadShutdown();
126 
127  virtual TTV_ErrorCode SendHttpRequest(const std::string& url,
128  const std::vector<HttpParam>& requestHeaders,
129  const uint8_t* requestBody,
130  size_t requestBodySize,
131  HttpRequestType httpReqType,
132  uint timeOutInSecs,
133  HttpRequestHeadersCallback headersCallback,
134  HttpRequestCallback responseCallback,
135  void* userData) = 0;
136  };
137 }
Definition: httprequest.h:29
Definition: httprequest.h:27
HttpRequestType
Definition: httprequest.h:25
void SetHttpRequest(const std::shared_ptr< HttpRequest > &http)
std::string paramValue
Definition: httprequest.h:48
TTV_ErrorCode HttpThreadShutdown()
Definition: httprequest.h:104
bool IsTwitchEndpoint(const std::string &url)
TTV_ErrorCode HttpThreadInit()
std::string paramName
Definition: httprequest.h:47
HttpParam(const std::string &name, const std::string &value)
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
Definition: httprequest.h:39
std::shared_ptr< HttpRequest > GetHttpRequest()
Definition: httprequest.h:31
uint32_t TTV_ErrorCode
Definition: errortypes.h:30
Definition: httprequest.h:32
std::function< bool(uint statusCode, const std::map< std::string, std::string > &headers, void *userData)> HttpRequestHeadersCallback
Definition: httprequest.h:51
Definition: httprequest.h:30
unsigned int uint
Definition: coretypes.h:18
std::function< void(uint statusCode, const std::vector< char > &body, void *userData)> HttpRequestCallback
Definition: httprequest.h:52
Definition: httprequest.h:34
Definition: httprequest.h:42
TTV_ErrorCode SendHttpRequest(const std::string &url, const std::vector< HttpParam > &requestHeaders, const uint8_t *requestBody, size_t requestBodySize, HttpRequestType httpReqType, uint timeOutInSecs, HttpRequestHeadersCallback headersCallback, HttpRequestCallback responseCallback, void *userData)