Codeunit 2355 Http Content Impl. in 26
- App
- System Application
- Namespace
- System.RestClient
Versions171819202122232425262728latest
Source in 26
src/System Application/App/Rest Client/src/HttpContentImpl.Codeunit.al303 lines, Copyright (c) Microsoft Corporation. MIT
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace System.RestClient;
using System.Utilities;
codeunit 2355 "Http Content Impl."
{
Access = Internal;
InherentEntitlements = X;
InherentPermissions = X;
var
CurrHttpContentInstance: HttpContent;
ContentTypeEmptyErr: Label 'The value of the Content-Type header must be specified.';
MimeTypeTextPlainTxt: Label 'text/plain', Locked = true;
MimeTypeTextXmlTxt: Label 'text/xml', Locked = true;
MimeTypeApplicationOctetStreamTxt: Label 'application/octet-stream', Locked = true;
MimeTypeApplicationJsonTxt: Label 'application/json', Locked = true;
#region Constructors
procedure Create(Content: Text) HttpContentImpl: Codeunit "Http Content Impl."
begin
HttpContentImpl := Create(Content, '');
end;
procedure Create(Content: SecretText) HttpContentImpl: Codeunit "Http Content Impl."
begin
HttpContentImpl := Create(Content, '');
end;
procedure Create(Content: Text; ContentType: Text): Codeunit "Http Content Impl."
begin
ClearAll();
SetContent(Content, ContentType);
exit(this);
end;
procedure Create(Content: SecretText; ContentType: Text): Codeunit "Http Content Impl."
begin
ClearAll();
SetContent(Content, ContentType);
exit(this);
end;
procedure Create(Content: JsonObject): Codeunit "Http Content Impl."
begin
ClearAll();
SetContent(Content.AsToken());
exit(this);
end;
procedure Create(Content: JsonArray): Codeunit "Http Content Impl."
begin
ClearAll();
SetContent(Content.AsToken());
exit(this);
end;
procedure Create(Content: JsonToken): Codeunit "Http Content Impl."
begin
ClearAll();
SetContent(Content);
exit(this);
end;
procedure Create(Content: XmlDocument): Codeunit "Http Content Impl."
begin
ClearAll();
SetContent(Content);
exit(this);
end;
procedure Create(Content: Codeunit "Temp Blob") HttpContentImpl: Codeunit "Http Content Impl."
begin
HttpContentImpl := Create(Content, '');
end;
procedure Create(Content: Codeunit "Temp Blob"; ContentType: Text): Codeunit "Http Content Impl."
begin
ClearAll();
SetContent(Content, ContentType);
exit(this);
end;
procedure Create(Content: InStream) HttpContent: Codeunit "Http Content Impl."
begin
HttpContent := Create(Content, '');
end;
procedure Create(Content: InStream; ContentType: Text): Codeunit "Http Content Impl."
begin
ClearAll();
SetContent(Content, ContentType);
exit(this);
end;
procedure Create(Content: HttpContent): Codeunit "Http Content Impl."
begin
ClearAll();
SetContent(Content);
exit(this);
end;
#endregion
procedure SetContentTypeHeader(ContentType: Text)
begin
if ContentType = '' then
Error(ContentTypeEmptyErr);
SetHeader('Content-Type', ContentType);
end;
procedure AddContentEncoding(ContentEncoding: Text)
var
ContentHeaders: HttpHeaders;
begin
if not CurrHttpContentInstance.GetHeaders(ContentHeaders) then begin
CurrHttpContentInstance.Clear();
CurrHttpContentInstance.GetHeaders(ContentHeaders);
end;
ContentHeaders.Add('Content-Encoding', ContentEncoding);
end;
procedure SetHeader(Name: Text; Value: Text)
var
ContentHeaders: HttpHeaders;
begin
if not CurrHttpContentInstance.GetHeaders(ContentHeaders) then begin
CurrHttpContentInstance.Clear();
CurrHttpContentInstance.GetHeaders(ContentHeaders);
end;
if ContentHeaders.Contains(Name) or ContentHeaders.ContainsSecret(Name) then
ContentHeaders.Remove(Name);
ContentHeaders.Add(Name, Value);
end;
procedure SetHeader(Name: Text; Value: SecretText)
var
ContentHeaders: HttpHeaders;
begin
if not CurrHttpContentInstance.GetHeaders(ContentHeaders) then begin
CurrHttpContentInstance.Clear();
CurrHttpContentInstance.GetHeaders(ContentHeaders);
end;
if ContentHeaders.Contains(Name) or ContentHeaders.ContainsSecret(Name) then
ContentHeaders.Remove(Name);
ContentHeaders.Add(Name, Value);
end;
procedure GetHttpContent() ReturnValue: HttpContent
begin
ReturnValue := CurrHttpContentInstance;
end;
procedure AsText() ReturnValue: Text
begin
CurrHttpContentInstance.ReadAs(ReturnValue);
end;
procedure AsSecretText() ReturnValue: SecretText
begin
CurrHttpContentInstance.ReadAs(ReturnValue);
end;
procedure AsBlob() ReturnValue: Codeunit "Temp Blob"
var
InStr: InStream;
OutStr: OutStream;
begin
CurrHttpContentInstance.ReadAs(InStr);
ReturnValue.CreateOutStream(OutStr);
CopyStream(OutStr, InStr);
end;
procedure AsInStream(var InStr: InStream)
begin
CurrHttpContentInstance.ReadAs(InStr);
end;
procedure AsXmlDocument() ReturnValue: XmlDocument
var
XmlReadOptions: XmlReadOptions;
begin
XmlReadOptions.PreserveWhitespace(false);
if not XmlDocument.ReadFrom(AsText(), XmlReadOptions, ReturnValue) then
ThrowInvalidXmlException();
end;
procedure AsJson() ReturnValue: JsonToken
var
Json: Text;
begin
Json := AsText();
if Json = '' then
exit;
if not ReturnValue.ReadFrom(Json) then
ThrowInvalidJsonException();
end;
procedure AsJsonObject() ReturnValue: JsonObject
var
Json: Text;
begin
Json := AsText();
if Json = '' then
exit;
if not ReturnValue.ReadFrom(Json) then
ThrowInvalidJsonException();
end;
procedure AsJsonArray() ReturnValue: JsonArray
var
Json: Text;
begin
Json := AsText();
if Json = '' then
exit;
if not ReturnValue.ReadFrom(Json) then
ThrowInvalidJsonException();
end;
procedure SetContent(Content: Text; ContentType: Text)
begin
CurrHttpContentInstance.Clear();
CurrHttpContentInstance.WriteFrom(Content);
if ContentType = '' then
ContentType := MimeTypeTextPlainTxt;
SetContentTypeHeader(ContentType);
end;
procedure SetContent(Content: SecretText; ContentType: Text)
begin
CurrHttpContentInstance.Clear();
CurrHttpContentInstance.WriteFrom(Content);
if ContentType = '' then
ContentType := MimeTypeTextPlainTxt;
SetContentTypeHeader(ContentType);
end;
procedure SetContent(Content: InStream; ContentType: Text)
begin
CurrHttpContentInstance.Clear();
CurrHttpContentInstance.WriteFrom(Content);
if ContentType = '' then
ContentType := MimeTypeApplicationOctetStreamTxt;
SetContentTypeHeader(ContentType);
end;
procedure SetContent(TempBlob: Codeunit "Temp Blob"; ContentType: Text)
var
InStream: InStream;
begin
InStream := TempBlob.CreateInStream(TextEncoding::UTF8);
if ContentType = '' then
ContentType := MimeTypeApplicationOctetStreamTxt;
SetContent(InStream, ContentType);
end;
procedure SetContent(Content: XmlDocument)
var
Xml: Text;
XmlWriteOptions: XmlWriteOptions;
begin
XmlWriteOptions.PreserveWhitespace(false);
Content.WriteTo(XmlWriteOptions, Xml);
SetContent(Xml, MimeTypeTextXmlTxt);
end;
procedure SetContent(Content: JsonToken)
var
Json: Text;
begin
Content.WriteTo(Json);
SetContent(Json, MimeTypeApplicationJsonTxt);
end;
procedure SetContent(var Value: HttpContent)
begin
CurrHttpContentInstance := Value;
end;
local procedure ThrowInvalidJsonException()
var
RestClientExceptionBuilder: Codeunit "Rest Client Exception Builder";
InvalidJsonMessageTxt: Label 'The content is not a valid JSON.';
begin
Error(RestClientExceptionBuilder.CreateException(Enum::"Rest Client Exception"::InvalidJson, InvalidJsonMessageTxt));
end;
local procedure ThrowInvalidXmlException()
var
RestClientExceptionBuilder: Codeunit "Rest Client Exception Builder";
InvalidXmlMessageTxt: Label 'The content is not a valid XML.';
begin
Error(RestClientExceptionBuilder.CreateException(Enum::"Rest Client Exception"::InvalidXml, InvalidXmlMessageTxt));
end;
}Procedures, 33
| Name | Parameters | Returns | Access | Obsolete |
|---|---|---|---|---|
| SetContentTypeHeader | (Text) | public | - | |
| AddContentEncoding | (Text) | public | - | |
| SetHeader | (Text, Text) | public | - | |
| SetHeader | (Text, SecretText) | public | - | |
| GetHttpContent | () | HttpContent | public | - |
| AsText | () | Text | public | - |
| AsSecretText | () | SecretText | public | - |
| AsBlob | () | Codeunit Temp Blob | public | - |
| AsInStream | (var InStream) | public | - | |
| AsXmlDocument | () | XmlDocument | public | - |
| AsJson | () | JsonToken | public | - |
| SetContent | (Text, Text) | public | - | |
| SetContent | (SecretText, Text) | public | - | |
| SetContent | (InStream, Text) | public | - | |
| SetContent | (Codeunit Temp Blob, Text) | public | - | |
| SetContent | (XmlDocument) | public | - | |
| SetContent | (JsonToken) | public | - | |
| SetContent | (var HttpContent) | public | - | |
| Create | (Text) | Codeunit Http Content Impl. | public | - |
| Create | (SecretText) | Codeunit Http Content Impl. | public | - |
| Create | (Text, Text) | Codeunit Http Content Impl. | public | - |
| Create | (SecretText, Text) | Codeunit Http Content Impl. | public | - |
| Create | (JsonObject) | Codeunit Http Content Impl. | public | - |
| Create | (JsonArray) | Codeunit Http Content Impl. | public | - |
| Create | (JsonToken) | Codeunit Http Content Impl. | public | - |
| Create | (XmlDocument) | Codeunit Http Content Impl. | public | - |
| Create | (Codeunit Temp Blob) | Codeunit Http Content Impl. | public | - |
| Create | (Codeunit Temp Blob, Text) | Codeunit Http Content Impl. | public | - |
| Create | (InStream) | Codeunit Http Content Impl. | public | - |
| Create | (InStream, Text) | Codeunit Http Content Impl. | public | - |
| Create | (HttpContent) | Codeunit Http Content Impl. | public | - |
| AsJsonObject | () | JsonObject | public | - |
| AsJsonArray | () | JsonArray | public | - |