<commit_before>Simple-Web-Server
=================

A very simple, fast, multithreaded, platform independent HTTP and HTTPS server and client library implemented using C++11 and Boost.Asio. Created to be an easy way to make REST resources available from C++ applications. 

See also https://github.com/eidheim/Simple-WebSocket-Server for an easy way to make WebSocket/WebSocket Secure endpoints in C++. 

### Features

* Thread pool
* Platform independent
* HTTPS support
* HTTP persistent connection (for HTTP/1.1)
* Client supports chunked transfer encoding
* Timeouts, if any of Server::timeout_request and Server::timeout_content are >0 (default: Server::timeout_request=5 seconds, and Server::timeout_content=300 seconds)
* Simple way to add REST resources using regex for path, and anonymous functions

###Usage

See http_examples.cpp or https_examples.cpp for example usage. 

See particularly the JSON-POST (using Boost.PropertyTree) and the GET /match/[number] examples, which are most relevant.

### Dependencies

Boost C++ libraries must be installed, go to http://www.boost.org for download and instructions. 

For HTTPS: OpenSSL libraries from https://www.openssl.org are required. 

### Compile and run

Compile with a C++11 compiler supporting regex (for instance g++ 4.9):

#### HTTP

g++ -O3 -std=c++11 -lboost_system http_examples.cpp -o http_examples

Then to run the server and client: ./http_examples

Also, direct your favorite browser to for instance http://localhost:8080/

#### HTTPS

g++ -O3 -std=c++11 -lboost_system -lssl -lcrypto https_examples.cpp -o https_examples

Before running the server, an RSA private key (server.key) and an SSL certificate (server.crt) must be created. Follow, for instance, the instructions given here (for a self-signed certificate): http://www.akadia.com/services/ssh_test_certificate.html

Then to run the server: ./https_examples

Also, direct your favorite browser to for instance https://localhost:8080/
<commit_msg>minor fix<commit_after>Simple-Web-Server
=================

A very simple, fast, multithreaded, platform independent HTTP and HTTPS server and client library implemented using C++11 and Boost.Asio. Created to be an easy way to make REST resources available from C++ applications. 

See also https://github.com/eidheim/Simple-WebSocket-Server for an easy way to make WebSocket/WebSocket Secure endpoints in C++. 

### Features

* Thread pool
* Platform independent
* HTTPS support
* HTTP persistent connection (for HTTP/1.1)
* Client supports chunked transfer encoding
* Timeouts, if any of Server::timeout_request and Server::timeout_content are >0 (default: Server::timeout_request=5 seconds, and Server::timeout_content=300 seconds)
* Simple way to add REST resources using regex for path, and anonymous functions

###Usage

See http_examples.cpp or https_examples.cpp for example usage. 

See particularly the JSON-POST (using Boost.PropertyTree) and the GET /match/[number] examples, which are most relevant.

### Dependencies

Boost C++ libraries must be installed, go to http://www.boost.org for download and instructions. 

For HTTPS: OpenSSL libraries from https://www.openssl.org are required. 

### Compile and run

Compile with a C++11 compiler supporting regex (for instance g++ 4.9):

#### HTTP

g++ -O3 -std=c++11 -lboost_system http_examples.cpp -o http_examples

Then to run the server and client examples: ./http_examples

Also, direct your favorite browser to for instance http://localhost:8080/

#### HTTPS

g++ -O3 -std=c++11 -lboost_system -lssl -lcrypto https_examples.cpp -o https_examples

Before running the server, an RSA private key (server.key) and an SSL certificate (server.crt) must be created. Follow, for instance, the instructions given here (for a self-signed certificate): http://www.akadia.com/services/ssh_test_certificate.html

Then to run the server and client examples: ./https_examples

Also, direct your favorite browser to for instance https://localhost:8080/

{'fraction_non_alphanumeric': 0.09590760733115741, 'fraction_numerical': 0.013557619884509164, 'mean_word_length': 4.841642228739003, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 6, 'lorem ipsum': 0, 'www.': 6, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5650753', 'n_tokens_mistral': 1147, 'n_tokens_neox': 1063, 'n_words': 467}