Skip to content

Releases: HashLoad/horse

3.1.6

16 Feb 20:11
Compare
Choose a tag to compare

e52a0b2 Adicionado o "detail" em EHorseException.ToJSONObject
Added "detail" on EHorseException.ToJSONObject

95ed98c Adicionado o middleware Horse-XMLDoc
Add new middleware Horse-XMLDoc

2679601 Adicionado MaxConnections no módulo Apache
Added MaxConnections on Apache mode

815933a Adicionado métodos virtuais
Added virtual methods

🔺fbe9025 Correção de memory leaks
Bug fix: memory leak

🔺e53c485 Correção na opção Apache Module
Bug fix: Apache module option

🔺abf8c10 Correção de erro mime types
Bug fix: horse mime types

3.1.5

17 Aug 11:17
Compare
Choose a tag to compare
  • 🔺 12d7255 Correção de erro no provider VCL
    Bug fix VCL

3.1.4

07 Aug 12:11
Compare
Choose a tag to compare
  • 26ca310 Overload do método construtor com opção para informar o erro
    Created a overload constructor with string parameter

  • 24dc9b2 3589a8d Adicionado Contains, StartsWith e EndsWith no LHS Brackets
    Add new LHS Brackets: Contains, StartsWith and EndsWith

  • 5b7065a Adicionado a property Detail e adicionado o método ToJsonObject
    Added Detail property and ToJsonObject method

  • f3088cd 897108d Melhorias no código
    Code improvements

  • 🔺 a63094c Hotfix Correção do Get Environment Variables usando Delphi para Linux
    Get Environment Variables using Delphi for Linux

  • 🔺 0d839f9 Correção de erro no provider VCL (Alexandre Magno)
    Bug fix VCL provider (Alexandre Magno)

  • 🔺 8e26696 Correção do uses na unit Horse.Exception para FPC
    Fix uses clause of Horse.Exception when FPC is defined

3.1.3

12 May 11:42
Compare
Choose a tag to compare

🔺 f1fc61e Bug na compilação para Lazarus
Bug fix: lazarus build

3.1.2

05 May 17:30
Compare
Choose a tag to compare
  • 30c0e2e KeepConnectionAlive como padrão será True
    KeepConnectionAlive default is true

  • 🔺 cb824bc Correção de erro: query params com espaços em branco
    Bug fix: Query params field with blank space

  • 🔺 c73c237 Correção de erro: ao acessar um endpoint que não existe
    Bug fix: not found

3.1.1

13 Apr 12:26
Compare
Choose a tag to compare
  • b0bea0f #330 Horse.Exception - Preencher propriedade Message
    Horse.Exception - Populate Message property

  • 5b412a5 1f1859e Alteração do README.md
    Updated README.md

  • 🔺 e99d380 #332 - Alterando a comparação de String.IsEmpty para igual a EmptyStr, para compatibilidade com Delphi 10 Seattle
    Changing comparison of String.IsEmpty to equal EmptyStr, for compatibility with Delphi 10 Seattle

3.1.0

10 Mar 02:04
Compare
Choose a tag to compare

Horse 3.1.0

  • b917126 Nova unit Horse.Mime que implementa a classe THorseMimeTypes responsável por retornar o tipo MIME associado à extensão de um arquivo
    New Horse.Mime unit that implements the THorseMimeTypes class responsible for returning the MIME type associated with a file extension

  • 7d2e174 Adicionado a opção de poder trabalhar com regex nas rotas
    Added the option to work with regex on routes

THorse.Get('/(discussion|page)/:id',
  procedure(Req: THorseRequest; Res: THorseResponse)
  begin
    Res.Send('Hello - ID: ' + Req.Params.Items['id']);
  end);

THorse.Get('/(\d{5})',
  procedure(Req: THorseRequest; Res: THorseResponse)
  begin
    Res.Send('Hello - ID: ' + Req.RawWebRequest.PathInfo);
  end);
  • ed21e21 Adicionado o KeepAlive no provider VCL, LCL e DAEMON
    Added KeepAlive in VCL, LCL and DAEMON provider
THorse.KeepConnectionAlive := True;
  • c235bca Adicionado as propriedades CipherList e DHParamsFile (Diffie–Hellman) na IOHandleSSL
    Added Cipher List and DHParams File (Diffie–Hellman) properties in IOHandleSSL
THorse.IOHandleSSL
  .DHParamsFile('')
  .CipherList('');
  • a95e9b7 Adição do campo Hint na classe de exceção EHorseException, para descrever a solução do erro
    Added a Hint field in the EHorseException exception class to describe the error solution
raise EHorseException.New.Hint('');
  • e5dc69c Possibilidade de excluir um header do response
    Possibility to exclude a response header
Res.RemoveHeader('');
  • 413a104 Endpoint genérico para responder a qualquer chamada não registrada
    Generic endpoint to answer any unregistered call
THorse.All('*',
  procedure(Req: THorseRequest; Res: THorseResponse)
  begin
    Res.Send(Req.PathInfo);
  end);
  • ae4b30f Adicionada as funções Host, PathInfo e ContentType na THorseRequest
    Added Host, PathInfo and ContentType functions in THorseRequest
Req.Host;
Req.PathInfo;
Req.ContentType;
  • f29a9f9 Refatoração da unit Horse.Core.Files para utilização da classe THorseMimeTypes da unit Horse.Mime
    Refactoring of the Horse.Core.Files unit to use the THorseMimeTypes class of the Horse.Mime unit

  • 73b6bd0 Refatoração da unit Horse.Response para utilização da classe THorseMimeTypes da unit Horse.Mime
    Refactoring of the Horse.Response unit to use the THorseMimeTypes class of the Horse.Mime unit

  • 378af0a Melhorias no código
    Code improvements

  • dcb1b63 Agora o Horse vai definir o position igual a zero por padrão na função SendFile e a passagem do nome do arquivo se tornou opcional
    Now Horse will set position equal to zero by default in the SendFile function and passing the file name has become optional

  • b15e333 Agora o Horse vai definir o position igual a zero por padrão na função Download
    Now Horse will set the position equal to zero by default in the Download function

  • 6c6be4f Implementação da interface IHorseProviderIOHandleSSL e refatoração do código
    Implementing the IHorseProviderIOHandleSSL interface and refactoring the code

// Antes / Old
THorse.IOHandleSSL.KeyFile := leKey.Text;
THorse.IOHandleSSL.CertFile := leCrt.Text;
THorse.IOHandleSSL.OnGetPassword := Self.OnGetPassword;
THorse.IOHandleSSL.SSLVersions := [sslvTLSv1_2];
THorse.IOHandleSSL.Active := True;

// Agora / New
THorse.IOHandleSSL
  .KeyFile(leKey.Text)
  .CertFile(leCrt.Text)
  .OnGetPassword(Self.OnGetPassword)
  .SSLVersions([sslvTLSv1_2])
  .Active(True);
  • 14e88c6 Adicionado um atalho para a classe THorseMimeTypes na unit principal do Horse
    Added a shortcut for the THorseMimeTypes class in the main Horse unit

  • b0bea0f Preenchimento da propriedade Message ao definir o erro de uma exceção do Horse
    Completion of the Message property when defining the error of a Horse exception

  • 8794e0f Ajustes dos exemplos e remoção de hints e warnings do Horse no lazarus
    Example tweaks and removal of Horse hints and warnings in lazarus

  • be629fb Remoção de Hints
    Removing Hints

  • 8684650 Remoção do parâmetro no callback do THorse.Listen
    Removal of the parameter in the THorse.Listen callback

// Antes / Old
THorse.Listen(9000,
  procedure(Horse: THorse)
  begin
    Writeln(Format('Server is runing on %s:%d', [Horse.Host, Horse.Port]));
    Readln;
  end);

// Agora / New
THorse.Listen(9000,
  procedure
  begin
    Writeln(Format('Server is runing on %s:%d', [THorse.Host, THorse.Port]));
    Readln;
  end);
  • ee33a2a eb995d4 Alterações referentes ao novo FPC
    Changes related to the new FPC

  • 🔺 9678960 Ajustes na unit Horse.Provider.FPC.LCL para não congelar a tela quando executar (Contribuição do Alexandre Magno)
    Adjustments in the Horse.Provider.FPC.LCL unit to not freeze the screen when running (Contributed by Alexandre Magno)

  • 🔺 76dc02e Correção da falha ao ler os headers no Apache com Delphi
    Fixed crash when reading headers in Apache with Delphi

  • 🔺 d69190e Ajustes para compilação no Lazarus
    Lazarus build tweaks

  • 🔺 cc35d4d Correção do erro ao ler os parâmetros do formulário no Delphi Seattle
    Fixed error when reading form parameters in Delphi Seattle

  • 🔺 039bbe0 118dcc1 Correção no exemplo para definição das rotas
    Correction in the example for defining routes

  • 🔺 be376bc 5d43ba6 Correção do erro ao ler os headers no CGI
    Fixed error when reading headers in CGI

  • 🔺 b6e3ea5 f63e3db 2251914 Correção na leitura do PathInfo com CGI quando o PathInfo estiver vazio
    Fix for reading PathInfo with CGI when PathInfo is empty

Jhonson

Basic Authentication

  • 🔺 0cd4d3f7feadaaafb255a667f1182e121fae6d9c O header de autenticação no módulo Apache deve ser lido de "Raw WebRequest"
    The authentication Header under Apache Module must be readed from "RawWebRequest"

JWT

Exception

  • ✔ [c2186f9d78310aa8ebb864401ac8ead008d85bb2](https://git...
Read more

3.0.2

05 Jul 17:22
Compare
Choose a tag to compare

Horse 3.0.2

  • f6cbe82 Suporte ao LHS Brackets
    LHS Brackets support

Example: http://localhost:9000/ping?test[eq]=1234&test[lt]=321&test[ne]=111

procedure GetPing(Req: THorseRequest; Res: THorseResponse);
var
  LPong: TJSONArray;
  LLhsBracketType: TLhsBracketsType;
  LJson: TJSONObject;
begin
  THorseCoreParamConfig.GetInstance.CheckLhsBrackets(True);

  LPong := TJSONArray.Create;
  for LLhsBracketType in Req.Query.Field('test').LhsBrackets.Types do
  begin
    LJson := TJSONObject.Create;
    LJson.Add(Format('test %s =', [LLhsBracketType.ToString]) , Req.Query.Field('test').LhsBrackets.GetValue(LLhsBracketType));
    LPong.Add(LJson);
  end;

  Res.Send(LPong.AsJSON);
end;
  • f3650b7 Opção para pegar o ContentField como Stream
    Option to get ContentField as Stream
Req.ContentFields.Field('paramName').AsStream;
  • 6777a47 Opção para salvar ContentField como arquivo
    Option to save ContentField as file
Req.ContentFields.Field('paramName').SaveToFile('C:\file.txt');
  • 9a11717 Possibilidade de adicionar um Header sem acessar o RawWebResponse
    Possibility to add a Header without accessing RawWebResponse
// before
Res.RawWebResponse.SetCustomHeader('', '');

// after
Res.AddHeader('', '');
  • c415c52 Possibilidade de passar apenas os parâmetros necessários no callback dos endpoints no Lazarus
    Possibility to pass only the necessary parameters in the callback of the endpoints in Lazarus
procedure GetPing(Req: THorseRequest; Res: THorseResponse; Next: TNextProc);
begin
  Res.Send('Req, Res, Next');
end;

procedure GetPing1(Req: THorseRequest; Res: THorseResponse);
begin
  Res.Send('Req, Res');
end;

procedure GetPing2(Req: THorseRequest);
begin
  WriteLn('Req');
end;

begin
  THorse.Get('/ping', GetPing);
  THorse.Get('/ping1', GetPing1);
  THorse.Get('/ping2', GetPing2);

  THorse.Listen(9000);
end.
  • 81ef2b6 Método "All" (Equivale a todos os verbos HTTP)
    "All" method (Equivalent to all HTTP verbs)
THorse.All('/users', DoUsers);
  • b4151dd Novos métodos de retorno
    New return methods
Res.SendFile('E:\temp\foto.jpg');
Res.Download('E:\temp\foto.jpg');
Res.Render('E:\Temp\Client.html');
  • 🔺 edfc02c Correção da falha no SkipRoutes dos middlewares Basic Auth e JWT
    Fixed SkipRoutes crash in Basic Auth and JWT middleware

3.0.1

16 Mar 11:33
Compare
Choose a tag to compare

Horse 3.0.1

  • 8f46ee3 Adicionado uma função para pegar a versão atual do framework Horse
    Added a function to get the current version of the Horse framework
  THorse.Version;
  • 0861472 Adicionado a opção de adicionar mais de um callback por rota
    Added the option to add more than one callback per route
  THorse
    .AddCallbacks([Callback1, Callback2, Callback3])
    .Get('/users', DoListUsers);
  • 079c9e6 Agora o THorse.Group aceita a passagem de callbacks sem a necessidade de informar todos os parâmetros (Req, Res e Next)
    Now THorse.Group accepts passing callbacks without having to inform all parameters (Req, Res and Next)
  • eab6232 Agora o THorse.Route aceita a passagem de callbacks sem a necessidade de informar todos os parâmetros (Req, Res e Next)
    Now THorse.Route accepts passing callbacks without having to inform all parameters (Req, Res and Next)
  • ecc1af6 #240 Adicionado os métodos TryGetSession e Contains na classe THorseSessions
    Added TryGetSession and Contains methods in THorseSessions class
  • ✔️ b80baae 2c52506 Melhorias no código
    Code improvements
  • ✔️ f40b1a0 Remoção da função GetDefaultInstance
    Removed GetDefaultInstance function

3.0.0

16 Feb 11:51
Compare
Choose a tag to compare

Horse 3.0.0

Live de lançamento em português: Youtube
Launch live in Portuguese: Youtube

  • #230 Adicionado um exemplo de como visualizar os memory leaks em uma aplicação console
    Added an example of how to view memory leaks in a console application
  • ⭐Adicionado uma função para pegar a lista de headers enviados na requisição
    Added a function to get the list of headers sent in the request
  THorse.Get('/headers',
    procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
    var
      LData: TJSONObject;
      LHeader: TPair<string, string>;
    begin
      LData := TJSONObject.Create;
      for LHeader in Req.Headers.ToArray do
        LData.AddPair(LHeader.Key, LHeader.Value);
      Res.Send(LData);
    end);
  • #178 Implementado uma classe de sessão (antigamente só tinha uma variável de sessão)
    Implemented a session class (previously only had a session variable)
  • #225 Adicionado uma opção para pegar a instância do WebModule
    Added an option to grab the WebModule instance
  • 8f46ee3 Adicionado uma função que retorna a versão atual do Horse
    Added a function that returns the current version of Horse
  • ✔️Alterado a forma de passar um middleware para uma rota específica
    Changed the way to pass a middleware to a specific route
  • ✔️facab07 Remoção de deprecated (THorseHackRequest, THorseHackResponse)
    Removal of deprecated (THorseHackRequest, THorseHackResponse)
  • ✔️Os parâmetros (path, query e headers) não são mais case sensitive
    Parameters (path, query and headers) are no longer case sensitive
  • ✔️Os parâmetros (path, query e headers) não são mais do tipo THorseList
    Parameters (path, query and headers) are no longer of type THorseList
  • ✔️Possibilidade de informar no callback do Horse, em projetos Delphi, apenas o que for usar
    Possibility to inform in the Horse callback, in Delphi projects, only what to use
  THorse.Get('/requests',
    procedure(Req: THorseRequest)
    begin
      // default status code 204 NoContent
    end);

  THorse.Get('/responses',
    procedure(Res: THorseResponse)
    begin
      Res.Send('ok');
    end);

  THorse.Get('/requests/responses',
    procedure(Req: THorseRequest; Res: THorseResponse)
    begin
      Res.Send('ok');
    end);
  • ✔️a490433 Alteração na classe EHorseException
    Change in the EHorseException class
  • 🔺Erro quando na requisição vinha dois parâmetros com o mesmo nome
    Error when the request came with two parameters with the same name
http://localhost:9000/ping?nome=vinicius&nome=sanchez

Jhonson

  • ✔️HashLoad/jhonson#12 Tratamento para verificar se o JSON é um JSON válido
    Handling to check if JSON is valid JSON

horse-basic-auth

horse-octet-stream

  • ✔️Melhoria na documentação (Github)
    Improved documentation (Github)

horse-cors

  • HashLoad/horse-cors#6 Exemplo rodando no Lazarus
    Example running on Lazarus
  • HashLoad/horse-cors#5 Exemplo rodando no Delphi
    Example running in Delphi
  • ✔️Melhoria na documentação (Github)
    Improved documentation (Github)

horse-logger

  • ✔️Melhoria na documentação (Github)
    Improved documentation (Github)

horse-logger-provider-logfile

  • HashLoad/horse-logger#10 Adicionado a opção para pegar o content da requisição e da resposta na geração do log
    Added option to get request and response content in log generation
  • ✔️Melhoria na documentação (Github)
    Improved documentation (Github)
  • ✔️HashLoad/horse-logger-provider-logfile@a756640 Criação do diretório para salvar o arquivo de forma automática caso não exista
    Creating the directory to automatically save the file if it does not exist

horse-logger-provider-console

  • HashLoad/horse-logger#10 Adicionado a opção para pegar o content da requisição e da resposta na geração do log
    Added option to get request and response content in log generation
  • ✔️Melhoria na documentação (Github)
    Improved documentation (Github)

handle-exception

horse-compression

horse-jwt

  • HashLoad/horse-jwt@243fa47 Implementado a opção para ignorar rotas
    Implemented option to ignore routes
  • HashLoad/horse-jwt#23 Implementado a compatibilidade com Lazarus
    Implemented support for Lazarus
  • ✔️HashLoad/horse-jwt@6baf5d5 Alteração na interface IHorseConfigJWT
    Change in the IHorseConfigJWT interface
  • ✔️Melhoria na documentação (Github)
    Improved documentation (Github)
  • 🔺HashLoad/horse-jwt@1e678ad Quando informado mais de um espaço entre o Bearer e o Token
    When informed more than one space between the Bearer and the Token