Skip to content

Commit afd6d5f

Browse files
committed
Removed compress parameter and added compress method on client
1 parent e5827ad commit afd6d5f

File tree

3 files changed

+77
-94
lines changed

3 files changed

+77
-94
lines changed

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,13 @@ The server applies gzip compression to the following MIME type contents:
423423
* application/xml
424424
* application/xhtml+xml
425425

426+
### Compress content on client
427+
428+
```c++
429+
cli.compress(true);
430+
res = cli.Post("/resource/foo", "...", "text/plain");
431+
```
432+
426433
NOTE
427434
----
428435

httplib.h

Lines changed: 62 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -657,78 +657,63 @@ class Client {
657657
std::shared_ptr<Response> Head(const char *path, const Headers &headers);
658658

659659
std::shared_ptr<Response> Post(const char *path, const std::string &body,
660-
const char *content_type,
661-
bool compress = false);
660+
const char *content_type);
662661

663662
std::shared_ptr<Response> Post(const char *path, const Headers &headers,
664663
const std::string &body,
665-
const char *content_type,
666-
bool compress = false);
664+
const char *content_type);
667665

668666
std::shared_ptr<Response> Post(const char *path, size_t content_length,
669667
ContentProvider content_provider,
670-
const char *content_type,
671-
bool compress = false);
668+
const char *content_type);
672669

673670
std::shared_ptr<Response> Post(const char *path, const Headers &headers,
674671
size_t content_length,
675672
ContentProvider content_provider,
676-
const char *content_type,
677-
bool compress = false);
673+
const char *content_type);
678674

679-
std::shared_ptr<Response> Post(const char *path, const Params &params,
680-
bool compress = false);
675+
std::shared_ptr<Response> Post(const char *path, const Params &params);
681676

682677
std::shared_ptr<Response> Post(const char *path, const Headers &headers,
683-
const Params &params, bool compress = false);
678+
const Params &params);
684679

685680
std::shared_ptr<Response> Post(const char *path,
686-
const MultipartFormDataItems &items,
687-
bool compress = false);
681+
const MultipartFormDataItems &items);
688682

689683
std::shared_ptr<Response> Post(const char *path, const Headers &headers,
690-
const MultipartFormDataItems &items,
691-
bool compress = false);
684+
const MultipartFormDataItems &items);
692685

693686
std::shared_ptr<Response> Put(const char *path, const std::string &body,
694-
const char *content_type,
695-
bool compress = false);
687+
const char *content_type);
696688

697689
std::shared_ptr<Response> Put(const char *path, const Headers &headers,
698690
const std::string &body,
699-
const char *content_type,
700-
bool compress = false);
691+
const char *content_type);
701692

702693
std::shared_ptr<Response> Put(const char *path, size_t content_length,
703694
ContentProvider content_provider,
704-
const char *content_type,
705-
bool compress = false);
695+
const char *content_type);
706696

707697
std::shared_ptr<Response> Put(const char *path, const Headers &headers,
708698
size_t content_length,
709699
ContentProvider content_provider,
710-
const char *content_type,
711-
bool compress = false);
700+
const char *content_type);
712701

713702
std::shared_ptr<Response> Patch(const char *path, const std::string &body,
714-
const char *content_type,
715-
bool compress = false);
703+
const char *content_type);
716704

717705
std::shared_ptr<Response> Patch(const char *path, const Headers &headers,
718706
const std::string &body,
719-
const char *content_type,
720-
bool compress = false);
707+
const char *content_type);
721708

722709
std::shared_ptr<Response> Patch(const char *path, size_t content_length,
723710
ContentProvider content_provider,
724-
const char *content_type,
725-
bool compress = false);
711+
const char *content_type);
726712

727713
std::shared_ptr<Response> Patch(const char *path, const Headers &headers,
728714
size_t content_length,
729715
ContentProvider content_provider,
730-
const char *content_type,
731-
bool compress = false);
716+
const char *content_type);
732717

733718
std::shared_ptr<Response> Delete(const char *path);
734719

@@ -754,9 +739,11 @@ class Client {
754739

755740
void set_read_timeout(time_t sec, time_t usec);
756741

742+
void set_auth(const char *username, const char *password);
743+
757744
void follow_location(bool on);
758745

759-
void set_auth(const char *username, const char *password);
746+
void compress(bool on);
760747

761748
protected:
762749
bool process_request(Stream &strm, const Request &req, Response &res,
@@ -769,9 +756,10 @@ class Client {
769756
size_t keep_alive_max_count_;
770757
time_t read_timeout_sec_;
771758
time_t read_timeout_usec_;
772-
size_t follow_location_;
759+
bool follow_location_;
773760
std::string username_;
774761
std::string password_;
762+
bool compress_;
775763

776764
private:
777765
socket_t create_client_socket() const;
@@ -784,7 +772,7 @@ class Client {
784772
const Headers &headers, const std::string &body,
785773
size_t content_length,
786774
ContentProvider content_provider,
787-
const char *content_type, bool compress);
775+
const char *content_type);
788776

789777
virtual bool process_and_close_socket(
790778
socket_t sock, size_t request_count,
@@ -3331,7 +3319,8 @@ inline Client::Client(const char *host, int port, time_t timeout_sec)
33313319
keep_alive_max_count_(CPPHTTPLIB_KEEPALIVE_MAX_COUNT),
33323320
read_timeout_sec_(CPPHTTPLIB_READ_TIMEOUT_SECOND),
33333321
read_timeout_usec_(CPPHTTPLIB_READ_TIMEOUT_USECOND),
3334-
follow_location_(false) {}
3322+
follow_location_(false),
3323+
compress_(false) {}
33353324

33363325
inline Client::~Client() {}
33373326

@@ -3570,11 +3559,7 @@ inline void Client::write_request(Stream &strm, const Request &req,
35703559
inline std::shared_ptr<Response> Client::send_with_content_provider(
35713560
const char *method, const char *path, const Headers &headers,
35723561
const std::string &body, size_t content_length,
3573-
ContentProvider content_provider, const char *content_type, bool compress) {
3574-
#ifndef CPPHTTPLIB_ZLIB_SUPPORT
3575-
(void)compress;
3576-
#endif
3577-
3562+
ContentProvider content_provider, const char *content_type) {
35783563
Request req;
35793564
req.method = method;
35803565
req.headers = headers;
@@ -3583,7 +3568,7 @@ inline std::shared_ptr<Response> Client::send_with_content_provider(
35833568
req.headers.emplace("Content-Type", content_type);
35843569

35853570
#ifdef CPPHTTPLIB_ZLIB_SUPPORT
3586-
if (compress) {
3571+
if (compress_) {
35873572
if (content_provider) {
35883573
size_t offset = 0;
35893574
while (offset < content_length) {
@@ -3771,45 +3756,40 @@ inline std::shared_ptr<Response> Client::Head(const char *path,
37713756

37723757
inline std::shared_ptr<Response> Client::Post(const char *path,
37733758
const std::string &body,
3774-
const char *content_type,
3775-
bool compress) {
3776-
return Post(path, Headers(), body, content_type, compress);
3759+
const char *content_type) {
3760+
return Post(path, Headers(), body, content_type);
37773761
}
37783762

37793763
inline std::shared_ptr<Response>
37803764
Client::Post(const char *path, const Headers &headers, const std::string &body,
3781-
const char *content_type, bool compress) {
3765+
const char *content_type) {
37823766
return send_with_content_provider("POST", path, headers, body, 0, nullptr,
3783-
content_type, compress);
3767+
content_type);
37843768
}
37853769

37863770
inline std::shared_ptr<Response>
3787-
Client::Post(const char *path, const Params &params, bool compress) {
3788-
return Post(path, Headers(), params, compress);
3771+
Client::Post(const char *path, const Params &params) {
3772+
return Post(path, Headers(), params);
37893773
}
37903774

37913775
inline std::shared_ptr<Response> Client::Post(const char *path,
37923776
size_t content_length,
37933777
ContentProvider content_provider,
3794-
const char *content_type,
3795-
bool compress) {
3796-
return Post(path, Headers(), content_length, content_provider, content_type,
3797-
compress);
3778+
const char *content_type) {
3779+
return Post(path, Headers(), content_length, content_provider, content_type);
37983780
}
37993781

38003782
inline std::shared_ptr<Response>
38013783
Client::Post(const char *path, const Headers &headers, size_t content_length,
3802-
ContentProvider content_provider, const char *content_type,
3803-
bool compress) {
3784+
ContentProvider content_provider, const char *content_type) {
38043785
return send_with_content_provider("POST", path, headers, std::string(),
38053786
content_length, content_provider,
3806-
content_type, compress);
3787+
content_type);
38073788
}
38083789

38093790
inline std::shared_ptr<Response> Client::Post(const char *path,
38103791
const Headers &headers,
3811-
const Params &params,
3812-
bool compress) {
3792+
const Params &params) {
38133793
std::string query;
38143794
for (auto it = params.begin(); it != params.end(); ++it) {
38153795
if (it != params.begin()) { query += "&"; }
@@ -3818,19 +3798,17 @@ inline std::shared_ptr<Response> Client::Post(const char *path,
38183798
query += detail::encode_url(it->second);
38193799
}
38203800

3821-
return Post(path, headers, query, "application/x-www-form-urlencoded",
3822-
compress);
3801+
return Post(path, headers, query, "application/x-www-form-urlencoded");
38233802
}
38243803

38253804
inline std::shared_ptr<Response>
3826-
Client::Post(const char *path, const MultipartFormDataItems &items,
3827-
bool compress) {
3828-
return Post(path, Headers(), items, compress);
3805+
Client::Post(const char *path, const MultipartFormDataItems &items) {
3806+
return Post(path, Headers(), items);
38293807
}
38303808

38313809
inline std::shared_ptr<Response>
38323810
Client::Post(const char *path, const Headers &headers,
3833-
const MultipartFormDataItems &items, bool compress) {
3811+
const MultipartFormDataItems &items) {
38343812
auto boundary = detail::make_multipart_data_boundary();
38353813

38363814
std::string body;
@@ -3852,71 +3830,63 @@ Client::Post(const char *path, const Headers &headers,
38523830
body += "--" + boundary + "--\r\n";
38533831

38543832
std::string content_type = "multipart/form-data; boundary=" + boundary;
3855-
return Post(path, headers, body, content_type.c_str(), compress);
3833+
return Post(path, headers, body, content_type.c_str());
38563834
}
38573835

38583836
inline std::shared_ptr<Response> Client::Put(const char *path,
38593837
const std::string &body,
3860-
const char *content_type,
3861-
bool compress) {
3862-
return Put(path, Headers(), body, content_type, compress);
3838+
const char *content_type) {
3839+
return Put(path, Headers(), body, content_type);
38633840
}
38643841

38653842
inline std::shared_ptr<Response>
38663843
Client::Put(const char *path, const Headers &headers, const std::string &body,
3867-
const char *content_type, bool compress) {
3844+
const char *content_type) {
38683845
return send_with_content_provider("PUT", path, headers, body, 0, nullptr,
3869-
content_type, compress);
3846+
content_type);
38703847
}
38713848

38723849
inline std::shared_ptr<Response> Client::Put(const char *path,
38733850
size_t content_length,
38743851
ContentProvider content_provider,
3875-
const char *content_type,
3876-
bool compress) {
3877-
return Put(path, Headers(), content_length, content_provider, content_type,
3878-
compress);
3852+
const char *content_type) {
3853+
return Put(path, Headers(), content_length, content_provider, content_type);
38793854
}
38803855

38813856
inline std::shared_ptr<Response>
38823857
Client::Put(const char *path, const Headers &headers, size_t content_length,
3883-
ContentProvider content_provider, const char *content_type,
3884-
bool compress) {
3858+
ContentProvider content_provider, const char *content_type) {
38853859
return send_with_content_provider("PUT", path, headers, std::string(),
38863860
content_length, content_provider,
3887-
content_type, compress);
3861+
content_type);
38883862
}
38893863

38903864
inline std::shared_ptr<Response> Client::Patch(const char *path,
38913865
const std::string &body,
3892-
const char *content_type,
3893-
bool compress) {
3894-
return Patch(path, Headers(), body, content_type, compress);
3866+
const char *content_type) {
3867+
return Patch(path, Headers(), body, content_type);
38953868
}
38963869

38973870
inline std::shared_ptr<Response>
38983871
Client::Patch(const char *path, const Headers &headers, const std::string &body,
3899-
const char *content_type, bool compress) {
3872+
const char *content_type) {
39003873
return send_with_content_provider("PATCH", path, headers, body, 0, nullptr,
3901-
content_type, compress);
3874+
content_type);
39023875
}
39033876

39043877
inline std::shared_ptr<Response> Client::Patch(const char *path,
39053878
size_t content_length,
39063879
ContentProvider content_provider,
3907-
const char *content_type,
3908-
bool compress) {
3909-
return Patch(path, Headers(), content_length, content_provider, content_type,
3910-
compress);
3880+
const char *content_type) {
3881+
return Patch(path, Headers(), content_length, content_provider, content_type);
39113882
}
39123883

39133884
inline std::shared_ptr<Response>
39143885
Client::Patch(const char *path, const Headers &headers, size_t content_length,
3915-
ContentProvider content_provider, const char *content_type,
3916-
bool compress) {
3886+
ContentProvider content_provider, const char *content_type) {
39173887
return send_with_content_provider("PATCH", path, headers, std::string(),
39183888
content_length, content_provider,
3919-
content_type, compress);
3889+
content_type);
39203890
}
39213891

39223892
inline std::shared_ptr<Response> Client::Delete(const char *path) {
@@ -3976,13 +3946,15 @@ inline void Client::set_read_timeout(time_t sec, time_t usec) {
39763946
read_timeout_usec_ = usec;
39773947
}
39783948

3979-
inline void Client::follow_location(bool on) { follow_location_ = on; }
3980-
39813949
inline void Client::set_auth(const char *username, const char *password) {
39823950
username_ = username;
39833951
password_ = password;
39843952
}
39853953

3954+
inline void Client::follow_location(bool on) { follow_location_ = on; }
3955+
3956+
inline void Client::compress(bool on) { compress_ = on; }
3957+
39863958
/*
39873959
* SSL Implementation
39883960
*/

0 commit comments

Comments
 (0)