Commit Graph

647 Commits

Author SHA1 Message Date
The-EDev
155cf759eb
fixed issue where absolute unix paths were not sanitized 2022-02-08 19:11:46 +03:00
Vhuynh25
c44fec82bf
added space to match clang format 2022-02-06 11:58:41 -08:00
The-EDev
175b004c26
code formatting (also disabled formatting where not applicable) 2022-02-06 22:29:46 +03:00
The-EDev
75b100527f
Merge branch 'refs/heads/master' into parser_optimization 2022-02-05 18:35:01 +03:00
The-EDev
4cdde73388
Optimized HTTP parser
Also (likely) fixed problem with streaming without keeping connection
alive
Also fixed problem with multipart hanging on request
Also updated TODO entries to indicate Writer
2022-02-05 18:15:19 +03:00
Vhuynh25
781a40bee1
fixed clang format 2022-02-03 09:07:54 -08:00
Vladislav Oleshko
5d6db06706 Add local middleware after handlers to request handler 2022-02-02 17:37:19 +03:00
Vien Huynh
c21ae7ea3e change NaN output warning message 2022-02-01 16:40:07 -05:00
Vien Huynh
a134e2b9ff fixed NaN handling errors 2022-02-01 15:31:09 -05:00
Vladislav Oleshko
69e9ad9c1e Run clang format 2022-02-01 23:21:07 +03:00
Vladislav Oleshko
e60714c0b2 Separate middleware for handlers 2022-02-01 22:49:41 +03:00
Vien Huynh
9af906dc21 fixed JSON outputting NaN and infinite values 2022-01-30 23:43:30 -05:00
Farook Al-Sammarraie
9689688193
Merge branch 'master' into json-crash 2022-01-29 11:39:10 +03:00
Thomas Neumann
3569c93984 defend against excessive recursion in json::load
Passing a deeply nested JSON structure to json::load leads to a crash
due to stack overflow. We handle this now gracefully by limiting the
maximum nesting depth to 10,000.

Test case:

https://github.com/nst/JSONTestSuite/blob/master/test_parsing/n_structure_100000_opening_arrays.json
2022-01-25 08:48:36 +01:00
Thomas Neumann
2a77083524 fix const correctness in template_t
Without locking we can safely share only const objects between threads.
crow::mustache::template_t will typically be loaded once and then
reused many times across threads. Unfortunately the render() method
was not marked as const, even though it is const is practice. This commit
adds the missing const annotations to the methods involved.
2022-01-24 20:41:29 +01:00
Thomas Neumann
74e5fa8c87 improve sanitize_filename
The old implementation allocated a new string for every invocation, and
repeatedly scanned the string for occurences of the various Windows device
names. This commits resizes the original string instead if needed, and
detects all devices with a single pass.
2022-01-24 08:08:20 +01:00
Thomas Neumann
15085a9f95 avoid memory allocation in base64decode
Every single call to base64decode allocates a mapping table for all
base64 characters. This is quite wasteful, as the map is in fact static.
We could use a static variable here, but that would have unpleasant consequences
if we ever encounter input with non-valid base64 characters (which
implicitly modifies the map).

The number of character ranges for base64 is quite low (3, plus 4 exceptions),
thus we can simply check that explicitly in code instead of using a dynamic hash table.
2022-01-24 07:24:34 +01:00
The-EDev
e688cbd18e
Fixed another vulnerability in mustache file loading
and made the file sanitizer a copy-less function
2022-01-11 21:48:51 +03:00
The-EDev
0a16021442
Fix vulnrabilities in mustache and static 2022-01-11 20:27:41 +03:00
The-EDev
7aee13eee9
Changed the way concurrency is used
(it actually reflects the thread count properly)
2021-12-23 05:39:39 +03:00
The-EDev
77758e6241
Have concurrency represent the actual number threads used 2021-12-20 11:04:55 +03:00
Farook Al-Sammarraie
fa77468a88
Formatting 2021-12-17 09:45:50 +03:00
Farook Al-Sammarraie
0ef48e82bb
Fixed scoping issue
introduced by initializing `execute_result`
2021-12-17 09:30:58 +03:00
Farook Al-Sammarraie
790e34cea8
Merge branch 'master' into mustache_lambdas 2021-12-17 09:08:24 +03:00
Farook Al-Sammarraie
cca1d54ce5
took repeated code out of the if else statement 2021-12-17 09:07:46 +03:00
Farook Al-Sammarraie
ddc1f18a1e
Merge branch 'master' into issue-302 2021-12-17 08:11:57 +03:00
Mosolov Sergey
d59cda5677 Fixes issue 302
https://github.com/CrowCpp/Crow/issues/302
Escape only the invisible characters from 0 to 31 inclusive
Motivation: do not escape UTF8 encoding bytes
2021-12-17 08:47:00 +04:00
Navid Jalali
8de7ec2123 Missing inline specifier in http_status_str function definition fixed 2021-12-16 19:41:03 +03:30
Farook Al-Sammarraie
97baca78da
Merge branch 'master' into parser_upgrade 2021-12-16 12:53:24 +03:00
The-EDev
f6fd7dc85d
formatting, missing newline fixed 2021-12-11 02:38:30 +03:00
The-EDev
228e61d150
Added mustache lambda expansion 2021-12-10 05:17:25 +03:00
The-EDev
a1a4169d92
merge branch master 2021-12-10 05:12:24 +03:00
The-EDev
14acb50030
fixed server_ name 2021-12-08 19:57:10 +03:00
The-EDev
13768371a9
Fixed problems with signals 2021-12-08 05:21:03 +03:00
The-EDev
e110cf4856
upgraded parser from 2.3.0 to 2.9.4 2021-12-07 22:21:33 +03:00
Maxime BELUGUET
a997c2b69f Formatting 2021-12-07 14:15:11 +01:00
Maxime BELUGUET
dea78e02a0
Merge branch 'master' into master 2021-12-07 14:12:29 +01:00
Maxime BELUGUET
95083c1c9e Improve pick_io_service_idx 2021-12-07 11:06:18 +01:00
Maxime BELUGUET
874b4d2da0
Apply suggestions from code review
Add debug verbosity

Co-authored-by: Farook Al-Sammarraie <farook@the-e-dev.com>
2021-12-07 10:58:40 +01:00
Farook Al-Sammarraie
63c8af74f7
Merge branch 'master' into gcc8-workaround 2021-12-04 14:34:58 +03:00
Florian Rupprecht
24d8a72a94
Update include/crow/app.h
Co-authored-by: Farook Al-Sammarraie <farook@the-e-dev.com>
2021-12-04 12:32:32 +01:00
Farook Al-Sammarraie
faa81ec4a5
Merge branch 'master' into auth_tutorial 2021-12-04 04:17:09 +03:00
Maxime BELUGUET
06332c46b8 Move queue length initialisation 2021-12-03 17:40:10 +01:00
Maxime BELUGUET
5825b55350 Move queue length decrementation, formatting 2021-12-03 17:33:40 +01:00
The-EDev
869bc53150
format 2021-12-03 07:05:10 +03:00
The-EDev
78c88bbbb7
Updated mime_types script:
Made script generated code format compliant
Added option to have the script download the source file directly
Added generation date

Also updated the header file to the latest nginx mime.types
2021-12-03 06:41:30 +03:00
The-EDev
94a2f942bc
changed comment style back to the original (doxygen did not work with the new style) 2021-12-03 06:39:23 +03:00
The-EDev
3c6c675a18
formatting 2021-12-02 20:38:04 +03:00
The-EDev
a0a5616d1c
Added missing buffer clears and removed no longer used method from response 2021-12-02 20:18:34 +03:00
The-EDev
bb48f95298
moved file sending to connection and added check_destroy to it 2021-12-02 15:36:52 +03:00
Maxime BELUGUET
31143b9f06 Fix atomic queue_length initialisation 2021-11-30 19:54:37 +01:00
Maxime BELUGUET
e6adb88d09 Merge branch 'master' of github.com:belugum/Crow 2021-11-30 19:22:34 +01:00
Maxime BELUGUET
47263de37f
Merge branch 'master' into master 2021-11-30 19:22:22 +01:00
Maxime BELUGUET
2607bf5791 Change += to ++, add queue length decrementation on error 2021-11-30 19:22:07 +01:00
Maxime BELUGUET
f8af9eb187 Formatting 2021-11-30 18:14:16 +01:00
Luca Schlecker
dc317ced93 logger: don't append std::endl to the message.
ILogHandler instances should take care of that.

Signed-off-by: Luca Schlecker <luca.schlecker@hotmail.com>
2021-11-29 23:59:41 +01:00
Maxime BELUGUET
0f6043f60d Add basic load balancing #258 #182 2021-11-29 16:56:12 +01:00
Farook Al-Sammarraie
9c55181657
Merge branch 'master' into gcc8-workaround 2021-11-29 13:42:22 +03:00
Luca Schlecker
7e4f1494d2 improved lambda bracing by inlining only empty lambdas.
Signed-off-by: Luca Schlecker <luca.schlecker@hotmail.com>
2021-11-27 19:22:35 +01:00
Farook Al-Sammarraie
62b74a1c7a
Merge branch 'master' into gcc8-workaround 2021-11-27 18:14:44 +03:00
Farook Al-Sammarraie
ef396a7c88
Merge branch 'master' into clang-format 2021-11-27 18:14:24 +03:00
Florian Rupprecht
7ee13c4536 GCC 8 workaround compiler detection & error 2021-11-27 14:30:37 +01:00
The-EDev
03e59aa446
improved bracing rules, commented out clang-format 14 rule 2021-11-27 15:28:50 +03:00
Luca Schlecker
9e0bd8ddc7 logger: move prefix and timestamp logic inside the ILogHandler default
implementation.

Signed-off-by: Luca Schlecker <luca.schlecker@hotmail.com>
2021-11-26 12:18:03 +01:00
Florian Rupprecht
df50e3390d Spelling 2021-11-25 15:16:34 +01:00
Florian Rupprecht
58e211355f Constrain and warn GCC 8 bug 2021-11-25 15:14:45 +01:00
The-EDev
7f4b7c8ff9
created new rules, used bot to enforce rules in PRs 2021-11-25 14:45:38 +03:00
Florian Rupprecht
7a0576546c GCC 8 workaround 2021-11-23 16:00:14 +01:00
The-EDev
65f8eb9e44
added macro to enforce ws spec and added 16/64 bit payload length unit tests for ws 2021-11-22 17:39:48 +03:00
The-EDev
5440489640
Added protocol to log URL when starting crow 2021-11-22 16:03:55 +03:00
Luca Schlecker
1fc5c566af remove unused ssl code.
Seems like a leftover from when https was first implemented.

Signed-off-by: Luca Schlecker <luca.schlecker@hotmail.com>
2021-11-22 02:45:08 +01:00
Luca Schlecker
912bf47b6f fix faulty https redirection.
Crow would redirect to https if ssl is enabled, even if no ssl is being actively used.

Signed-off-by: Luca Schlecker <luca.schlecker@hotmail.com>
2021-11-22 02:45:08 +01:00
Luca Schlecker
e5c7daccce remove every occurance of #define CROW_MAIN.
Signed-off-by: Luca Schlecker <luca.schlecker@hotmail.com>
2021-11-21 17:25:16 +01:00
Luca Schlecker
5823a5984e remove the need for #define CROW_MAIN.
This is achieved using the conts type qualifier as it gives internal linkage.
fixes #273

Signed-off-by: Luca Schlecker <luca.schlecker@hotmail.com>
2021-11-21 17:25:16 +01:00
Luca Schlecker
250c793c48 http_server: fix reordering warning.
The introduced `timeout_` variable was initialized in a different order than the member initializer list suggested.

Signed-off-by: Luca Schlecker <luca.schlecker@hotmail.com>
2021-11-21 15:45:46 +01:00
Luca Schlecker
118c992e0d task_timer: align comment style with Crow's.
Signed-off-by: Luca Schlecker <luca.schlecker@hotmail.com>
2021-11-21 15:45:40 +01:00
Luca Schlecker
6458184e8f task_timer: rename set_timeout to schedule.
Signed-off-by: Luca Schlecker <luca.schlecker@hotmail.com>
2021-11-20 17:03:58 +01:00
Luca Schlecker
de92d28f29 replace dumb_timer_queue with new task_timer.
fixes #264, lays ground for #273 and #257.

Signed-off-by: Luca Schlecker <luca.schlecker@hotmail.com>
2021-11-19 18:55:10 +01:00
Florian Rupprecht
5bb7fac016 Get app port 2021-11-14 13:04:19 +01:00
The-EDev
fd6de9bc05
Added functionality to close websocket connections before the app is
terminated.
This is incomplete and needs more work.
2021-11-06 06:06:18 +03:00
Farook Al-Sammarraie
2dc07aaa7e
Merge branch 'master' into feature/cpp20Support 2021-11-03 20:07:59 +03:00
Farook Al-Sammarraie
2e7d5f30f8
Merge branch 'master' into http09_get_only 2021-11-02 21:15:05 +03:00
Farook Al-Sammarraie
05a4b82bd5
Merge branch 'master' into http09_get_only 2021-11-02 00:00:03 +03:00
The-EDev
85e85c3e64
allow remote IP to be accessed from websocket object 2021-11-01 23:57:21 +03:00
The-EDev
ed8d1ebaaa
Added checks for GET on HTTP/0.9 and any other errors
Earlier behavior only checked whether every byte was parsed, which isn't
ideal

Signed-off-by: The-EDev <farook@the-e-dev.com>
2021-11-01 12:02:25 +03:00
Leon De Andrade
06e665ec93 Cpp17 flag for msvc 2021-10-31 20:25:11 +01:00
Leon De Andrade
aa5211d76d Use invoke_result for C++20 2021-10-31 19:19:44 +01:00
The-EDev
576f90a0e4 Added Base64 decoder function and Base 64 unit tests 2021-10-31 02:50:19 +03:00
Farook
eefe8f62bf made it so that workarounds would only run if the user is on an apple machine 2021-10-22 14:27:10 +03:00
Luca Schlecker
7f7eac95a6
Merge branch 'master' into fix_macos 2021-10-14 10:36:03 +02:00
The-EDev
20c7720f72 Made crow's streaming threshold changeable through app.stream_threshold (I also added a getter for it to avoid sending it to the server then the connection) 2021-10-12 15:35:08 +03:00
The-EDev
efd55597f0 changed json and app code (relating to blueprints and initializer list)
also snuck in some guide updates
2021-10-10 14:42:36 +03:00
Farook Al-Sammarraie
72e33c743e
Merge branch 'master' into revamped_setup 2021-10-02 17:29:07 +03:00
The-EDev
ce1cc7b2b2 replaced http_connection.h integers with enum values 2021-10-02 17:11:19 +03:00
Farook Al-Sammarraie
de9e860771
Merge branch 'master' into revamped_setup 2021-10-01 11:34:55 +03:00
The-EDev
a031fb6c8e added status codes enum 2021-09-30 20:38:23 +03:00
Zhavok
1081d25a0f some status codes removed 2021-09-30 11:46:00 +02:00
Zhavok
db6ab441b4 missing http status codes added 2021-09-29 19:30:59 +02:00
The-EDev
b3638a3b83 Merge remote-tracking branch 'refs/remotes/origin/revamped_setup'
Conflicts:
	.drone.yml
2021-09-27 19:04:01 +03:00
Luca Schlecker
3c9e5d1e1d enable compression after first use of 'use_compression'. 2021-08-31 18:14:05 +02:00
Luca Schlecker
21c872e771 Revert "defining CROW_ENABLE_SSL disables non SSL code"
This reverts commit 10f3238ffc.
2021-08-31 18:14:05 +02:00
hg333
9546058604 added another constructor with status-code 2021-08-29 16:36:13 +05:30
hg333
b0e84a8c80 added custom type support 2021-08-29 12:19:18 +05:30
Luca Schlecker
823e891572 fix routing on windows. 2021-08-24 17:06:21 +02:00
Farook Al-Sammarraie
ddca7b5924
Merge branch 'master' into catchall_codes 2021-08-21 14:41:14 +03:00
The-EDev
db08b5a11d further simplified BP search code & made error_message const 2021-08-21 14:35:59 +03:00
The-EDev
10f3238ffc defining CROW_ENABLE_SSL disables non SSL code 2021-08-21 05:19:51 +03:00
The-EDev
576690bf14 Made catchall work with 404 or 405 errors
snuck in a fix for release.py where version name wouldn't change
also snuck in slight improvement in finding blueprint (removed extra if statement)
2021-08-21 04:49:17 +03:00
The-EDev
f5338260bb several changes:
added json list in a similar fashion to json object
renamed object_type to object
updated readme, index.html, and json.md to include objects and lists
updated examples to be slightly cleaner and include lists
replaced instances of json object (std::map and such) with the short version (object)
accurate floating point number dumping (`6.0` instead of `6`) while taking 1/30th of the time (29 microseconds saved)
added json list testing
snuck in utf-8 middleware warning fix
snuck in twitter card style for crowcpp.org site (makes social media cards look way better with a large image)
2021-08-20 03:57:21 +03:00
Farook Al-Sammarraie
84878ae4b1
Merge branch 'master' into ssl_test 2021-08-18 13:13:29 +03:00
Lucas David
49b020b9aa
Merge branch 'master' into feature-#189 2021-08-16 14:51:14 +02:00
The-EDev
17819e6571 Added middleware to automatically use utf-8 if no content-type is in the response 2021-08-15 15:28:26 +03:00
Farook Al-Sammarraie
fe52a2b117
Merge branch 'master' into feature-#189 2021-08-14 17:19:42 +03:00
himanshu007-creator
6ebea5ca77 remoteIpAddress 2021-08-14 18:58:23 +05:30
Himanshu
0f2b231448
Update http_request.h
CamelCase changed to snake_case
2021-08-14 18:01:19 +05:30
Lucas David
1e52b0182d ~ Corrected code as mentionned in review comments. 2021-08-11 22:25:58 +02:00
Lucas David
8f10f92627
Merge branch 'master' into feature-#189 2021-08-11 21:57:54 +02:00
Lucas David
df41cbec49 ~ Replaced foreach character type unsigned char by auto to resolve issue #195. 2021-08-11 15:43:40 +02:00
Lucas David
235f2b9ef4 + Added (implicit) constructors for json "supported" types.
+ added corresponding tests.
+ Added json-map examples.
2021-08-09 14:32:51 +02:00
Lucas David
762af68306 + Added object constructor and assignment for json::wvalue and unit tests.
+ json::wvalue::wvalue(std::initializer_list<std::pair<std::string const, json::wvalue>>
  + json::wvalue::wvalue(std::[unordered_]map<std::string, json::wvalue> const&)
  + json::wvalue::wvalue(std::[unordered_]map<std::string, json::wvalue>&&)
  + json::wvalue::operator=(std::initializer_list<std::pair<std::string const, json::wvalue>>)
  + json::wvalue::operator=(std::[unordered_]map<std::string, json::wvalue> const&)
  + json::wvalue::operator=(std::[unordered_]map<std::string, json::wvalue>&&)
2021-08-09 14:32:51 +02:00
Farook Al-Sammarraie
62af482f7b
Merge branch 'master' into patch-1 2021-08-07 03:24:26 +03:00
Dan Kersten
e6b36c3c03 Eliminate extern-initializer warning 2021-08-06 22:28:13 +01:00
Mustafa Mahmoud
d5c1b54918
Replace HTTPMethod::GET with HTTPMethod::Get 2021-08-06 19:01:13 +02:00
Farook Al-Sammarraie
8039b2eab9
Merge branch 'master' into blueprints 2021-08-05 19:54:02 +03:00
The-EDev
0588471d6d fixed extern constexpr problem 2021-08-05 19:53:52 +03:00
The-EDev
9418c39a92 fixed problem where using multiple files caused an error because you can't have extern constexpr 2021-08-05 17:01:03 +03:00
The-EDev
1474fbec33 used constant 0xffff in more places, used .empty(), and split the if statement into a method. 2021-08-04 23:58:38 +03:00
The-EDev
2def62bd4a removed unnecessary code / added constexpr for max bp id 2021-08-03 12:46:41 +03:00
Farook Al-Sammarraie
2d65f71de8
Merge branch 'master' into blueprints 2021-07-30 13:15:44 +03:00
The-EDev
addcce9e93 small fixes, optimizations, and documentation 2021-07-30 13:09:01 +03:00
The-EDev
e713ad54cb added unit test, moved macros to app.h, and fixed bug where "bp_prefix2" would be considered a child of "bp_prefix" even if it's not 2021-07-28 22:31:08 +03:00
Lucas David
1bb5e0ac63 + auto to_read = static_cast<std::uint64_t>(buffer_.size());
~ if (remaining_length_ < to_read)
~   to_read = remaining_length_;
+ adaptor_.socket().async_read_some(boost::asio::buffer(buffer_, static_cast<std::size_t>(to_read))
- size_t to_read = buffer_.size();
~ if (remaining_length_ < to_read)
~   to_read = remaining_length_;
- adaptor_.socket().async_read_some( boost::asio::buffer(buffer_, to_read)

~ Changed 'to_read' from [std::size_t] to [std::uint64_t],
  hence when 'remaining_length_' [std::uint64_t] is assigned in 'to_read' no data is lossed.
  When boost::asio::buffer is created 'to_read' is casted back to [std::size_t] explicitly truncating data.
  It seems to be the correct behavior to choose fixed 'network side' types.
2021-07-27 17:04:54 +02:00
Lucas David
6aa5dba579 + buf[1] += static_cast<char>(size);
- buf[1] += size;

~ Warning was triggered by 'size' being std::size_t and lossing data by implicit casting to a narrower type.
  This behavior seems correct, then we can explicit cast it.
2021-07-27 15:39:51 +02:00
The-EDev
06c4829ca7 implemented all blueprint features 2021-07-27 10:52:49 +03:00
The-EDev
27fe952a0c Merge branch 'master' 2021-07-20 11:00:09 +03:00
The-EDev
6d6fbe2385 removed unnecessary boolean 2021-07-19 00:01:20 +03:00
The-EDev
32d88725bd used CROW_LOG_DEBUG instead of std::cout (which was used to rapidly test the trie outside crow) 2021-07-10 23:14:38 +03:00
The-EDev
341a9b7fbe Re-implemented Trie 2021-07-10 22:45:47 +03:00
The-EDev
ea597d804a blueprint specific templates directory now supported 2021-07-07 15:51:04 +03:00
Farook Al-Sammarraie
da9f2e4531
Merge branch 'master' into release_script 2021-07-06 20:08:59 +03:00
Igor Mróz
3839a4a8e5
Add CROW_MAIN ifdef to VERSION variable. Move it to namespace. 2021-07-06 19:07:34 +02:00
The-EDev
85e4525d67 added custom static directory capability to blueprints (the endpoint remains "<prefix>/static/<filename>") 2021-07-06 01:53:32 +03:00
The-EDev
321f9c7fe6 Merge branch 'master' 2021-07-06 01:51:50 +03:00
The-EDev
165c72f56c fixed issue where disabling crow static directory would also disable all other routes 2021-07-05 12:18:00 +03:00
The-EDev
c46af69f41 Added basic blueprint support (registration and prefix) 2021-07-05 12:14:31 +03:00
The-EDev
6df5c94fd9 basic lambda support added (no expansion / blocks) 2021-07-03 23:28:52 +03:00
Igor Mróz
1d270fae19
Add release script. Change server name to use release version to build name. 2021-07-03 22:02:32 +02:00
Luca Schlecker
0593f42522 http_response: fix move assign operator not moving file_info.
Signed-off-by: Luca Schlecker <luca.schlecker@hotmail.com>
2021-06-28 18:08:57 +02:00
The-EDev
fc27f73f84 Bump server version to 0.3 2021-06-05 06:30:01 +03:00
The-EDev
ca31b85156 added CROW_ENABLE_COMPRESSION macro to enable zlib compression
This makes zlib dependency (which is quite problematic) optional
2021-06-03 17:12:20 +03:00
dspverden
5aa45f1ebc Changed to #ifndef in logging.h 2021-06-02 17:05:52 +02:00
Darius Tan
3bd1956e90 Change HTTPMethod::HEAD to HTTPMethod::Head, HTTPMethod::GET to
HTTPMethod::Get and HTTPMethod::OPTIONS to HTTPMethod::Options.

VS2019 error:
enum "crow::HTTPMethod" has no member "HEAD"
enum "crow::HTTPMethod" has no member "GET"
enum "crow::HTTPMethod" has no member "OPTIONS"

See https://github.com/ipkn/crow/pull/307 for a similar issue.
2021-05-23 19:58:01 +12:00
Maxime BELUGUET
811ef62c6f Fix constness on json dump method #133 2021-05-18 18:10:39 +02:00
The-EDev
0e9b615c2b fixed typos 2021-05-13 13:30:48 +03:00
The-EDev
f39b9ddce7 Quality of life improvements
Added pop() method to query_string, same as get(), but removes the item from the querystring
Added std::string() operator to json::rvalue (allows std::string(json["abc"]), which returns any value that isn't a container to string)
Added lo() method to json::rvalue, returns a vector of json::rvalue containing whatever a json object or list has (difference being a list has no keys)
Added keys() method to json::rvalue, returns a vector of std::string containing the keys of a json object
Made json::wvalue use either std::map or std::unordered_map instead of just std::unordered_map
Added copy constructor to json::wvalue
Added size() method to json::wvalue, returns 1 or the size of the json list.
Added constructor to create json::wvalue from std::vector
Added keys() method to query_string
Documented query_string and improved json doc
Made tests and examples for all the additions
2021-05-12 15:45:55 +03:00
The-EDev
798f190fc8 added initial ssl testing 2021-04-17 02:33:35 +03:00
The-EDev
5b7b066c68 fixed typo and incorrect type in assert error 2021-04-14 04:55:27 +03:00
Farook Al-Sammarraie
5f91587479
Merge branch 'master' into catch_all 2021-04-12 23:45:07 +03:00
The-EDev
738abdbd96 fixed issue where response is logged twice 2021-04-12 20:11:03 +03:00
Farook Al-Sammarraie
4aae614297
Merge branch 'master' into catch_all 2021-04-12 10:49:29 +03:00
The-EDev
16ae11a4e3 updated catchall to use references instead of pointers 2021-04-12 10:41:55 +03:00
The-EDev
f779a0f8a4 changed catchall to fit with the rest of crow
the macro is similar to CROW_ROUTE, added example to cmake, added unit test, and documentation
2021-04-12 08:25:09 +03:00
Tibbel
7ad1b79b7a
Delete example_catchall.cpp 2021-04-05 10:21:58 +02:00
Tibbel
97ef2945ed
CROW_CATCHALL #endif if moved
CROW_CATCHALL #endif if moved
2021-04-05 10:14:38 +02:00
Tibbel
5b880cef49
Add a catch-all handler 2nd version
Here is the modified catchall-function
example added
the code moved to routing.h
only the setter remained in app.h
the integer return is removed
i personally don't need the default parameters:
without crow::response the catchall can take no effect
and without crow::request you know nothing about the request
i only imagine one case, this is to set custom error pages.
so i don't thing default parameters have any big benefit here.
"#ifdef CROW_CATCHALL" was only for me, to find my own modifications feel free to replace it
2021-04-05 09:44:35 +02:00
The-EDev
111bef9deb use actual ASIO port instead of the local port variable
this is useful when using port 0 to have the OS provide a free port
2021-04-04 08:09:59 +03:00
The-EDev
b837877715 updated head and no_length variable names 2021-04-03 13:48:36 +03:00
The-EDev
5f68479ee5 fixed small merge issue 2021-04-03 06:40:14 +03:00
Farook Al-Sammarraie
1654acbfd0
Merge branch 'master' into HEAD_and_OPTIONS 2021-04-03 06:31:45 +03:00
The-EDev
33e8631676 Added Content-Length header back to HEAD response.
The reason for removing it was an issue with Curl rather than how HEAD should be handled.
2021-04-03 06:21:18 +03:00
The-EDev
ec566f87ef added tests and fixed small issues
moved body handling to Response.end() and fixed a bug where a 404 was not returned on a route that doesn't exist
2021-04-03 06:00:23 +03:00
The-EDev
06226b86a7 implemented proper HEAD handling, implemented OPTIONS handling 2021-04-03 05:33:40 +03:00
Farook Al-Sammarraie
b826e9c228
Merge branch 'master' into sfinktah-64bit-compat-1 2021-04-02 03:36:09 +03:00
Maxim Kokryashkin
cdce8f443a macro rename 2021-03-31 20:30:32 +03:00
Maxim Kokryashkin
a4ec6d06ce delete tags 2021-03-13 15:06:35 +03:00
The-EDev
6f5514743a added automatic HEAD method handling 2021-03-13 13:51:27 +03:00
Sfinktah Bungholio
21f6f11484 Merge branch 'master' of https://github.com/CrowCpp/crow into sfinktah-64bit-compat-1 2021-02-21 11:14:52 +11:00
Sfinktah Bungholio
6597feb3a8 converted all (int) to static_cast 2021-02-21 11:14:30 +11:00
Maxim Kokryashkin
ce7d08eb0e fixed issues with static wariables 2021-02-21 00:28:32 +03:00
rittelle
3b151d569d Properly clear responses
Closes #104.
2021-02-12 13:21:59 +01:00
Farook Al-Sammarraie
e15b50ed29
Merge branch 'master' into sfinktah-msvc17-compat-1 2021-02-12 01:43:56 +03:00
Sfinktah Bungholio
b2cf780485 recast 64-bit size_t to 32-bit int to remove warnings 2021-02-10 21:03:21 +11:00
The-EDev
8523afa930 Update templating.md and mustache.h
Updated templating documentation to mention "working directory" rather than "executable directory".
Added Warning log when a template is not found.
2021-02-09 06:52:05 +03:00
sfinktah
02f664c340
Update common.h
oops, had to remove #undef DELETE -- used to enable refactoring without MS DELETE macro getting in the way.
2021-02-09 03:29:07 +11:00
Sfinktah Bungholio
740bd266e7 fixes for **some** msvc compatibility issues 2021-02-09 03:25:02 +11:00
The-EDev
747ad6db72 Merge branch 'master' 2021-01-21 21:37:55 +03:00
The-EDev
3aaef5e0fd fixed merge errors 2021-01-21 21:36:41 +03:00
The-EDev
78ee97124b Merge branch 'master'
Conflicts:
	CMakeLists.txt
	examples/CMakeLists.txt
	include/crow/http_connection.h
	tests/CMakeLists.txt
2021-01-21 06:56:02 +03:00
The-EDev
3234c924cf disable compression on static files 2021-01-21 06:46:54 +03:00
The-EDev
b72ee2a4e8 Added virtual destructor to fix clang compilation 2021-01-15 03:45:57 +03:00
The-EDev
cf217d3c1f Merge branch 'master' 2021-01-05 17:51:57 +03:00
The-EDev
33f1206571 made json a returnable type and removed json specific code 2021-01-05 17:49:10 +03:00
The-EDev
24fc57d453 location != "" -> !location.empty() 2021-01-03 17:56:19 +03:00
The-EDev
09d0f4ccdd Added HTTP compression using gzip or deflate (disabled by default, requires calling method) 2021-01-02 22:12:04 +03:00
The-EDev
97dea47eb0 Changed the behaviour of redirect function to redirect to a route if no http:// is available
Also added `redirect_perm`, `moved`, and `moved_perm` functions with their status codes.
And corrected the description of the `raw_url` member.
2020-12-26 19:54:41 +03:00
Nick Rizzo
3945251869 [fix] Make signal handler optional 2020-12-19 14:05:27 -05:00
The-EDev
9db47120e7 added documentation
also removed extra header meant for testing
2020-12-19 14:30:20 +03:00
The-EDev
ed2a7ae0e0 Added returnables class and applied to multipart
did not apply to JSON because it caused a linker error
also changed the version of boost required in CMAKE
2020-12-18 12:28:37 +03:00
Ayaan Khan
716aa046fc
Merge branch 'master' into master 2020-12-03 12:46:57 +05:30
Makaveli
9bc030478f Settable server name feature 2020-12-02 20:15:05 -05:00
ayaankhan98
ec29121c22 fix clang build 2020-12-02 22:59:45 +05:30
ayaankhan98
fcce57d232 revert: new handler_ changes 2020-12-02 16:37:43 +05:30
ayaankhan98
770359e79f fix: ambigous call and example 2020-12-02 15:36:29 +05:30
ayaankhan98
737a3384ae removed extra changes 2020-12-01 14:39:11 +05:30
ayaankhan98
6f31e597a0 Merge branch 'master' of https://github.com/ayaankhan98/crow 2020-12-01 12:36:09 +05:30
ayaankhan98
acab73ef68 removed extra req arg 2020-12-01 12:35:46 +05:30
Ayaan Khan
6c7bef1eda
Merge branch 'master' into master 2020-12-01 12:03:02 +05:30
ayaankhan98
a7c74c6327 recieve response without request being another argument in handle 2020-12-01 11:50:46 +05:30
The-EDev
3d202d2919 allow returning all json data types, not just json objects 2020-11-26 04:08:24 +03:00
The-EDev
2422f55855 documented as much as possible relating to the API reference 2020-11-19 01:13:57 +03:00
The-EDev
454810c165 Added reference docs for dumb_timer_queue, http_request, http_response, and socket_adaptors 2020-11-14 05:28:07 +03:00
Farook Al-Sammarraie
f9dec6997e
Merge branch 'master' into static_file_win32 2020-11-13 15:24:44 +03:00
Eero Pajarre
71bd6c8c2b removed another if not defined(_WIN32) 2020-11-13 07:42:02 +02:00
Eero Pajarre
16cae0af4a Activate static_file support on WIN32
static_file support seems to work, at least with
Microsoft Visual Studio 2017 and 2109 / C++17.
Without it the compilation fails, so activating it.
2020-11-12 15:38:37 +02:00
Eero Pajarre
5fe3a45793 Replaced uint with unsigned
uint is not a default type in C++.
Replaced it with unsigned, which should be large enough
2020-11-12 15:11:22 +02:00
The-EDev
384baaade4 moved middlewares folder inside crow folder
also fixed an issue where by default nothing is included
2020-11-11 23:43:57 +03:00
Farook Al-Sammarraie
7c88cdbb60
Merge branch 'master' into middleware_reorganizing 2020-11-11 22:44:43 +03:00
The-EDev
6444748269 separated middlewares from core code
modified merge script to include middlewares, all are included by default
include excludes everything else (items separated by ',')
exclude only excludes selected items (items separated by ',')
2020-11-11 05:39:57 +03:00
The-EDev
24830648d2 added macros for static endpoint and directory
(also put some info in the example)
2020-11-10 23:56:27 +03:00
Farook Al-Sammarraie
50670c290b
Merge branch 'master' into static_dir 2020-11-10 12:34:04 +03:00
The-EDev
c4d191a7b0 added static/ prefix to path 2020-11-10 03:54:30 +03:00
The-EDev
72aeabd5e4 added default "/static/<path>" route for any static files
can be disabled via CROW_DISABLE_STATIC_DIR def
2020-11-10 03:47:30 +03:00
The-EDev
fab2640702 Ping and Pong messages shouldn't fail with messages larger than 127 bytes anymore
Has the added advantage of making the code look more consistent, while sacrificing some performance (very little though)
2020-11-09 17:36:03 +03:00
The-EDev
b54b5a4c6e obligatory simple messup fix
removed extra is_open method
2020-11-09 05:18:34 +03:00
The-EDev
ca46844782 Added check for SSL adaptor to fix potential crash when SSL websockets are used (ipkn#328) 2020-11-09 05:00:49 +03:00
The-EDev
5c7ef21211 websocket improvements
replaced base10 bits to base8 in comments
added send_ping and send_pong to API (users can now send them)
reset header value before every read
2020-11-09 04:41:55 +03:00
The-EDev
8dc61959f2 added method to send ping message 2020-11-05 04:10:33 +03:00
The-EDev
463917a17f added option to have unmasked messages 2020-11-04 07:16:03 +03:00
The-EDev
cc715f4245 cleaned up app.h documentation 2020-11-04 06:21:52 +03:00
The-EDev
777dfa31af added documentation and illustration from RFC 6455 2020-11-04 06:20:09 +03:00
The-EDev
4a42a6fbae bump server version to 0.2
also fixed a chmod issue in travis
2020-10-31 23:56:50 +03:00
Farook Al-Sammarraie
5b996e4686
Merge pull request #33 from mrozigor/stream-fixes
Stream fixes
2020-10-31 21:10:41 +03:00
The-EDev
fc0c6d9eae removed reserve code 2020-10-31 03:09:32 +03:00
Igor Mróz
90b46528d4
#6 Fix mustache implementation after specification update. 2020-10-30 20:29:41 +01:00
Farook Al-Sammarraie
81386da246
Merge branch 'master' into stream-fixes 2020-10-27 16:28:01 +03:00
The-EDev
92d7f2e3c4 optimized the body streaming code
has the side effect of removing some messups I made
2020-10-27 16:21:52 +03:00
The-EDev
0a21fcbba0 split streaming methods to allow streaming strings as well as streams 2020-10-27 02:36:02 +03:00
The-EDev
c3220a73bc documented most of app.h 2020-10-22 04:13:57 +03:00
Farook Al-Sammarraie
bbada35cb1
Merge branch 'master' into configure-timeout 2020-10-21 23:52:37 +03:00
Farook Al-Sammarraie
c66afeb4d3
Merge branch 'master' into stream_body 2020-10-21 23:29:18 +03:00
Farook Al-Sammarraie
1e05fa5447
Merge branch 'master' into configure-timeout 2020-10-21 22:51:20 +03:00
Farook Al-Sammarraie
c4dba56f32
Merge branch 'master' into stream_body 2020-10-21 22:51:16 +03:00
Farook Al-Sammarraie
179114b3c6
Merge branch 'master' into connection-improvements 2020-10-21 22:51:11 +03:00
The-EDev
e1650750ce fixed typo 2020-10-21 20:56:12 +03:00
The-EDev
9728d652df changed megabyte name to res_stream_threshold_ 2020-10-21 20:54:28 +03:00
Farook Al-Sammarraie
019ead45e2
Merge branch 'master' into stream_body 2020-10-21 19:50:01 +03:00
Farook Al-Sammarraie
70887d88c3
Merge branch 'master' into travis-changes 2020-10-21 19:42:34 +03:00
Igor Mróz
548510ad80
Merge branch 'master' into connection-improvements 2020-10-21 18:41:05 +02:00
Farook Al-Sammarraie
acd94fca37
Merge branch 'master' into configure-timeout 2020-10-21 19:39:51 +03:00
The-EDev
1b284e21b1 removed unneccessary class reference 2020-10-21 16:31:06 +03:00