Skip to content

Commit

Permalink
Simplifies content handling in Render(string)
Browse files Browse the repository at this point in the history
  • Loading branch information
danieleteti committed Apr 16, 2024
1 parent 8035498 commit deff8e6
Showing 1 changed file with 21 additions and 17 deletions.
38 changes: 21 additions & 17 deletions sources/MVCFramework.pas
Original file line number Diff line number Diff line change
Expand Up @@ -753,7 +753,8 @@ TMVCRenderer = class(TMVCBase)
function UnauthorizedResponse: IMVCResponse;
function BadRequestResponse: IMVCResponse; overload;
function BadRequestResponse(const Error: TObject): IMVCResponse; overload;
function CreatedResponse(const Location: string = ''; const Body: TObject = nil): IMVCResponse;
function CreatedResponse(const Location: string = ''; const Body: TObject = nil): IMVCResponse; overload;
function CreatedResponse(const Location: string; const Message: String): IMVCResponse; overload;
function AcceptedResponse(const Location: string = ''; const Body: TObject = nil): IMVCResponse;
function ConflictResponse: IMVCResponse;
function RedirectResponse(Location: String; Permanent: Boolean = False; PreserveMethod: Boolean = False): IMVCResponse;
Expand Down Expand Up @@ -3980,6 +3981,19 @@ function TMVCRenderer.ConflictResponse: IMVCResponse;
Result := StatusCodeResponseWithOptionalBody(HTTP_STATUS.Conflict, nil);
end;

function TMVCRenderer.CreatedResponse(const Location: string ; const Message: String): IMVCResponse;
var
lRespBuilder: IMVCResponseBuilder;
begin
lRespBuilder := MVCResponseBuilder;
if not Location.IsEmpty then
begin
lRespBuilder.Header('location', Location)
end;
lRespBuilder.Body(Message);
Result := lRespBuilder.StatusCode(HTTP_STATUS.Created).Build;
end;

function TMVCRenderer.CreatedResponse(const Location: string;
const Body: TObject): IMVCResponse;
var
Expand Down Expand Up @@ -4263,7 +4277,6 @@ procedure TMVCRenderer.Render(const AContent: string);
lContentType: string;
lOutEncoding: TEncoding;
lCharset: string;
lFreeEncoding: Boolean;
begin
SplitContentMediaTypeAndCharset(GetContentType, lContentType, lCharset);
if lCharset.IsEmpty then
Expand All @@ -4272,25 +4285,16 @@ procedure TMVCRenderer.Render(const AContent: string);
lContentType := TMVCConstants.DEFAULT_CONTENT_TYPE;
lContentType := BuildContentType(lContentType, lCharset);

lOutEncoding := nil;
if SameText('UTF-8', lCharset) then
begin
lFreeEncoding := False;
GetContext
.Response
.SetContentStream(TStringStream.Create(AContent, gEncodingUTF8, False), lContentType)
end
else
begin
lOutEncoding := TEncoding.GetEncoding(lCharset);
end;
try
if not lFreeEncoding then
begin
//utf-8
GetContext
.Response
.SetContentStream(TStringStream.Create(AContent, gEncodingUTF8, False), lContentType)
end
else
begin
try
GetContext
.Response
.SetContentStream(
Expand All @@ -4299,9 +4303,9 @@ procedure TMVCRenderer.Render(const AContent: string);
TEncoding.Default,
lOutEncoding,
TEncoding.Default.GetBytes(AContent))), lContentType);
finally
lOutEncoding.Free;
end;
finally
lOutEncoding.Free;
end;
end;

Expand Down

0 comments on commit deff8e6

Please sign in to comment.