├── .gitignore ├── README.md ├── basic-auth ├── boss-lock.json ├── boss.json ├── samples.dpr └── samples.dproj ├── compression ├── boss-lock.json ├── boss.json ├── samples.dpr └── samples.dproj ├── docker ├── boss-lock.json ├── boss.json ├── docker-compose.yaml ├── samples.dpr └── samples.dproj ├── handler-exception ├── boss-lock.json ├── boss.json ├── samples.dpr └── samples.dproj ├── horse.pdf ├── iis ├── ISAPI.dpr ├── ISAPI.dproj ├── boss-lock.json └── boss.json ├── jwt ├── auth │ ├── boss-lock.json │ ├── boss.json │ ├── samples.dpr │ └── samples.dproj └── client │ ├── boss-lock.json │ ├── boss.json │ ├── samples.dpr │ └── samples.dproj ├── octet-stream ├── boss-lock.json ├── boss.json ├── horse.pdf ├── novo.pdf ├── samples.dpr ├── samples.dproj └── samples.res └── ping-pong ├── boss-lock.json ├── boss.json ├── samples.dpr └── samples.dproj /.gitignore: -------------------------------------------------------------------------------- 1 | # Uncomment these types if you want even more clean repository. But be careful. 2 | # It can make harm to an existing project source. Read explanations below. 3 | # 4 | # Resource files are binaries containing manifest, project icon and version info. 5 | # They can not be viewed as text or compared by diff-tools. Consider replacing them with .rc files. 6 | #*.res 7 | # 8 | # Type library file (binary). In old Delphi versions it should be stored. 9 | # Since Delphi 2009 it is produced from .ridl file and can safely be ignored. 10 | #*.tlb 11 | # 12 | # Diagram Portfolio file. Used by the diagram editor up to Delphi 7. 13 | # Uncomment this if you are not using diagrams or use newer Delphi version. 14 | #*.ddp 15 | # 16 | # Visual LiveBindings file. Added in Delphi XE2. 17 | # Uncomment this if you are not using LiveBindings Designer. 18 | #*.vlb 19 | # 20 | # Deployment Manager configuration file for your project. Added in Delphi XE2. 21 | # Uncomment this if it is not mobile development and you do not use remote debug feature. 22 | #*.deployproj 23 | # 24 | # C++ object files produced when C/C++ Output file generation is configured. 25 | # Uncomment this if you are not using external objects (zlib library for example). 26 | #*.obj 27 | # 28 | 29 | # Delphi compiler-generated binaries (safe to delete) 30 | *.exe 31 | *.dll 32 | *.bpl 33 | *.bpi 34 | *.dcp 35 | *.so 36 | *.apk 37 | *.drc 38 | *.map 39 | *.dres 40 | *.rsm 41 | *.tds 42 | *.dcu 43 | *.lib 44 | *.a 45 | *.o 46 | *.ocx 47 | 48 | # Delphi autogenerated files (duplicated info) 49 | *.cfg 50 | *.hpp 51 | *Resource.rc 52 | 53 | # Delphi local files (user-specific info) 54 | *.local 55 | *.identcache 56 | *.projdata 57 | *.tvsconfig 58 | *.dsk 59 | 60 | # Delphi history and backups 61 | __history/ 62 | __recovery/ 63 | *.~* 64 | 65 | # Castalia statistics file (since XE7 Castalia is distributed with Delphi) 66 | *.stat 67 | 68 | # Boss dependency manager vendor folder https://github.com/HashLoad/boss 69 | modules/ 70 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CodeRage Brasil 2020 2 | Repositório com todos os códigos fontes da palestra **"Horse - Criando uma API escalável e minimalista"** apresentada no CodeRage Brasil 2020. 3 | 4 | ## Links 5 | * [**Horse**](https://github.com/HashLoad/horse) - Framework apresentado na palestra 6 | * [**Boss**](https://github.com/HashLoad/boss) - Gerenciador de dependências para projetos Delphi 7 | * [**Docker**](https://docs.docker.com/docker-for-windows/install/) - Instalador do Docker para Windows 8 | * [**Apresentação**](https://www.youtube.com/watch?v=qIjK-xV3OTE&t=1) - Vídeo da apresentação 9 | * [**Hashload**](https://github.com/HashLoad) - Comunidade Hashload (Responsável por projetos como o Horse, Ugar, Boss, etc) 10 | * [**Slack**](http://bit.ly/hashload-slack) - Canal do Slack 11 | -------------------------------------------------------------------------------- /basic-auth/boss-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "hash": "6ef9161b900632671022358216c7dfe7", 3 | "updated": "2019-10-15T20:56:20.6237806-03:00", 4 | "installedModules": { 5 | "github.com/hashload/horse": { 6 | "name": "horse", 7 | "version": "1.7.0", 8 | "hash": "7c3b15d6289c0ab49f483626c61da28b", 9 | "artifacts": {}, 10 | "failed": false, 11 | "changed": false 12 | }, 13 | "github.com/viniciussanchez/horse-basic-auth": { 14 | "name": "horse-basic-auth", 15 | "version": "v1.1.0", 16 | "hash": "084558e6ec4773844088c7e73163da33", 17 | "artifacts": {}, 18 | "failed": false, 19 | "changed": false 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /basic-auth/boss.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "samples", 3 | "description": "", 4 | "version": "1.0.0", 5 | "homepage": "", 6 | "mainsrc": "./", 7 | "projects": [], 8 | "dependencies": { 9 | "github.com/HashLoad/horse": "^1.7.0", 10 | "github.com/viniciussanchez/horse-basic-auth": "^v1.1.0" 11 | } 12 | } -------------------------------------------------------------------------------- /basic-auth/samples.dpr: -------------------------------------------------------------------------------- 1 | program samples; 2 | 3 | {$APPTYPE CONSOLE} 4 | 5 | uses 6 | Horse, 7 | Horse.BasicAuthentication, 8 | System.SysUtils; 9 | 10 | {$R *.res} 11 | 12 | var 13 | App: THorse; 14 | 15 | begin 16 | App := THorse.Create(9000); 17 | 18 | App.Use(HorseBasicAuthentication( 19 | function(const AUsername, APassword: string): Boolean 20 | begin 21 | Result := AUsername.Equals('vinicius') and APassword.Equals('123'); 22 | end)); 23 | 24 | App.Get('/ping', 25 | procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc) 26 | begin 27 | Res.Send('pong'); 28 | end); 29 | 30 | App.Start; 31 | end. 32 | -------------------------------------------------------------------------------- /basic-auth/samples.dproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {A31DF25C-ACA6-4D73-BB84-923B1021FB57} 4 | 18.7 5 | None 6 | samples.dpr 7 | True 8 | Debug 9 | Win32 10 | 1 11 | Console 12 | 13 | 14 | true 15 | 16 | 17 | true 18 | Base 19 | true 20 | 21 | 22 | true 23 | Base 24 | true 25 | 26 | 27 | true 28 | Base 29 | true 30 | 31 | 32 | true 33 | Base 34 | true 35 | 36 | 37 | true 38 | Base 39 | true 40 | 41 | 42 | true 43 | Base 44 | true 45 | 46 | 47 | true 48 | Base 49 | true 50 | 51 | 52 | true 53 | Base 54 | true 55 | 56 | 57 | true 58 | Base 59 | true 60 | 61 | 62 | true 63 | Base 64 | true 65 | 66 | 67 | true 68 | Cfg_1 69 | true 70 | true 71 | 72 | 73 | true 74 | Base 75 | true 76 | 77 | 78 | .\$(Platform)\$(Config) 79 | .\$(Platform)\$(Config) 80 | false 81 | false 82 | false 83 | false 84 | false 85 | System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) 86 | true 87 | $(BDS)\bin\delphi_PROJECTICON.ico 88 | $(BDS)\bin\delphi_PROJECTICNS.icns 89 | $(Horse);modules\.dcp;modules\.dcu;modules;modules\horse\src;modules\horse-basic-auth\src;$(DCC_UnitSearchPath) 90 | VCL;$(DCC_Framework) 91 | samples 92 | 93 | 94 | DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) 95 | android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar 96 | 97 | 98 | DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) 99 | 100 | 101 | DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) 102 | 103 | 104 | DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) 105 | 106 | 107 | RESTComponents;emsclientfiredac;DataSnapFireDAC;FireDACADSDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;inetdb;emsedge;FireDACIBDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;soapserver;bindengine;CloudService;FireDACOracleDriver;FireDACMySQLDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndySystem;FireDACDb2Driver;FireDACInfxDriver;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;rtl;emsserverresource;DbxClientDriver;CustomIPTransport;bindcomp;dbxcds;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;dbrtl;IndyProtocols;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 108 | 109 | 110 | DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;FireDACMSSQLDriver;bindcompfmx;DBXOracleDriver;inetdb;fmx;FireDACIBDriver;fmxdae;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;FireDACDSDriver;rtl;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;bindcomp;DBXInformixDriver;IndyIPClient;dbxcds;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 111 | 112 | 113 | DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;FireDACMSSQLDriver;bindcompfmx;DBXOracleDriver;inetdb;fmx;FireDACIBDriver;fmxdae;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;FireDACDSDriver;rtl;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;bindcomp;DBXInformixDriver;IndyIPClient;dbxcds;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 114 | 115 | 116 | DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;emsclientfiredac;tethering;svnui;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;svn;horse_wizard;DBXOracleDriver;inetdb;emsedge;fmx;FireDACIBDriver;fmxdae;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;vcldsnap;DOSCommandDR;bindcomp;appanalytics;DBXInformixDriver;IndyIPClient;bindcompvcl;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 117 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 118 | Debug 119 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 120 | 1033 121 | 122 | 123 | DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;emsclientfiredac;tethering;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;DBXOracleDriver;inetdb;emsedge;fmx;FireDACIBDriver;fmxdae;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;vcldsnap;DOSCommandDR;bindcomp;appanalytics;DBXInformixDriver;IndyIPClient;bindcompvcl;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 124 | 125 | 126 | DEBUG;$(DCC_Define) 127 | true 128 | false 129 | true 130 | true 131 | true 132 | 133 | 134 | false 135 | 136 | 137 | false 138 | RELEASE;$(DCC_Define) 139 | 0 140 | 0 141 | 142 | 143 | 144 | MainSource 145 | 146 | 147 | Cfg_2 148 | Base 149 | 150 | 151 | Base 152 | 153 | 154 | Cfg_1 155 | Base 156 | 157 | 158 | 159 | Delphi.Personality.12 160 | Console 161 | 162 | 163 | 164 | samples.dpr 165 | 166 | 167 | 168 | 169 | 170 | true 171 | 172 | 173 | 174 | 175 | true 176 | 177 | 178 | 179 | 180 | true 181 | 182 | 183 | 184 | 185 | samples.exe 186 | true 187 | 188 | 189 | 190 | 191 | 1 192 | 193 | 194 | 0 195 | 196 | 197 | 198 | 199 | classes 200 | 1 201 | 202 | 203 | 204 | 205 | res\xml 206 | 1 207 | 208 | 209 | 210 | 211 | library\lib\armeabi-v7a 212 | 1 213 | 214 | 215 | 216 | 217 | library\lib\armeabi 218 | 1 219 | 220 | 221 | 222 | 223 | library\lib\mips 224 | 1 225 | 226 | 227 | 228 | 229 | library\lib\armeabi-v7a 230 | 1 231 | 232 | 233 | 234 | 235 | res\drawable 236 | 1 237 | 238 | 239 | 240 | 241 | res\values 242 | 1 243 | 244 | 245 | 246 | 247 | res\values-v21 248 | 1 249 | 250 | 251 | 252 | 253 | res\values 254 | 1 255 | 256 | 257 | 258 | 259 | res\drawable 260 | 1 261 | 262 | 263 | 264 | 265 | res\drawable-xxhdpi 266 | 1 267 | 268 | 269 | 270 | 271 | res\drawable-ldpi 272 | 1 273 | 274 | 275 | 276 | 277 | res\drawable-mdpi 278 | 1 279 | 280 | 281 | 282 | 283 | res\drawable-hdpi 284 | 1 285 | 286 | 287 | 288 | 289 | res\drawable-xhdpi 290 | 1 291 | 292 | 293 | 294 | 295 | res\drawable-mdpi 296 | 1 297 | 298 | 299 | 300 | 301 | res\drawable-hdpi 302 | 1 303 | 304 | 305 | 306 | 307 | res\drawable-xhdpi 308 | 1 309 | 310 | 311 | 312 | 313 | res\drawable-xxhdpi 314 | 1 315 | 316 | 317 | 318 | 319 | res\drawable-xxxhdpi 320 | 1 321 | 322 | 323 | 324 | 325 | res\drawable-small 326 | 1 327 | 328 | 329 | 330 | 331 | res\drawable-normal 332 | 1 333 | 334 | 335 | 336 | 337 | res\drawable-large 338 | 1 339 | 340 | 341 | 342 | 343 | res\drawable-xlarge 344 | 1 345 | 346 | 347 | 348 | 349 | res\values 350 | 1 351 | 352 | 353 | 354 | 355 | 1 356 | 357 | 358 | 1 359 | 360 | 361 | 0 362 | 363 | 364 | 365 | 366 | 1 367 | .framework 368 | 369 | 370 | 1 371 | .framework 372 | 373 | 374 | 0 375 | 376 | 377 | 378 | 379 | 1 380 | .dylib 381 | 382 | 383 | 1 384 | .dylib 385 | 386 | 387 | 0 388 | .dll;.bpl 389 | 390 | 391 | 392 | 393 | 1 394 | .dylib 395 | 396 | 397 | 1 398 | .dylib 399 | 400 | 401 | 1 402 | .dylib 403 | 404 | 405 | 1 406 | .dylib 407 | 408 | 409 | 1 410 | .dylib 411 | 412 | 413 | 0 414 | .bpl 415 | 416 | 417 | 418 | 419 | 0 420 | 421 | 422 | 0 423 | 424 | 425 | 0 426 | 427 | 428 | 0 429 | 430 | 431 | 0 432 | 433 | 434 | 0 435 | 436 | 437 | 0 438 | 439 | 440 | 441 | 442 | 1 443 | 444 | 445 | 1 446 | 447 | 448 | 1 449 | 450 | 451 | 452 | 453 | 1 454 | 455 | 456 | 1 457 | 458 | 459 | 1 460 | 461 | 462 | 463 | 464 | 1 465 | 466 | 467 | 1 468 | 469 | 470 | 1 471 | 472 | 473 | 474 | 475 | 1 476 | 477 | 478 | 1 479 | 480 | 481 | 1 482 | 483 | 484 | 485 | 486 | 1 487 | 488 | 489 | 1 490 | 491 | 492 | 1 493 | 494 | 495 | 496 | 497 | 1 498 | 499 | 500 | 1 501 | 502 | 503 | 1 504 | 505 | 506 | 507 | 508 | 1 509 | 510 | 511 | 1 512 | 513 | 514 | 1 515 | 516 | 517 | 518 | 519 | 1 520 | 521 | 522 | 1 523 | 524 | 525 | 1 526 | 527 | 528 | 529 | 530 | 1 531 | 532 | 533 | 1 534 | 535 | 536 | 1 537 | 538 | 539 | 540 | 541 | 1 542 | 543 | 544 | 1 545 | 546 | 547 | 1 548 | 549 | 550 | 551 | 552 | 1 553 | 554 | 555 | 1 556 | 557 | 558 | 1 559 | 560 | 561 | 562 | 563 | 1 564 | 565 | 566 | 1 567 | 568 | 569 | 1 570 | 571 | 572 | 573 | 574 | 1 575 | 576 | 577 | 1 578 | 579 | 580 | 1 581 | 582 | 583 | 584 | 585 | 1 586 | 587 | 588 | 1 589 | 590 | 591 | 1 592 | 593 | 594 | 595 | 596 | 1 597 | 598 | 599 | 1 600 | 601 | 602 | 1 603 | 604 | 605 | 606 | 607 | 1 608 | 609 | 610 | 1 611 | 612 | 613 | 1 614 | 615 | 616 | 617 | 618 | 1 619 | 620 | 621 | 1 622 | 623 | 624 | 1 625 | 626 | 627 | 628 | 629 | 1 630 | 631 | 632 | 1 633 | 634 | 635 | 1 636 | 637 | 638 | 639 | 640 | 1 641 | 642 | 643 | 1 644 | 645 | 646 | 1 647 | 648 | 649 | 650 | 651 | 1 652 | 653 | 654 | 1 655 | 656 | 657 | 1 658 | 659 | 660 | 661 | 662 | 1 663 | 664 | 665 | 1 666 | 667 | 668 | 1 669 | 670 | 671 | 672 | 673 | 1 674 | 675 | 676 | 1 677 | 678 | 679 | 1 680 | 681 | 682 | 683 | 684 | 1 685 | 686 | 687 | 1 688 | 689 | 690 | 1 691 | 692 | 693 | 694 | 695 | 1 696 | 697 | 698 | 1 699 | 700 | 701 | 1 702 | 703 | 704 | 705 | 706 | 1 707 | 708 | 709 | 710 | 711 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 712 | 1 713 | 714 | 715 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 716 | 1 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 1 725 | 726 | 727 | 1 728 | 729 | 730 | 1 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | Contents\Resources 739 | 1 740 | 741 | 742 | Contents\Resources 743 | 1 744 | 745 | 746 | 747 | 748 | library\lib\armeabi-v7a 749 | 1 750 | 751 | 752 | 1 753 | 754 | 755 | 1 756 | 757 | 758 | 1 759 | 760 | 761 | 1 762 | 763 | 764 | 1 765 | 766 | 767 | 1 768 | 769 | 770 | 0 771 | 772 | 773 | 774 | 775 | 1 776 | 777 | 778 | 1 779 | 780 | 781 | 782 | 783 | Assets 784 | 1 785 | 786 | 787 | Assets 788 | 1 789 | 790 | 791 | 792 | 793 | Assets 794 | 1 795 | 796 | 797 | Assets 798 | 1 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | False 813 | False 814 | False 815 | False 816 | False 817 | False 818 | False 819 | True 820 | False 821 | 822 | 823 | 12 824 | 825 | 826 | 827 | 828 | 829 | -------------------------------------------------------------------------------- /compression/boss-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "hash": "6ef9161b900632671022358216c7dfe7", 3 | "updated": "2019-10-15T21:03:39.5333026-03:00", 4 | "installedModules": { 5 | "github.com/hashload/horse": { 6 | "name": "horse", 7 | "version": "1.7.0", 8 | "hash": "7c3b15d6289c0ab49f483626c61da28b", 9 | "artifacts": {}, 10 | "failed": false, 11 | "changed": false 12 | }, 13 | "github.com/hashload/jhonson": { 14 | "name": "jhonson", 15 | "version": "1.0.3", 16 | "hash": "334dfe6b2e7daa4cb6af5b1bf88ec76e", 17 | "artifacts": {}, 18 | "failed": false, 19 | "changed": false 20 | }, 21 | "github.com/viniciussanchez/horse-compression": { 22 | "name": "horse-compression", 23 | "version": "v1.1.0", 24 | "hash": "5c91a684f9b963fef3b3231e18593047", 25 | "artifacts": {}, 26 | "failed": false, 27 | "changed": false 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /compression/boss.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "samples", 3 | "description": "", 4 | "version": "1.0.0", 5 | "homepage": "", 6 | "mainsrc": "./", 7 | "projects": [], 8 | "dependencies": { 9 | "github.com/HashLoad/horse": "^1.7.0", 10 | "github.com/HashLoad/jhonson": "^1.0.3", 11 | "github.com/viniciussanchez/horse-compression": "^v1.1.0" 12 | } 13 | } -------------------------------------------------------------------------------- /compression/samples.dpr: -------------------------------------------------------------------------------- 1 | program samples; 2 | 3 | {$APPTYPE CONSOLE} 4 | 5 | uses 6 | Horse, 7 | Horse.Jhonson, 8 | Horse.Compression, 9 | System.JSON; 10 | 11 | {$R *.res} 12 | 13 | var 14 | App: THorse; 15 | 16 | begin 17 | App := THorse.Create(9000); 18 | 19 | App.Use(Compression(1024)); // Must come before Jhonson middleware 20 | App.Use(Jhonson); 21 | 22 | App.Get('ping', 23 | procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc) 24 | var 25 | LPong: TJSONArray; 26 | begin 27 | LPong := TJSONArray.Create; 28 | for var I := 0 to 1000 do 29 | LPong.Add(TJSONObject.Create(TJSONPair.Create('ping', 'pong'))); 30 | Res.Send(LPong); 31 | end); 32 | 33 | App.Start; 34 | end. 35 | -------------------------------------------------------------------------------- /compression/samples.dproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {D623FD64-30E9-4410-B808-2224EF220D92} 4 | 18.7 5 | None 6 | samples.dpr 7 | True 8 | Debug 9 | Win32 10 | 1 11 | Console 12 | 13 | 14 | true 15 | 16 | 17 | true 18 | Base 19 | true 20 | 21 | 22 | true 23 | Base 24 | true 25 | 26 | 27 | true 28 | Base 29 | true 30 | 31 | 32 | true 33 | Base 34 | true 35 | 36 | 37 | true 38 | Base 39 | true 40 | 41 | 42 | true 43 | Base 44 | true 45 | 46 | 47 | true 48 | Base 49 | true 50 | 51 | 52 | true 53 | Base 54 | true 55 | 56 | 57 | true 58 | Base 59 | true 60 | 61 | 62 | true 63 | Base 64 | true 65 | 66 | 67 | true 68 | Cfg_1 69 | true 70 | true 71 | 72 | 73 | true 74 | Base 75 | true 76 | 77 | 78 | .\$(Platform)\$(Config) 79 | .\$(Platform)\$(Config) 80 | false 81 | false 82 | false 83 | false 84 | false 85 | System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) 86 | true 87 | $(BDS)\bin\delphi_PROJECTICON.ico 88 | $(BDS)\bin\delphi_PROJECTICNS.icns 89 | $(Horse);modules\.dcp;modules\.dcu;modules;modules\horse\src;modules\horse-compression\src;modules\jhonson\src;$(DCC_UnitSearchPath) 90 | VCL;$(DCC_Framework) 91 | samples 92 | 93 | 94 | DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) 95 | android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar 96 | 97 | 98 | DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) 99 | 100 | 101 | DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) 102 | 103 | 104 | DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) 105 | 106 | 107 | RESTComponents;emsclientfiredac;DataSnapFireDAC;FireDACADSDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;inetdb;emsedge;FireDACIBDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;soapserver;bindengine;CloudService;FireDACOracleDriver;FireDACMySQLDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndySystem;FireDACDb2Driver;FireDACInfxDriver;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;rtl;emsserverresource;DbxClientDriver;CustomIPTransport;bindcomp;dbxcds;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;dbrtl;IndyProtocols;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 108 | 109 | 110 | DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;FireDACMSSQLDriver;bindcompfmx;DBXOracleDriver;inetdb;fmx;FireDACIBDriver;fmxdae;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;FireDACDSDriver;rtl;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;bindcomp;DBXInformixDriver;IndyIPClient;dbxcds;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 111 | 112 | 113 | DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;FireDACMSSQLDriver;bindcompfmx;DBXOracleDriver;inetdb;fmx;FireDACIBDriver;fmxdae;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;FireDACDSDriver;rtl;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;bindcomp;DBXInformixDriver;IndyIPClient;dbxcds;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 114 | 115 | 116 | DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;emsclientfiredac;tethering;svnui;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;svn;horse_wizard;DBXOracleDriver;inetdb;emsedge;fmx;FireDACIBDriver;fmxdae;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;vcldsnap;DOSCommandDR;bindcomp;appanalytics;DBXInformixDriver;IndyIPClient;bindcompvcl;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 117 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 118 | Debug 119 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 120 | 1033 121 | 122 | 123 | DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;emsclientfiredac;tethering;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;DBXOracleDriver;inetdb;emsedge;fmx;FireDACIBDriver;fmxdae;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;vcldsnap;DOSCommandDR;bindcomp;appanalytics;DBXInformixDriver;IndyIPClient;bindcompvcl;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 124 | 125 | 126 | DEBUG;$(DCC_Define) 127 | true 128 | false 129 | true 130 | true 131 | true 132 | 133 | 134 | false 135 | 136 | 137 | false 138 | RELEASE;$(DCC_Define) 139 | 0 140 | 0 141 | 142 | 143 | 144 | MainSource 145 | 146 | 147 | Cfg_2 148 | Base 149 | 150 | 151 | Base 152 | 153 | 154 | Cfg_1 155 | Base 156 | 157 | 158 | 159 | Delphi.Personality.12 160 | Console 161 | 162 | 163 | 164 | samples.dpr 165 | 166 | 167 | 168 | 169 | 170 | true 171 | 172 | 173 | 174 | 175 | true 176 | 177 | 178 | 179 | 180 | true 181 | 182 | 183 | 184 | 185 | samples.exe 186 | true 187 | 188 | 189 | 190 | 191 | 1 192 | 193 | 194 | 0 195 | 196 | 197 | 198 | 199 | classes 200 | 1 201 | 202 | 203 | 204 | 205 | res\xml 206 | 1 207 | 208 | 209 | 210 | 211 | library\lib\armeabi-v7a 212 | 1 213 | 214 | 215 | 216 | 217 | library\lib\armeabi 218 | 1 219 | 220 | 221 | 222 | 223 | library\lib\mips 224 | 1 225 | 226 | 227 | 228 | 229 | library\lib\armeabi-v7a 230 | 1 231 | 232 | 233 | 234 | 235 | res\drawable 236 | 1 237 | 238 | 239 | 240 | 241 | res\values 242 | 1 243 | 244 | 245 | 246 | 247 | res\values-v21 248 | 1 249 | 250 | 251 | 252 | 253 | res\values 254 | 1 255 | 256 | 257 | 258 | 259 | res\drawable 260 | 1 261 | 262 | 263 | 264 | 265 | res\drawable-xxhdpi 266 | 1 267 | 268 | 269 | 270 | 271 | res\drawable-ldpi 272 | 1 273 | 274 | 275 | 276 | 277 | res\drawable-mdpi 278 | 1 279 | 280 | 281 | 282 | 283 | res\drawable-hdpi 284 | 1 285 | 286 | 287 | 288 | 289 | res\drawable-xhdpi 290 | 1 291 | 292 | 293 | 294 | 295 | res\drawable-mdpi 296 | 1 297 | 298 | 299 | 300 | 301 | res\drawable-hdpi 302 | 1 303 | 304 | 305 | 306 | 307 | res\drawable-xhdpi 308 | 1 309 | 310 | 311 | 312 | 313 | res\drawable-xxhdpi 314 | 1 315 | 316 | 317 | 318 | 319 | res\drawable-xxxhdpi 320 | 1 321 | 322 | 323 | 324 | 325 | res\drawable-small 326 | 1 327 | 328 | 329 | 330 | 331 | res\drawable-normal 332 | 1 333 | 334 | 335 | 336 | 337 | res\drawable-large 338 | 1 339 | 340 | 341 | 342 | 343 | res\drawable-xlarge 344 | 1 345 | 346 | 347 | 348 | 349 | res\values 350 | 1 351 | 352 | 353 | 354 | 355 | 1 356 | 357 | 358 | 1 359 | 360 | 361 | 0 362 | 363 | 364 | 365 | 366 | 1 367 | .framework 368 | 369 | 370 | 1 371 | .framework 372 | 373 | 374 | 0 375 | 376 | 377 | 378 | 379 | 1 380 | .dylib 381 | 382 | 383 | 1 384 | .dylib 385 | 386 | 387 | 0 388 | .dll;.bpl 389 | 390 | 391 | 392 | 393 | 1 394 | .dylib 395 | 396 | 397 | 1 398 | .dylib 399 | 400 | 401 | 1 402 | .dylib 403 | 404 | 405 | 1 406 | .dylib 407 | 408 | 409 | 1 410 | .dylib 411 | 412 | 413 | 0 414 | .bpl 415 | 416 | 417 | 418 | 419 | 0 420 | 421 | 422 | 0 423 | 424 | 425 | 0 426 | 427 | 428 | 0 429 | 430 | 431 | 0 432 | 433 | 434 | 0 435 | 436 | 437 | 0 438 | 439 | 440 | 441 | 442 | 1 443 | 444 | 445 | 1 446 | 447 | 448 | 1 449 | 450 | 451 | 452 | 453 | 1 454 | 455 | 456 | 1 457 | 458 | 459 | 1 460 | 461 | 462 | 463 | 464 | 1 465 | 466 | 467 | 1 468 | 469 | 470 | 1 471 | 472 | 473 | 474 | 475 | 1 476 | 477 | 478 | 1 479 | 480 | 481 | 1 482 | 483 | 484 | 485 | 486 | 1 487 | 488 | 489 | 1 490 | 491 | 492 | 1 493 | 494 | 495 | 496 | 497 | 1 498 | 499 | 500 | 1 501 | 502 | 503 | 1 504 | 505 | 506 | 507 | 508 | 1 509 | 510 | 511 | 1 512 | 513 | 514 | 1 515 | 516 | 517 | 518 | 519 | 1 520 | 521 | 522 | 1 523 | 524 | 525 | 1 526 | 527 | 528 | 529 | 530 | 1 531 | 532 | 533 | 1 534 | 535 | 536 | 1 537 | 538 | 539 | 540 | 541 | 1 542 | 543 | 544 | 1 545 | 546 | 547 | 1 548 | 549 | 550 | 551 | 552 | 1 553 | 554 | 555 | 1 556 | 557 | 558 | 1 559 | 560 | 561 | 562 | 563 | 1 564 | 565 | 566 | 1 567 | 568 | 569 | 1 570 | 571 | 572 | 573 | 574 | 1 575 | 576 | 577 | 1 578 | 579 | 580 | 1 581 | 582 | 583 | 584 | 585 | 1 586 | 587 | 588 | 1 589 | 590 | 591 | 1 592 | 593 | 594 | 595 | 596 | 1 597 | 598 | 599 | 1 600 | 601 | 602 | 1 603 | 604 | 605 | 606 | 607 | 1 608 | 609 | 610 | 1 611 | 612 | 613 | 1 614 | 615 | 616 | 617 | 618 | 1 619 | 620 | 621 | 1 622 | 623 | 624 | 1 625 | 626 | 627 | 628 | 629 | 1 630 | 631 | 632 | 1 633 | 634 | 635 | 1 636 | 637 | 638 | 639 | 640 | 1 641 | 642 | 643 | 1 644 | 645 | 646 | 1 647 | 648 | 649 | 650 | 651 | 1 652 | 653 | 654 | 1 655 | 656 | 657 | 1 658 | 659 | 660 | 661 | 662 | 1 663 | 664 | 665 | 1 666 | 667 | 668 | 1 669 | 670 | 671 | 672 | 673 | 1 674 | 675 | 676 | 1 677 | 678 | 679 | 1 680 | 681 | 682 | 683 | 684 | 1 685 | 686 | 687 | 1 688 | 689 | 690 | 1 691 | 692 | 693 | 694 | 695 | 1 696 | 697 | 698 | 1 699 | 700 | 701 | 1 702 | 703 | 704 | 705 | 706 | 1 707 | 708 | 709 | 710 | 711 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 712 | 1 713 | 714 | 715 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 716 | 1 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 1 725 | 726 | 727 | 1 728 | 729 | 730 | 1 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | Contents\Resources 739 | 1 740 | 741 | 742 | Contents\Resources 743 | 1 744 | 745 | 746 | 747 | 748 | library\lib\armeabi-v7a 749 | 1 750 | 751 | 752 | 1 753 | 754 | 755 | 1 756 | 757 | 758 | 1 759 | 760 | 761 | 1 762 | 763 | 764 | 1 765 | 766 | 767 | 1 768 | 769 | 770 | 0 771 | 772 | 773 | 774 | 775 | 1 776 | 777 | 778 | 1 779 | 780 | 781 | 782 | 783 | Assets 784 | 1 785 | 786 | 787 | Assets 788 | 1 789 | 790 | 791 | 792 | 793 | Assets 794 | 1 795 | 796 | 797 | Assets 798 | 1 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | False 813 | False 814 | False 815 | False 816 | False 817 | False 818 | False 819 | True 820 | False 821 | 822 | 823 | 12 824 | 825 | 826 | 827 | 828 | 829 | -------------------------------------------------------------------------------- /docker/boss-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "hash": "6ef9161b900632671022358216c7dfe7", 3 | "updated": "2019-10-14T21:38:18.9623297-03:00", 4 | "installedModules": { 5 | "github.com/hashload/horse": { 6 | "name": "horse", 7 | "version": "1.7.0", 8 | "hash": "7c3b15d6289c0ab49f483626c61da28b", 9 | "artifacts": {}, 10 | "failed": false, 11 | "changed": false 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /docker/boss.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "samples", 3 | "description": "", 4 | "version": "1.0.0", 5 | "homepage": "", 6 | "mainsrc": "./", 7 | "projects": [], 8 | "dependencies": { 9 | "github.com/HashLoad/horse": "^1.7.0" 10 | } 11 | } -------------------------------------------------------------------------------- /docker/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: '2.1' 2 | 3 | services: 4 | horse: 5 | image: hashload/delphi-dev:10.3.2-rio 6 | privileged: true 7 | tty: true 8 | ports: 9 | - '9000:9000' 10 | - '64211:64211' 11 | 12 | mongo: 13 | image: mongo 14 | ports: 15 | - '27017:27017' -------------------------------------------------------------------------------- /docker/samples.dpr: -------------------------------------------------------------------------------- 1 | program samples; 2 | 3 | {$APPTYPE CONSOLE} 4 | 5 | uses 6 | Horse; 7 | 8 | var 9 | App: THorse; 10 | 11 | begin 12 | App := THorse.Create(9000); 13 | 14 | App.Get('/ping', 15 | procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc) 16 | begin 17 | Res.Send('pong'); 18 | end); 19 | 20 | App.Start; 21 | end. 22 | -------------------------------------------------------------------------------- /handler-exception/boss-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "hash": "6ef9161b900632671022358216c7dfe7", 3 | "updated": "2019-10-15T22:07:14.0506259-03:00", 4 | "installedModules": { 5 | "github.com/hashload/handle-exception": { 6 | "name": "handle-exception", 7 | "version": "0.1.2", 8 | "hash": "8140d3e64a725376e986d90f419cacc8", 9 | "artifacts": {}, 10 | "failed": false, 11 | "changed": false 12 | }, 13 | "github.com/hashload/horse": { 14 | "name": "horse", 15 | "version": "1.7.0", 16 | "hash": "7c3b15d6289c0ab49f483626c61da28b", 17 | "artifacts": {}, 18 | "failed": false, 19 | "changed": false 20 | }, 21 | "github.com/hashload/jhonson": { 22 | "name": "jhonson", 23 | "version": "1.0.3", 24 | "hash": "334dfe6b2e7daa4cb6af5b1bf88ec76e", 25 | "artifacts": {}, 26 | "failed": false, 27 | "changed": false 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /handler-exception/boss.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "samples", 3 | "description": "", 4 | "version": "1.0.0", 5 | "homepage": "", 6 | "mainsrc": "./", 7 | "projects": [], 8 | "dependencies": { 9 | "github.com/HashLoad/handle-exception": "^0.1.2", 10 | "github.com/HashLoad/horse": "^1.7.0", 11 | "github.com/hashload/jhonson": "^1.0.3" 12 | } 13 | } -------------------------------------------------------------------------------- /handler-exception/samples.dpr: -------------------------------------------------------------------------------- 1 | program samples; 2 | 3 | {$APPTYPE CONSOLE} 4 | 5 | uses 6 | Horse, 7 | Horse.Jhonson, 8 | Horse.HandleException, 9 | System.SysUtils; 10 | 11 | {$R *.res} 12 | 13 | var 14 | App: THorse; 15 | 16 | begin 17 | App := THorse.Create(9000); 18 | 19 | App.Use(Jhonson); 20 | App.Use(HandleException); 21 | 22 | App.Get('ping', 23 | procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc) 24 | begin 25 | raise Exception.Create('Meu erro personalizado!'); 26 | end); 27 | 28 | App.Start; 29 | end. 30 | -------------------------------------------------------------------------------- /handler-exception/samples.dproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {B0770279-97A0-4807-914E-5A19D3611639} 4 | 18.7 5 | None 6 | samples.dpr 7 | True 8 | Debug 9 | Win32 10 | 1 11 | Console 12 | 13 | 14 | true 15 | 16 | 17 | true 18 | Base 19 | true 20 | 21 | 22 | true 23 | Base 24 | true 25 | 26 | 27 | true 28 | Base 29 | true 30 | 31 | 32 | true 33 | Base 34 | true 35 | 36 | 37 | true 38 | Base 39 | true 40 | 41 | 42 | true 43 | Base 44 | true 45 | 46 | 47 | true 48 | Base 49 | true 50 | 51 | 52 | true 53 | Base 54 | true 55 | 56 | 57 | true 58 | Base 59 | true 60 | 61 | 62 | true 63 | Base 64 | true 65 | 66 | 67 | true 68 | Cfg_1 69 | true 70 | true 71 | 72 | 73 | true 74 | Base 75 | true 76 | 77 | 78 | .\$(Platform)\$(Config) 79 | .\$(Platform)\$(Config) 80 | false 81 | false 82 | false 83 | false 84 | false 85 | System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) 86 | true 87 | $(BDS)\bin\delphi_PROJECTICON.ico 88 | $(BDS)\bin\delphi_PROJECTICNS.icns 89 | $(Horse);modules\.dcp;modules\.dcu;modules;modules\handle-exception\Src;modules\horse\src;modules\jhonson\src;$(DCC_UnitSearchPath) 90 | VCL;$(DCC_Framework) 91 | samples 92 | 93 | 94 | DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) 95 | android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar 96 | 97 | 98 | DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) 99 | 100 | 101 | DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) 102 | 103 | 104 | DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) 105 | 106 | 107 | RESTComponents;emsclientfiredac;DataSnapFireDAC;FireDACADSDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;inetdb;emsedge;FireDACIBDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;soapserver;bindengine;CloudService;FireDACOracleDriver;FireDACMySQLDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndySystem;FireDACDb2Driver;FireDACInfxDriver;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;rtl;emsserverresource;DbxClientDriver;CustomIPTransport;bindcomp;dbxcds;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;dbrtl;IndyProtocols;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 108 | 109 | 110 | DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;FireDACMSSQLDriver;bindcompfmx;DBXOracleDriver;inetdb;fmx;FireDACIBDriver;fmxdae;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;FireDACDSDriver;rtl;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;bindcomp;DBXInformixDriver;IndyIPClient;dbxcds;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 111 | 112 | 113 | DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;FireDACMSSQLDriver;bindcompfmx;DBXOracleDriver;inetdb;fmx;FireDACIBDriver;fmxdae;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;FireDACDSDriver;rtl;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;bindcomp;DBXInformixDriver;IndyIPClient;dbxcds;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 114 | 115 | 116 | DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;emsclientfiredac;tethering;svnui;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;svn;horse_wizard;DBXOracleDriver;inetdb;emsedge;fmx;FireDACIBDriver;fmxdae;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;vcldsnap;DOSCommandDR;bindcomp;appanalytics;DBXInformixDriver;IndyIPClient;bindcompvcl;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 117 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 118 | Debug 119 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 120 | 1033 121 | 122 | 123 | DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;emsclientfiredac;tethering;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;DBXOracleDriver;inetdb;emsedge;fmx;FireDACIBDriver;fmxdae;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;vcldsnap;DOSCommandDR;bindcomp;appanalytics;DBXInformixDriver;IndyIPClient;bindcompvcl;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 124 | 125 | 126 | DEBUG;$(DCC_Define) 127 | true 128 | false 129 | true 130 | true 131 | true 132 | 133 | 134 | false 135 | 136 | 137 | false 138 | RELEASE;$(DCC_Define) 139 | 0 140 | 0 141 | 142 | 143 | 144 | MainSource 145 | 146 | 147 | Cfg_2 148 | Base 149 | 150 | 151 | Base 152 | 153 | 154 | Cfg_1 155 | Base 156 | 157 | 158 | 159 | Delphi.Personality.12 160 | Console 161 | 162 | 163 | 164 | samples.dpr 165 | 166 | 167 | 168 | 169 | 170 | true 171 | 172 | 173 | 174 | 175 | true 176 | 177 | 178 | 179 | 180 | true 181 | 182 | 183 | 184 | 185 | samples.exe 186 | true 187 | 188 | 189 | 190 | 191 | 1 192 | 193 | 194 | 0 195 | 196 | 197 | 198 | 199 | classes 200 | 1 201 | 202 | 203 | 204 | 205 | res\xml 206 | 1 207 | 208 | 209 | 210 | 211 | library\lib\armeabi-v7a 212 | 1 213 | 214 | 215 | 216 | 217 | library\lib\armeabi 218 | 1 219 | 220 | 221 | 222 | 223 | library\lib\mips 224 | 1 225 | 226 | 227 | 228 | 229 | library\lib\armeabi-v7a 230 | 1 231 | 232 | 233 | 234 | 235 | res\drawable 236 | 1 237 | 238 | 239 | 240 | 241 | res\values 242 | 1 243 | 244 | 245 | 246 | 247 | res\values-v21 248 | 1 249 | 250 | 251 | 252 | 253 | res\values 254 | 1 255 | 256 | 257 | 258 | 259 | res\drawable 260 | 1 261 | 262 | 263 | 264 | 265 | res\drawable-xxhdpi 266 | 1 267 | 268 | 269 | 270 | 271 | res\drawable-ldpi 272 | 1 273 | 274 | 275 | 276 | 277 | res\drawable-mdpi 278 | 1 279 | 280 | 281 | 282 | 283 | res\drawable-hdpi 284 | 1 285 | 286 | 287 | 288 | 289 | res\drawable-xhdpi 290 | 1 291 | 292 | 293 | 294 | 295 | res\drawable-mdpi 296 | 1 297 | 298 | 299 | 300 | 301 | res\drawable-hdpi 302 | 1 303 | 304 | 305 | 306 | 307 | res\drawable-xhdpi 308 | 1 309 | 310 | 311 | 312 | 313 | res\drawable-xxhdpi 314 | 1 315 | 316 | 317 | 318 | 319 | res\drawable-xxxhdpi 320 | 1 321 | 322 | 323 | 324 | 325 | res\drawable-small 326 | 1 327 | 328 | 329 | 330 | 331 | res\drawable-normal 332 | 1 333 | 334 | 335 | 336 | 337 | res\drawable-large 338 | 1 339 | 340 | 341 | 342 | 343 | res\drawable-xlarge 344 | 1 345 | 346 | 347 | 348 | 349 | res\values 350 | 1 351 | 352 | 353 | 354 | 355 | 1 356 | 357 | 358 | 1 359 | 360 | 361 | 0 362 | 363 | 364 | 365 | 366 | 1 367 | .framework 368 | 369 | 370 | 1 371 | .framework 372 | 373 | 374 | 0 375 | 376 | 377 | 378 | 379 | 1 380 | .dylib 381 | 382 | 383 | 1 384 | .dylib 385 | 386 | 387 | 0 388 | .dll;.bpl 389 | 390 | 391 | 392 | 393 | 1 394 | .dylib 395 | 396 | 397 | 1 398 | .dylib 399 | 400 | 401 | 1 402 | .dylib 403 | 404 | 405 | 1 406 | .dylib 407 | 408 | 409 | 1 410 | .dylib 411 | 412 | 413 | 0 414 | .bpl 415 | 416 | 417 | 418 | 419 | 0 420 | 421 | 422 | 0 423 | 424 | 425 | 0 426 | 427 | 428 | 0 429 | 430 | 431 | 0 432 | 433 | 434 | 0 435 | 436 | 437 | 0 438 | 439 | 440 | 441 | 442 | 1 443 | 444 | 445 | 1 446 | 447 | 448 | 1 449 | 450 | 451 | 452 | 453 | 1 454 | 455 | 456 | 1 457 | 458 | 459 | 1 460 | 461 | 462 | 463 | 464 | 1 465 | 466 | 467 | 1 468 | 469 | 470 | 1 471 | 472 | 473 | 474 | 475 | 1 476 | 477 | 478 | 1 479 | 480 | 481 | 1 482 | 483 | 484 | 485 | 486 | 1 487 | 488 | 489 | 1 490 | 491 | 492 | 1 493 | 494 | 495 | 496 | 497 | 1 498 | 499 | 500 | 1 501 | 502 | 503 | 1 504 | 505 | 506 | 507 | 508 | 1 509 | 510 | 511 | 1 512 | 513 | 514 | 1 515 | 516 | 517 | 518 | 519 | 1 520 | 521 | 522 | 1 523 | 524 | 525 | 1 526 | 527 | 528 | 529 | 530 | 1 531 | 532 | 533 | 1 534 | 535 | 536 | 1 537 | 538 | 539 | 540 | 541 | 1 542 | 543 | 544 | 1 545 | 546 | 547 | 1 548 | 549 | 550 | 551 | 552 | 1 553 | 554 | 555 | 1 556 | 557 | 558 | 1 559 | 560 | 561 | 562 | 563 | 1 564 | 565 | 566 | 1 567 | 568 | 569 | 1 570 | 571 | 572 | 573 | 574 | 1 575 | 576 | 577 | 1 578 | 579 | 580 | 1 581 | 582 | 583 | 584 | 585 | 1 586 | 587 | 588 | 1 589 | 590 | 591 | 1 592 | 593 | 594 | 595 | 596 | 1 597 | 598 | 599 | 1 600 | 601 | 602 | 1 603 | 604 | 605 | 606 | 607 | 1 608 | 609 | 610 | 1 611 | 612 | 613 | 1 614 | 615 | 616 | 617 | 618 | 1 619 | 620 | 621 | 1 622 | 623 | 624 | 1 625 | 626 | 627 | 628 | 629 | 1 630 | 631 | 632 | 1 633 | 634 | 635 | 1 636 | 637 | 638 | 639 | 640 | 1 641 | 642 | 643 | 1 644 | 645 | 646 | 1 647 | 648 | 649 | 650 | 651 | 1 652 | 653 | 654 | 1 655 | 656 | 657 | 1 658 | 659 | 660 | 661 | 662 | 1 663 | 664 | 665 | 1 666 | 667 | 668 | 1 669 | 670 | 671 | 672 | 673 | 1 674 | 675 | 676 | 1 677 | 678 | 679 | 1 680 | 681 | 682 | 683 | 684 | 1 685 | 686 | 687 | 1 688 | 689 | 690 | 1 691 | 692 | 693 | 694 | 695 | 1 696 | 697 | 698 | 1 699 | 700 | 701 | 1 702 | 703 | 704 | 705 | 706 | 1 707 | 708 | 709 | 710 | 711 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 712 | 1 713 | 714 | 715 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 716 | 1 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 1 725 | 726 | 727 | 1 728 | 729 | 730 | 1 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | Contents\Resources 739 | 1 740 | 741 | 742 | Contents\Resources 743 | 1 744 | 745 | 746 | 747 | 748 | library\lib\armeabi-v7a 749 | 1 750 | 751 | 752 | 1 753 | 754 | 755 | 1 756 | 757 | 758 | 1 759 | 760 | 761 | 1 762 | 763 | 764 | 1 765 | 766 | 767 | 1 768 | 769 | 770 | 0 771 | 772 | 773 | 774 | 775 | 1 776 | 777 | 778 | 1 779 | 780 | 781 | 782 | 783 | Assets 784 | 1 785 | 786 | 787 | Assets 788 | 1 789 | 790 | 791 | 792 | 793 | Assets 794 | 1 795 | 796 | 797 | Assets 798 | 1 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | False 813 | False 814 | False 815 | False 816 | False 817 | False 818 | False 819 | True 820 | False 821 | 822 | 823 | 12 824 | 825 | 826 | 827 | 828 | 829 | -------------------------------------------------------------------------------- /horse.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viniciussanchez/coderage/9f12b6f77252b44be4963adf0e3de108c579e86c/horse.pdf -------------------------------------------------------------------------------- /iis/ISAPI.dpr: -------------------------------------------------------------------------------- 1 | library ISAPI; 2 | 3 | uses 4 | Horse.ISAPI, 5 | Web.Win.ISAPIApp; 6 | 7 | {$R *.res} 8 | 9 | exports 10 | GetExtensionVersion, 11 | HttpExtensionProc, 12 | TerminateExtension; 13 | 14 | var 15 | App: THorse; 16 | 17 | begin 18 | App := THorse.Create; 19 | 20 | App.Get('/ping', 21 | procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc) 22 | begin 23 | Res.Send('pong'); 24 | end); 25 | 26 | App.Start; 27 | end. 28 | -------------------------------------------------------------------------------- /iis/ISAPI.dproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {C88A5E06-1B89-4A28-AE2D-20DE2B5A13D5} 4 | 18.7 5 | None 6 | ISAPI.dpr 7 | True 8 | Debug 9 | Win32 10 | 1 11 | Library 12 | 13 | 14 | true 15 | 16 | 17 | true 18 | Base 19 | true 20 | 21 | 22 | true 23 | Base 24 | true 25 | 26 | 27 | true 28 | Base 29 | true 30 | 31 | 32 | true 33 | Cfg_1 34 | true 35 | true 36 | 37 | 38 | true 39 | Base 40 | true 41 | 42 | 43 | .\$(Platform)\$(Config) 44 | .\$(Platform)\$(Config) 45 | false 46 | false 47 | false 48 | false 49 | false 50 | true 51 | System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) 52 | $(BDS)\bin\delphi_PROJECTICON.ico 53 | $(BDS)\bin\delphi_PROJECTICNS.icns 54 | ISAPI 55 | modules\.dcp;modules\.dcu;modules;modules\horse\src;$(DCC_UnitSearchPath) 56 | 57 | 58 | DBXSqliteDriver;dxFlowChartRS26;dxPSdxMapControlLnkRS26;vclactnband;dxBarRS26;vclFireDAC;dxFireDACEMFRS26;tethering;dxSpreadSheetInplaceRichEditRS26;FireDACADSDriver;dxSkinVisualStudio2013BlueRS26;dxRichEditCoreRS26;dxPSdxSpreadSheetLnkRS26;dxSkinSharpPlusRS26;vcltouch;vcldb;svn;dxSkinFoggyRS26;dxSkinVisualStudio2013DarkRS26;dxSkinOffice2013DarkGrayRS26;dxGDIPlusRS26;dxAuthorizationAgentsRS26;dxPSdxFCLnkRS26;dxPSLnksRS26;dxPsPrVwAdvRS26;cxGridRS26;dxPDFViewerRS26;dxSkinSpringTimeRS26;vclx;dxPScxTLLnkRS26;dxSkinOffice2010BlueRS26;RESTBackendComponents;dxSkinOffice2016DarkRS26;uSynEdit_R2022;VCLRESTComponents;dxSkinMoneyTwinsRS26;dxSkinOffice2016ColorfulRS26;dxSkinValentineRS26;dxSkinHighContrastRS26;vclie;bindengine;CloudService;dxmdsRS26;FireDACMySQLDriver;dxdborRS26;dxSkinOffice2013WhiteRS26;dxFireDACServerModeRS26;bindcompdbx;IndyIPServer;cxPivotGridRS26;IndySystem;dxSkinDarkRoomRS26;cxTreeListdxBarPopupMenuRS26;dsnapcon;cxTreeListRS26;dxPScxPivotGridLnkRS26;cxSchedulerRibbonStyleEventEditorRS26;dxPSCoreRS26;FireDACMSAccDriver;fmxFireDAC;dxSpreadSheetRS26;vclimg;dxBarExtItemsRS26;dxPSdxGaugeControlLnkRS26;dxSkinLondonLiquidSkyRS26;dxSkinSevenRS26;dxdbtrRS26;dxRichEditControlCoreRS26;soaprtl;DbxCommonDriver;dxFlowChartAdvancedCustomizeFormRS26;dxSkinLiquidSkyRS26;dxDockingRS26;xmlrtl;soapmidas;fmxobj;cxLibraryRS26;rtl;DbxClientDriver;cxDataRS26;dxPScxSchedulerLnkRS26;dxSpreadSheetConditionalFormattingDialogsRS26;appanalytics;dxRibbonCustomizationFormRS26;cxSchedulerGridRS26;IndyIPClient;bindcompvcl;dxSkinVisualStudio2013LightRS26;dxADOEMFRS26;VclSmp;dxRibbonRS26;dxPScxCommonRS26;dxRichEditDocumentModelRS26;dxPScxGridLnkRS26;dxSkinDevExpressDarkStyleRS26;dxSpreadSheetCoreRS26;RESTComponents;dxSkinGlassOceansRS26;DBXInterBaseDriver;dxPScxExtCommonRS26;dxSkinPumpkinRS26;dxSkinXmas2008BlueRS26;svnui;dxSkinOffice2007SilverRS26;cxPageControlRS26;dxSkinTheBezierRS26;dxSkinDevExpressStyleRS26;dxRichEditControlRS26;dxGaugeControlRS26;dxorgcRS26;dxPScxVGridLnkRS26;bindcompfmx;dxSkinOffice2007PinkRS26;inetdb;dxSkinOffice2007BlueRS26;dxSkinStardustRS26;dxBarDBNavRS26;dxDBXServerModeRS26;dxSkinTheAsphaltWorldRS26;dxSkinSilverRS26;dxLayoutControlRS26;dxSkinBlueprintRS26;fmx;FireDACIBDriver;fmxdae;dxServerModeRS26;dxWizardControlRS26;dxSkiniMaginaryRS26;dxTabbedMDIRS26;dxEMFRS26;dbexpress;IndyCore;dxComnRS26;dsnap;dxSkinSharpRS26;uniGUI26m;uniGUI26Chart;FireDACCommon;cxSchedulerTreeBrowserRS26;dxADOServerModeRS26;soapserver;dxSkinOffice2007BlackRS26;cxPivotGridOLAPRS26;cxVerticalGridRS26;dxtrmdRS26;DBXMySQLDriver;cxEditorsRS26;cxSchedulerRS26;cxSchedulerWebServiceStorageRS26;dxSkinMetropolisDarkRS26;dxSkinOffice2010BlackRS26;dxPSdxLCLnkRS26;FireDACCommonODBC;FireDACCommonDriver;dxMapControlRS26;dxSkinBlackRS26;dxSkinOffice2013LightGrayRS26;inet;dxSpellCheckerRS26;dxSkinCoffeeRS26;IndyIPCommon;dxSpreadSheetCoreConditionalFormattingDialogsRS26;vcl;dxPSdxDBOCLnkRS26;dxSkinMetropolisRS26;dxSpreadSheetReportDesignerRS26;dxPScxPCProdRS26;dxNavBarRS26;uniGUI26VCL;dxCoreRS26;cxExportRS26;FireDAC;dxThemeRS26;dxHttpIndyRequestRS26;dxPSPrVwRibbonRS26;dxSkinOffice2010SilverRS26;FireDACSqliteDriver;FireDACPgDriver;dxPSRichEditControlLnkRS26;dxSkinSevenClassicRS26;cxPivotGridChartRS26;dxPSdxDBTVLnkRS26;vclwinx;dxOfficeCoreRS26;dxTileControlRS26;dxSkinsCoreRS26;CustomIPTransport;vcldsnap;DOSCommandDR;bindcomp;dxSkinLilianRS26;dxSkinSummer2008RS26;dxPSdxOCLnkRS26;dxSkinVS2010RS26;dxSkinBlueRS26;dbxcds;adortl;dxSkinMcSkinRS26;dxSkinDarkSideRS26;dxSpreadSheetCoreDialogsRS26;dxBarExtDBItemsRS26;dsnapxml;dbrtl;IndyProtocols;inetdbxpress;dxSkinOffice2007GreenRS26;dxRichEditInplaceRS26;dxSkinWhiteprintRS26;dxPSdxPDFViewerLnkRS26;dxSkinCaramelRS26;fmxase;$(DCC_UsePackage) 59 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 60 | Debug 61 | true 62 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 63 | 1033 64 | 65 | 66 | DBXSqliteDriver;dxFlowChartRS26;dxPSdxMapControlLnkRS26;vclactnband;dxBarRS26;vclFireDAC;dxFireDACEMFRS26;tethering;dxSpreadSheetInplaceRichEditRS26;FireDACADSDriver;dxSkinVisualStudio2013BlueRS26;dxRichEditCoreRS26;dxPSdxSpreadSheetLnkRS26;dxSkinSharpPlusRS26;vcltouch;vcldb;dxSkinFoggyRS26;dxSkinVisualStudio2013DarkRS26;dxSkinOffice2013DarkGrayRS26;dxGDIPlusRS26;dxAuthorizationAgentsRS26;dxPSdxFCLnkRS26;dxPSLnksRS26;dxPsPrVwAdvRS26;cxGridRS26;dxPDFViewerRS26;dxSkinSpringTimeRS26;vclx;dxPScxTLLnkRS26;dxSkinOffice2010BlueRS26;RESTBackendComponents;dxSkinOffice2016DarkRS26;uSynEdit_R2022;VCLRESTComponents;dxSkinMoneyTwinsRS26;dxSkinOffice2016ColorfulRS26;dxSkinValentineRS26;dxSkinHighContrastRS26;vclie;bindengine;CloudService;dxmdsRS26;FireDACMySQLDriver;dxdborRS26;dxSkinOffice2013WhiteRS26;dxFireDACServerModeRS26;bindcompdbx;IndyIPServer;cxPivotGridRS26;IndySystem;dxSkinDarkRoomRS26;cxTreeListdxBarPopupMenuRS26;dsnapcon;cxTreeListRS26;dxPScxPivotGridLnkRS26;cxSchedulerRibbonStyleEventEditorRS26;dxPSCoreRS26;FireDACMSAccDriver;fmxFireDAC;dxSpreadSheetRS26;vclimg;dxBarExtItemsRS26;dxPSdxGaugeControlLnkRS26;dxSkinLondonLiquidSkyRS26;dxSkinSevenRS26;dxdbtrRS26;dxRichEditControlCoreRS26;soaprtl;DbxCommonDriver;dxFlowChartAdvancedCustomizeFormRS26;dxSkinLiquidSkyRS26;dxDockingRS26;xmlrtl;soapmidas;fmxobj;cxLibraryRS26;rtl;DbxClientDriver;cxDataRS26;dxPScxSchedulerLnkRS26;dxSpreadSheetConditionalFormattingDialogsRS26;appanalytics;dxRibbonCustomizationFormRS26;cxSchedulerGridRS26;IndyIPClient;bindcompvcl;dxSkinVisualStudio2013LightRS26;dxADOEMFRS26;VclSmp;dxRibbonRS26;dxPScxCommonRS26;dxRichEditDocumentModelRS26;dxPScxGridLnkRS26;dxSkinDevExpressDarkStyleRS26;dxSpreadSheetCoreRS26;RESTComponents;dxSkinGlassOceansRS26;DBXInterBaseDriver;dxPScxExtCommonRS26;dxSkinPumpkinRS26;dxSkinXmas2008BlueRS26;dxSkinOffice2007SilverRS26;cxPageControlRS26;dxSkinTheBezierRS26;dxSkinDevExpressStyleRS26;dxRichEditControlRS26;dxGaugeControlRS26;dxorgcRS26;dxPScxVGridLnkRS26;bindcompfmx;dxSkinOffice2007PinkRS26;inetdb;dxSkinOffice2007BlueRS26;dxSkinStardustRS26;dxBarDBNavRS26;dxDBXServerModeRS26;dxSkinTheAsphaltWorldRS26;dxSkinSilverRS26;dxLayoutControlRS26;dxSkinBlueprintRS26;fmx;FireDACIBDriver;fmxdae;dxServerModeRS26;dxWizardControlRS26;dxSkiniMaginaryRS26;dxTabbedMDIRS26;dxEMFRS26;dbexpress;IndyCore;dxComnRS26;dsnap;dxSkinSharpRS26;uniGUI26m;uniGUI26Chart;FireDACCommon;cxSchedulerTreeBrowserRS26;dxADOServerModeRS26;soapserver;dxSkinOffice2007BlackRS26;cxPivotGridOLAPRS26;cxVerticalGridRS26;dxtrmdRS26;DBXMySQLDriver;cxEditorsRS26;cxSchedulerRS26;cxSchedulerWebServiceStorageRS26;dxSkinMetropolisDarkRS26;dxSkinOffice2010BlackRS26;dxPSdxLCLnkRS26;FireDACCommonODBC;FireDACCommonDriver;dxMapControlRS26;dxSkinBlackRS26;dxSkinOffice2013LightGrayRS26;inet;dxSpellCheckerRS26;dxSkinCoffeeRS26;IndyIPCommon;dxSpreadSheetCoreConditionalFormattingDialogsRS26;vcl;dxPSdxDBOCLnkRS26;dxSkinMetropolisRS26;dxSpreadSheetReportDesignerRS26;dxPScxPCProdRS26;dxNavBarRS26;uniGUI26VCL;dxCoreRS26;cxExportRS26;FireDAC;dxThemeRS26;dxHttpIndyRequestRS26;dxPSPrVwRibbonRS26;dxSkinOffice2010SilverRS26;FireDACSqliteDriver;FireDACPgDriver;dxPSRichEditControlLnkRS26;dxSkinSevenClassicRS26;cxPivotGridChartRS26;dxPSdxDBTVLnkRS26;vclwinx;dxOfficeCoreRS26;dxTileControlRS26;dxSkinsCoreRS26;CustomIPTransport;vcldsnap;DOSCommandDR;bindcomp;dxSkinLilianRS26;dxSkinSummer2008RS26;dxPSdxOCLnkRS26;dxSkinVS2010RS26;dxSkinBlueRS26;dbxcds;adortl;dxSkinMcSkinRS26;dxSkinDarkSideRS26;dxSpreadSheetCoreDialogsRS26;dxBarExtDBItemsRS26;dsnapxml;dbrtl;IndyProtocols;inetdbxpress;dxSkinOffice2007GreenRS26;dxRichEditInplaceRS26;dxSkinWhiteprintRS26;dxPSdxPDFViewerLnkRS26;dxSkinCaramelRS26;fmxase;$(DCC_UsePackage) 67 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) 68 | Debug 69 | true 70 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 71 | 1033 72 | 73 | 74 | DEBUG;$(DCC_Define) 75 | true 76 | false 77 | true 78 | true 79 | true 80 | 81 | 82 | false 83 | ..\..\src;$(DCC_UnitSearchPath) 84 | true 85 | 1033 86 | (None) 87 | 88 | 89 | false 90 | RELEASE;$(DCC_Define) 91 | 0 92 | 0 93 | 94 | 95 | 96 | MainSource 97 | 98 | 99 | Cfg_2 100 | Base 101 | 102 | 103 | Base 104 | 105 | 106 | Cfg_1 107 | Base 108 | 109 | 110 | 111 | Delphi.Personality.12 112 | Library 113 | 114 | 115 | 116 | ISAPI.dpr 117 | 118 | 119 | ExpressScheduler connection to ExpressQuantumGrid by Developer Express Inc. 120 | ExpressScheduler tree browser by Developer Express Inc. 121 | ExpressScheduler Ribbon Event Window by Developer Express Inc. 122 | ExpressPrinting System ReportLink for ExpressScheduler by Developer Express Inc. 123 | DBExpress Enterprise Data Explorer Integration 124 | Microsoft Office 2000 Sample Automation Server Wrapper Components 125 | Microsoft Office XP Sample Automation Server Wrapper Components 126 | 127 | 128 | 129 | 130 | 131 | true 132 | 133 | 134 | 135 | 136 | true 137 | 138 | 139 | 140 | 141 | true 142 | 143 | 144 | 145 | 146 | true 147 | 148 | 149 | 150 | 151 | true 152 | 153 | 154 | 155 | 156 | ISAPI.dll 157 | true 158 | 159 | 160 | 161 | 162 | 1 163 | 164 | 165 | 0 166 | 167 | 168 | 169 | 170 | classes 171 | 1 172 | 173 | 174 | 175 | 176 | res\xml 177 | 1 178 | 179 | 180 | 181 | 182 | library\lib\armeabi-v7a 183 | 1 184 | 185 | 186 | 187 | 188 | library\lib\armeabi 189 | 1 190 | 191 | 192 | 193 | 194 | library\lib\mips 195 | 1 196 | 197 | 198 | 199 | 200 | library\lib\armeabi-v7a 201 | 1 202 | 203 | 204 | 205 | 206 | res\drawable 207 | 1 208 | 209 | 210 | 211 | 212 | res\values 213 | 1 214 | 215 | 216 | 217 | 218 | res\values-v21 219 | 1 220 | 221 | 222 | 223 | 224 | res\values 225 | 1 226 | 227 | 228 | 229 | 230 | res\drawable 231 | 1 232 | 233 | 234 | 235 | 236 | res\drawable-xxhdpi 237 | 1 238 | 239 | 240 | 241 | 242 | res\drawable-ldpi 243 | 1 244 | 245 | 246 | 247 | 248 | res\drawable-mdpi 249 | 1 250 | 251 | 252 | 253 | 254 | res\drawable-hdpi 255 | 1 256 | 257 | 258 | 259 | 260 | res\drawable-xhdpi 261 | 1 262 | 263 | 264 | 265 | 266 | res\drawable-mdpi 267 | 1 268 | 269 | 270 | 271 | 272 | res\drawable-hdpi 273 | 1 274 | 275 | 276 | 277 | 278 | res\drawable-xhdpi 279 | 1 280 | 281 | 282 | 283 | 284 | res\drawable-xxhdpi 285 | 1 286 | 287 | 288 | 289 | 290 | res\drawable-xxxhdpi 291 | 1 292 | 293 | 294 | 295 | 296 | res\drawable-small 297 | 1 298 | 299 | 300 | 301 | 302 | res\drawable-normal 303 | 1 304 | 305 | 306 | 307 | 308 | res\drawable-large 309 | 1 310 | 311 | 312 | 313 | 314 | res\drawable-xlarge 315 | 1 316 | 317 | 318 | 319 | 320 | res\values 321 | 1 322 | 323 | 324 | 325 | 326 | 1 327 | 328 | 329 | 1 330 | 331 | 332 | 0 333 | 334 | 335 | 336 | 337 | 1 338 | .framework 339 | 340 | 341 | 1 342 | .framework 343 | 344 | 345 | 0 346 | 347 | 348 | 349 | 350 | 1 351 | .dylib 352 | 353 | 354 | 1 355 | .dylib 356 | 357 | 358 | 0 359 | .dll;.bpl 360 | 361 | 362 | 363 | 364 | 1 365 | .dylib 366 | 367 | 368 | 1 369 | .dylib 370 | 371 | 372 | 1 373 | .dylib 374 | 375 | 376 | 1 377 | .dylib 378 | 379 | 380 | 1 381 | .dylib 382 | 383 | 384 | 0 385 | .bpl 386 | 387 | 388 | 389 | 390 | 0 391 | 392 | 393 | 0 394 | 395 | 396 | 0 397 | 398 | 399 | 0 400 | 401 | 402 | 0 403 | 404 | 405 | 0 406 | 407 | 408 | 0 409 | 410 | 411 | 412 | 413 | 1 414 | 415 | 416 | 1 417 | 418 | 419 | 1 420 | 421 | 422 | 423 | 424 | 1 425 | 426 | 427 | 1 428 | 429 | 430 | 1 431 | 432 | 433 | 434 | 435 | 1 436 | 437 | 438 | 1 439 | 440 | 441 | 1 442 | 443 | 444 | 445 | 446 | 1 447 | 448 | 449 | 1 450 | 451 | 452 | 1 453 | 454 | 455 | 456 | 457 | 1 458 | 459 | 460 | 1 461 | 462 | 463 | 1 464 | 465 | 466 | 467 | 468 | 1 469 | 470 | 471 | 1 472 | 473 | 474 | 1 475 | 476 | 477 | 478 | 479 | 1 480 | 481 | 482 | 1 483 | 484 | 485 | 1 486 | 487 | 488 | 489 | 490 | 1 491 | 492 | 493 | 1 494 | 495 | 496 | 1 497 | 498 | 499 | 500 | 501 | 1 502 | 503 | 504 | 1 505 | 506 | 507 | 1 508 | 509 | 510 | 511 | 512 | 1 513 | 514 | 515 | 1 516 | 517 | 518 | 1 519 | 520 | 521 | 522 | 523 | 1 524 | 525 | 526 | 1 527 | 528 | 529 | 1 530 | 531 | 532 | 533 | 534 | 1 535 | 536 | 537 | 1 538 | 539 | 540 | 1 541 | 542 | 543 | 544 | 545 | 1 546 | 547 | 548 | 1 549 | 550 | 551 | 1 552 | 553 | 554 | 555 | 556 | 1 557 | 558 | 559 | 1 560 | 561 | 562 | 1 563 | 564 | 565 | 566 | 567 | 1 568 | 569 | 570 | 1 571 | 572 | 573 | 1 574 | 575 | 576 | 577 | 578 | 1 579 | 580 | 581 | 1 582 | 583 | 584 | 1 585 | 586 | 587 | 588 | 589 | 1 590 | 591 | 592 | 1 593 | 594 | 595 | 1 596 | 597 | 598 | 599 | 600 | 1 601 | 602 | 603 | 1 604 | 605 | 606 | 1 607 | 608 | 609 | 610 | 611 | 1 612 | 613 | 614 | 1 615 | 616 | 617 | 1 618 | 619 | 620 | 621 | 622 | 1 623 | 624 | 625 | 1 626 | 627 | 628 | 1 629 | 630 | 631 | 632 | 633 | 1 634 | 635 | 636 | 1 637 | 638 | 639 | 1 640 | 641 | 642 | 643 | 644 | 1 645 | 646 | 647 | 1 648 | 649 | 650 | 1 651 | 652 | 653 | 654 | 655 | 1 656 | 657 | 658 | 1 659 | 660 | 661 | 1 662 | 663 | 664 | 665 | 666 | 1 667 | 668 | 669 | 1 670 | 671 | 672 | 1 673 | 674 | 675 | 676 | 677 | 1 678 | 679 | 680 | 1 681 | 682 | 683 | 1 684 | 685 | 686 | 687 | 688 | 1 689 | 690 | 691 | 1 692 | 693 | 694 | 1 695 | 696 | 697 | 698 | 699 | 1 700 | 701 | 702 | 1 703 | 704 | 705 | 1 706 | 707 | 708 | 709 | 710 | 1 711 | 712 | 713 | 1 714 | 715 | 716 | 1 717 | 718 | 719 | 720 | 721 | 1 722 | 723 | 724 | 725 | 726 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 727 | 1 728 | 729 | 730 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 731 | 1 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 1 740 | 741 | 742 | 1 743 | 744 | 745 | 1 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | Contents\Resources 754 | 1 755 | 756 | 757 | Contents\Resources 758 | 1 759 | 760 | 761 | 762 | 763 | library\lib\armeabi-v7a 764 | 1 765 | 766 | 767 | 1 768 | 769 | 770 | 1 771 | 772 | 773 | 1 774 | 775 | 776 | 1 777 | 778 | 779 | 1 780 | 781 | 782 | 1 783 | 784 | 785 | 0 786 | 787 | 788 | 789 | 790 | 1 791 | 792 | 793 | 1 794 | 795 | 796 | 797 | 798 | Assets 799 | 1 800 | 801 | 802 | Assets 803 | 1 804 | 805 | 806 | 807 | 808 | Assets 809 | 1 810 | 811 | 812 | Assets 813 | 1 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | True 828 | False 829 | 830 | 831 | 12 832 | 833 | 834 | 835 | 836 | 837 | -------------------------------------------------------------------------------- /iis/boss-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "hash": "d41d8cd98f00b204e9800998ecf8427e", 3 | "updated": "2020-02-05T21:40:47.5941457-02:00", 4 | "installedModules": { 5 | "github.com/hashload/horse": { 6 | "name": "horse", 7 | "version": "1.7.0", 8 | "hash": "7c3b15d6289c0ab49f483626c61da28b", 9 | "artifacts": {}, 10 | "failed": false, 11 | "changed": false 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /iis/boss.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "samples-iis", 3 | "description": "", 4 | "version": "1.0.0", 5 | "homepage": "", 6 | "mainsrc": "./", 7 | "projects": [], 8 | "dependencies": { 9 | "github.com/hashload/horse": "^1.7.0" 10 | } 11 | } -------------------------------------------------------------------------------- /jwt/auth/boss-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "hash": "6ef9161b900632671022358216c7dfe7", 3 | "updated": "2019-10-15T21:14:03.4258359-03:00", 4 | "installedModules": { 5 | "github.com/hashload/horse": { 6 | "name": "horse", 7 | "version": "1.7.0", 8 | "hash": "7c3b15d6289c0ab49f483626c61da28b", 9 | "artifacts": {}, 10 | "failed": false, 11 | "changed": false 12 | }, 13 | "github.com/hashload/jhonson": { 14 | "name": "jhonson", 15 | "version": "1.0.3", 16 | "hash": "334dfe6b2e7daa4cb6af5b1bf88ec76e", 17 | "artifacts": {}, 18 | "failed": false, 19 | "changed": false 20 | }, 21 | "https://github.com/paolo-rossi/delphi-jose-jwt": { 22 | "name": "delphi-jose-jwt", 23 | "version": "v2.5.2", 24 | "hash": "589e56e202f3acd41b4021314c54518c", 25 | "artifacts": {}, 26 | "failed": false, 27 | "changed": false 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /jwt/auth/boss.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "samples", 3 | "description": "", 4 | "version": "1.0.0", 5 | "homepage": "", 6 | "mainsrc": "./", 7 | "projects": [], 8 | "dependencies": { 9 | "github.com/HashLoad/horse": "^1.7.0", 10 | "github.com/HashLoad/jhonson": "^1.0.3", 11 | "https://github.com/paolo-rossi/delphi-jose-jwt": "^v2.5.0" 12 | } 13 | } -------------------------------------------------------------------------------- /jwt/auth/samples.dpr: -------------------------------------------------------------------------------- 1 | program samples; 2 | 3 | {$APPTYPE CONSOLE} 4 | 5 | uses 6 | Horse, 7 | Horse.Jhonson, 8 | JOSE.Core.JWT, 9 | JOSE.Core.Builder, 10 | System.SysUtils, 11 | System.JSON; 12 | 13 | {$R *.res} 14 | 15 | var 16 | App: THorse; 17 | 18 | begin 19 | App := THorse.Create(9000); 20 | 21 | App.Use(Jhonson); 22 | 23 | App.Get('/auth', 24 | procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc) 25 | var 26 | LToken: TJWT; 27 | begin 28 | LToken := TJWT.Create; 29 | try 30 | LToken.Claims.Issuer := 'Horse'; 31 | LToken.Claims.Subject := 'Vinicius Sanchez'; 32 | LToken.Claims.Expiration := Now + 1; 33 | Res.Send(TJSONObject.Create(TJSONPair.Create('token', TJOSE.SHA256CompactToken('CodeRage', LToken)))); 34 | finally 35 | LToken.Free; 36 | end; 37 | end); 38 | 39 | App.Start; 40 | end. 41 | -------------------------------------------------------------------------------- /jwt/client/boss-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "hash": "6ef9161b900632671022358216c7dfe7", 3 | "updated": "2019-10-15T21:31:15.8953656-03:00", 4 | "installedModules": { 5 | "github.com/hashload/horse": { 6 | "name": "horse", 7 | "version": "1.7.0", 8 | "hash": "7c3b15d6289c0ab49f483626c61da28b", 9 | "artifacts": {}, 10 | "failed": false, 11 | "changed": false 12 | }, 13 | "github.com/hashload/horse-jwt": { 14 | "name": "horse-jwt", 15 | "version": "1.2.1", 16 | "hash": "610d47450dfef11e3a12839ba1178c3f", 17 | "artifacts": {}, 18 | "failed": false, 19 | "changed": false 20 | }, 21 | "github.com/hunsche/delphi-jwt": { 22 | "name": "delphi-jwt", 23 | "version": "2.2.3", 24 | "hash": "59f0e419d889e2103abc7699bd707a2e", 25 | "artifacts": {}, 26 | "failed": false, 27 | "changed": false 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /jwt/client/boss.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "samples", 3 | "description": "", 4 | "version": "1.0.0", 5 | "homepage": "", 6 | "mainsrc": "./", 7 | "projects": [], 8 | "dependencies": { 9 | "github.com/HashLoad/horse": "^1.7.0", 10 | "github.com/HashLoad/horse-jwt": "^v1.1.6" 11 | } 12 | } -------------------------------------------------------------------------------- /jwt/client/samples.dpr: -------------------------------------------------------------------------------- 1 | program samples; 2 | 3 | {$APPTYPE CONSOLE} 4 | 5 | uses 6 | Horse, 7 | Horse.JWT; 8 | 9 | {$R *.res} 10 | 11 | var 12 | App: THorse; 13 | 14 | begin 15 | App := THorse.Create(9000); 16 | 17 | App.Use(HorseJWT('CodeRage')); 18 | 19 | App.Get('/ping', 20 | procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc) 21 | begin 22 | Res.Send('pong'); 23 | end); 24 | 25 | App.Start; 26 | end. 27 | -------------------------------------------------------------------------------- /octet-stream/boss-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "hash": "6ef9161b900632671022358216c7dfe7", 3 | "updated": "2021-05-27T15:59:00.9292705-03:00", 4 | "installedModules": { 5 | "github.com/hashload/horse": { 6 | "name": "horse", 7 | "version": "2.0.13", 8 | "hash": "32daa5a81f115ecc285cbbbbdbcddcea", 9 | "artifacts": {}, 10 | "failed": false, 11 | "changed": false 12 | }, 13 | "github.com/hashload/horse-octet-stream": { 14 | "name": "horse-octet-stream", 15 | "version": "1.9.4", 16 | "hash": "c04011f2536230c603e0dde14da6aabf", 17 | "artifacts": {}, 18 | "failed": false, 19 | "changed": false 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /octet-stream/boss.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "samples", 3 | "description": "", 4 | "version": "1.0.0", 5 | "homepage": "", 6 | "mainsrc": "./", 7 | "projects": [], 8 | "dependencies": { 9 | "github.com/hashload/horse": "^2.0.13", 10 | "github.com/hashload/horse-octet-stream": "^1.9.4" 11 | } 12 | } -------------------------------------------------------------------------------- /octet-stream/horse.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viniciussanchez/coderage/9f12b6f77252b44be4963adf0e3de108c579e86c/octet-stream/horse.pdf -------------------------------------------------------------------------------- /octet-stream/novo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viniciussanchez/coderage/9f12b6f77252b44be4963adf0e3de108c579e86c/octet-stream/novo.pdf -------------------------------------------------------------------------------- /octet-stream/samples.dpr: -------------------------------------------------------------------------------- 1 | program samples; 2 | 3 | {$APPTYPE CONSOLE} 4 | 5 | uses 6 | Horse, 7 | Horse.OctetStream, 8 | System.Classes, 9 | System.SysUtils; 10 | 11 | {$R *.res} 12 | 13 | begin 14 | THorse.Use(OctetStream); 15 | 16 | THorse.Get('pdf', 17 | procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc) 18 | var 19 | LStream: TFileStream; 20 | begin 21 | LStream := TFileStream.Create('C:\Users\vinic\Downloads\coderage\octet-stream\horse.pdf', fmOpenRead); 22 | Res.Send(LStream); 23 | end); 24 | 25 | THorse.Post('pdf', 26 | procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc) 27 | begin 28 | Req.Body.SaveToFile('C:\Users\vinic\Downloads\coderage\octet-stream\novo.pdf'); 29 | Res.Status(THTTPStatus.NoContent); 30 | end); 31 | 32 | THorse.Listen; 33 | end. 34 | -------------------------------------------------------------------------------- /octet-stream/samples.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viniciussanchez/coderage/9f12b6f77252b44be4963adf0e3de108c579e86c/octet-stream/samples.res -------------------------------------------------------------------------------- /ping-pong/boss-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "hash": "d41d8cd98f00b204e9800998ecf8427e", 3 | "updated": "2020-02-06T20:19:38.4384894-02:00", 4 | "installedModules": { 5 | "github.com/hashload/horse": { 6 | "name": "horse", 7 | "version": "1.7.0", 8 | "hash": "7c3b15d6289c0ab49f483626c61da28b", 9 | "artifacts": {}, 10 | "failed": false, 11 | "changed": false 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /ping-pong/boss.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ping-pong", 3 | "description": "", 4 | "version": "1.0.0", 5 | "homepage": "", 6 | "mainsrc": "./", 7 | "projects": [], 8 | "dependencies": { 9 | "github.com/hashload/horse": "^1.7.0" 10 | } 11 | } -------------------------------------------------------------------------------- /ping-pong/samples.dpr: -------------------------------------------------------------------------------- 1 | program samples; 2 | 3 | {$APPTYPE CONSOLE} 4 | 5 | {$R *.res} 6 | 7 | uses 8 | Horse; 9 | 10 | var 11 | App: THorse; 12 | 13 | begin 14 | App := THorse.Create(9000); 15 | 16 | App.Get('/ping', 17 | procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc) 18 | begin 19 | Res.Send('pong'); 20 | end); 21 | 22 | App.Start; 23 | end. 24 | --------------------------------------------------------------------------------