-
Notifications
You must be signed in to change notification settings - Fork 56
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Updates the README and THANKS files. (Fix #1)
- Loading branch information
1 parent
46790e9
commit b44afa8
Showing
2 changed files
with
120 additions
and
40 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,45 +1,121 @@ | ||
# Brook framework | ||
|
||
Microframework which helps to develop web Pascal applications. | ||
|
||
- Version number: `5.0` | ||
- Codename: `Tardigrade` | ||
- Core: [Sagui library](https://github.com/risoflora/libsagui/releases) | ||
|
||
**NOTE: This page will be updated with examples, how-to, links etc. as soon as the version 5.0 is tagged!** | ||
|
||
## Supported platforms | ||
[![License: LGPL v2.1](https://img.shields.io/badge/License-LGPL%20v2.1-green.svg)](https://github.com/risoflora/brookframework/blob/master/LICENSE) | ||
![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/risoflora/brookframework?color=green) | ||
|
||
# Overview | ||
|
||
Brook is a cross-platform microframework which helps to develop web Pascal applications built by [Delphi](<https://en.wikipedia.org/wiki/Delphi_(software)>) or [Lazarus IDE and Free Pascal](<https://en.wikipedia.org/wiki/Lazarus_(IDE)>). Its core has been developed using the [Sagui library](https://risoflora.github.io/libsagui), that's why it is so fast, compact and useful to run on embedded systems. | ||
|
||
# Features | ||
|
||
- **Three threading modes:** | ||
- Event-driven - single thread. | ||
- Threaded - one thread per request. | ||
- Polling - thread pool. | ||
- **Fast path routing that supports:** | ||
- Regular expression with [JIT](https://www.pcre.org/current/doc/html/pcre2jit.html) optimization. | ||
- [Binary search](https://en.wikipedia.org/wiki/Binary_search_algorithm) for path entry-points. | ||
- **HTTP compression:** | ||
- [Deflate](https://en.wikipedia.org/wiki/DEFLATE) - for static strings and streaming. | ||
- [Gzip](https://en.wikipedia.org/wiki/Gzip) - for file compression. | ||
- **HTTP cookies:** | ||
- Providing classes which handles server side cookies. | ||
- **HTTPS support:** | ||
- Data encryption through [GnuTLS](https://www.gnutls.org) library. | ||
- **Dual stack:** | ||
- IPv4 and IPv6 on top of a single socket. | ||
- **Basic authentication:** | ||
- For standard login using user name and password. | ||
- **Download/upload:** | ||
- Static body and payload. | ||
- Content streaming for real-time applications. | ||
- Small and large files transferring. | ||
- **Media types:** | ||
- Resolving media types ([MIME](https://en.wikipedia.org/wiki/MIME)) in any supported platform. | ||
- **String buffer:** | ||
- For fast operations involving strings. | ||
- **String map:** | ||
- Hashed lists for key-value mapping. | ||
- **And more:** | ||
- Discover more features by playing with our examples. | ||
|
||
# Examples | ||
|
||
The example below shows a minimal `hello world` HTTP server: | ||
|
||
```delphi | ||
type | ||
THTTPServer = class(TBrookHTTPServer) | ||
protected | ||
procedure DoRequest(ASender: TObject; ARequest: TBrookHTTPRequest; | ||
AResponse: TBrookHTTPResponse); override; | ||
end; | ||
procedure THTTPServer.DoRequest(ASender: TObject; ARequest: TBrookHTTPRequest; | ||
AResponse: TBrookHTTPResponse); | ||
begin | ||
AResponse.Send('Hello world', 'text/plain', 200); | ||
end; | ||
begin | ||
with THTTPServer.Create(nil) do | ||
try | ||
Port := 8080; | ||
if not Active then | ||
Exit; | ||
WriteLn('Server running at http://localhost:', Port); | ||
Open; | ||
ReadLn; | ||
finally | ||
Free; | ||
end; | ||
end. | ||
``` | ||
|
||
There are other examples available in the [`Examples/`](https://github.com/risoflora/brookframework/tree/master/Examples) directory. | ||
|
||
# OSes/compilers | ||
|
||
Successfully tested on: | ||
|
||
- Windows | ||
- Linux | ||
- Raspbian/Android | ||
|
||
## Supported compilers | ||
|
||
Successfully compiled for Windows 32/64 bit and Linux 64 bit using: | ||
compiled using: | ||
|
||
- Delphi XE family (Rio) | ||
- Lazarus / Free Pascal (Lazarus 2.0+ / FPC 3.0+) | ||
|
||
## Distribution / installation | ||
# Versioning | ||
|
||
Starting from the version 1.0.0, Brook follows the [SemVer](https://semver.org) rules regarding API changes with backwards compatibility across major releases. | ||
|
||
# Licensing | ||
|
||
Brook framework is released under GNU Lesser General Public License v2.1. Check the [LICENSE file](https://github.com/risoflora/brookframework/blob/master/LICENSE) for more details. | ||
|
||
# Documentation | ||
|
||
The documentation has been written in [PasDoc](https://github.com/pasdoc/pasdoc) and is available in HTML format at [brookframework-docs/index.html](https://risoflora.github.io/brookframework-docs/index.html). | ||
|
||
# Downloading | ||
|
||
All stable releases are available for download at the [releases page](https://github.com/risoflora/brookframework/releases). | ||
|
||
To download the very latest source from the Git server, do this: | ||
|
||
- Github trunk/branch | ||
```bash | ||
git clone https://github.com/risoflora/brookframework.git | ||
``` | ||
|
||
Planned distribution/installation: | ||
It will create a directory named `brookframework` filled with the source code. | ||
|
||
- Github releasing | ||
- GetIt (Delphi) | ||
- OPM (Lazarus) | ||
- From sources | ||
# Contributing | ||
|
||
## Current development | ||
Brook framework is totally open source and would not be possible without our [contributors](https://github.com/risoflora/brookframework/blob/master/THANKS). If you want to submit contributions, please fork the project on GitHub and send a pull request. You retain the copyright on your contributions. If you have questions, open a new issue at the [issues page](https://github.com/risoflora/brookframework/issues). For donations to support this project, please click the button below. | ||
|
||
- Isolated requests (in progress at branch [v5.1](https://github.com/risoflora/brookframework/tree/v5.1)) | ||
- SSE support (in study) | ||
- WebSocket support (in study) | ||
[![Support this project](https://www.paypalobjects.com/en_US/GB/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=silvioprog%40gmail%2ecom&lc=US&item_name=brookframework&item_number=brookframework¤cy_code=USD&bn=PP%2dDonationsBF%3aproject%2dsupport%2ejpg%3aNonHosted) | ||
|
||
## Licensing | ||
# Support | ||
|
||
Brook Framework is released under the GNU Lesser General Public License. Check the [LICENSE file](https://github.com/risoflora/brookframework/blob/master/LICENSE) for more details. | ||
This project is completely self-explanatory, but, if you need a consulting service to integrate it on your project, [contact us](mailto:silvioprog@gmail.com). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,18 +1,22 @@ | ||
Dave Fobare (Project user/tester) | ||
Gilson Nunes (Pascal expert) | ||
Joao Morais (Pascal expert) | ||
Silvio Clecio [silvioprog] (Author) | ||
Adeilza Lustosa (Documentation/translations) | ||
Al-Muhandis [Al-Muhandis] (Project maintainer) | ||
Dave Fobare [TheEditor] (Project user/tester) | ||
Gilson Nunes [gilsongnr] (Pascal expert) | ||
Joao Morais [jcmoraisjr] (Pascal expert) | ||
Juha Manninen (Lazarus issues) | ||
Leonardo M. Rame (Project maintainer) | ||
Luciano Souza (Project quality) | ||
Leonardo M. Rame [leonardorame] (Project maintainer) | ||
Luciano Souza [luchyanus] (Project quality) | ||
Marco van de Voort (Free Pascal issues) | ||
Mario Ray Mahardhika (Project maintainer) | ||
Marcus Fernstrom [MFernstrom] (Project maintainer) | ||
Mario Ray Mahardhika [leledumbo] (Project maintainer) | ||
Mattias Gaertner (Lazarus issues) | ||
Michael van Canneyt (Free Pascal issues) | ||
Michael van Ham (Project maintainer) | ||
Michalis Kamburelis (PasDoc issues) | ||
Osvaldo Tomaz Crispim Filho (OsvaldoTCF) | ||
Michael van Canneyt [mvancanneyt] (Free Pascal issues) | ||
Michael van Ham [michaelvanham] (Project maintainer) | ||
Michalis Kamburelis [michaliskambi] (PasDoc issues) | ||
Osvaldo Tomaz Crispim Filho (osvaldotcf) | ||
Sven Barth (Free Pascal issues) | ||
Valmadson Santos (Project user/tester) | ||
Waldir Paim (Project mentor) | ||
Valmadson Santos [valmadson] (Project user/tester) | ||
Waldir Paim [waldirpaim] (Project mentor) | ||
|
||
and special thanks to the people who help me to maintain this project! | ||
and special thanks to the people who help me to maintain this project! |