1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifdef UNSAFE_BUFFERS_BUILD
// TODO(crbug.com/40285824): Remove this and convert code to safer constructs.
#pragma allow_unsafe_buffers
#endif
#include <iostream>
#include "cronet_c.h"
#include "sample_executor.h"
#include "sample_url_request_callback.h"
Cronet_EnginePtr CreateCronetEngine() {
Cronet_EnginePtr cronet_engine = Cronet_Engine_Create();
Cronet_EngineParamsPtr engine_params = Cronet_EngineParams_Create();
Cronet_EngineParams_user_agent_set(engine_params, "CronetSample/1");
Cronet_EngineParams_enable_quic_set(engine_params, true);
Cronet_Engine_StartWithParams(cronet_engine, engine_params);
Cronet_EngineParams_Destroy(engine_params);
return cronet_engine;
}
void PerformRequest(Cronet_EnginePtr cronet_engine,
const std::string& url,
Cronet_ExecutorPtr executor) {
SampleUrlRequestCallback url_request_callback;
Cronet_UrlRequestPtr request = Cronet_UrlRequest_Create();
Cronet_UrlRequestParamsPtr request_params = Cronet_UrlRequestParams_Create();
Cronet_UrlRequestParams_http_method_set(request_params, "GET");
Cronet_UrlRequest_InitWithParams(
request, cronet_engine, url.c_str(), request_params,
url_request_callback.GetUrlRequestCallback(), executor);
Cronet_UrlRequestParams_Destroy(request_params);
Cronet_UrlRequest_Start(request);
url_request_callback.WaitForDone();
Cronet_UrlRequest_Destroy(request);
std::cout << "Response Data:" << std::endl
<< url_request_callback.response_as_string() << std::endl;
}
// Download a resource from the Internet. Optional argument must specify
// a valid URL.
int main(int argc, const char* argv[]) {
std::cout << "Hello from Cronet!\n";
Cronet_EnginePtr cronet_engine = CreateCronetEngine();
std::cout << "Cronet version: "
<< Cronet_Engine_GetVersionString(cronet_engine) << std::endl;
std::string url(argc > 1 ? argv[1] : "https://www.example.com");
std::cout << "URL: " << url << std::endl;
SampleExecutor executor;
PerformRequest(cronet_engine, url, executor.GetExecutor());
Cronet_Engine_Shutdown(cronet_engine);
Cronet_Engine_Destroy(cronet_engine);
return 0;
}
|