Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Azure File Services API module #23710

2,499 changes: 2,499 additions & 0 deletions Modules/System/Azure File Services API/README.md

Large diffs are not rendered by default.

63 changes: 63 additions & 0 deletions Modules/System/Azure File Services API/app.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
{
"id": "a6660ad9-7675-4f68-a2f9-a938c21de68a",
"name": "Azure File Services API",
"publisher": "Microsoft",
"version": "22.2.0.0",
"brief": "Reproduces the Azure File Share service REST API",
"description": "Provides a set of AL functionality and Helper libraries to make use of Azure File Share Storage in MSDyn365BC",
"privacyStatement": "https://go.microsoft.com/fwlink/?linkid=724009",
"EULA": "https://go.microsoft.com/fwlink/?linkid=2009120",
"help": "https://go.microsoft.com/fwlink/?linkid=2103698",
"url": "https://go.microsoft.com/fwlink/?linkid=724011",
"logo": "",
"dependencies": [
{
"id": "e409d343-14fa-42a4-a1be-fec499383e59",
"name": "Azure Storage Services Authorization",
"publisher": "Microsoft",
"version": "22.2.0.0"
},
{
"id": "7e3b999e-1182-45d2-8b82-d5127ddba9b2",
"name": "DotNet Aliases",
"publisher": "Microsoft",
"version": "22.2.0.0"
},
{
"id": "1b2efb4b-8c44-4d74-a56f-60646645bb21",
"name": "URI",
"publisher": "Microsoft",
"version": "22.2.0.0"
},
{
"id": "e31ad830-3d46-472e-afeb-1d3d35247943",
"name": "BLOB Storage",
"publisher": "Microsoft",
"version": "22.2.0.0"
},
{
"id": "3f95f4c2-037f-44d4-b089-b56ffc01693f",
"name": "OAuth",
"publisher": "Microsoft",
"version": "22.2.0.0"
}
],
"screenshots": [],
"platform": "22.0.0.0",
"idRanges": [
{
"from": 8950,
"to": 8963
}
],
"resourceExposurePolicy": {
"allowDebugging": true,
"allowDownloadingSource": true,
"includeSourceInSymbolFile": true
},
"runtime": "11.0",
"features": [
"NoImplicitWith"
],
"target": "OnPrem"
}
512 changes: 512 additions & 0 deletions Modules/System/Azure File Services API/src/AFSClientImpl.Codeunit.al

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------

/// <summary>
/// Holds information about directory content in a storage account.
/// </summary>
table 8950 "AFS Directory Content"
{
Access = Public;
InherentEntitlements = X;
InherentPermissions = X;
Extensible = false;
DataClassification = SystemMetadata;
TableType = Temporary;

fields
{
field(1; "Entry No."; Integer)
{
DataClassification = SystemMetadata;
Caption = 'Entry No.', Locked = true;
Access = Internal;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor: Any reason this is internal? Would be great with a comment on why. It should still be possible to access and modify this through RecordRef + FieldRef.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good question, not sure to be honest. As I mentioned this module was based on the module for blob storage, so it might be a leftover from there. I think the access modifier can be safely removed.

}
field(2; "Parent Directory"; Text[2048])
{
DataClassification = SystemMetadata;
Caption = 'Parent Directory', Locked = true;
}
field(3; Level; Integer)
{
DataClassification = SystemMetadata;
Caption = 'Level', Locked = true;
}
field(4; "Full Name"; Text[2048])
{
DataClassification = CustomerContent;
Caption = 'Full Name', Locked = true;
}
field(10; Name; Text[2048])
{
DataClassification = CustomerContent;
Caption = 'Name', Locked = true;
}
field(11; "Creation Time"; DateTime)
{
DataClassification = SystemMetadata;
Caption = 'CreationTime', Locked = true;
}
field(12; "Last Modified"; DateTime)
{
DataClassification = SystemMetadata;
Caption = 'Last-Modified', Locked = true;
}
field(13; "Content Length"; Integer)
{
DataClassification = SystemMetadata;
Caption = 'Content-Length', Locked = true;
}
field(14; "Last Access Time"; DateTime)
{
DataClassification = SystemMetadata;
Caption = 'LastAccessTime', Locked = true;
}
field(15; "Change Time"; DateTime)
{
DataClassification = SystemMetadata;
Caption = 'ChangeTime', Locked = true;
}
field(16; "Resource Type"; Enum "AFS File Resource Type")
{
DataClassification = SystemMetadata;
Caption = 'ResourceType', Locked = true;
}
field(17; Etag; Text[200])
{
DataClassification = SystemMetadata;
Caption = 'Etag', Locked = true;
}
field(18; Archive; Boolean)
{
DataClassification = SystemMetadata;
Caption = 'Archive', Locked = true;
}
field(19; Hidden; Boolean)
{
DataClassification = SystemMetadata;
Caption = 'Hidden', Locked = true;
}
field(20; "Last Write Time"; DateTime)
{
DataClassification = SystemMetadata;
Caption = 'LastWriteTime', Locked = true;
}
field(21; "Read Only"; Boolean)
{
DataClassification = SystemMetadata;
Caption = 'ReadOnly', Locked = true;
}
field(22; "Permission Key"; Text[200])
{
DataClassification = SystemMetadata;
Caption = 'PermissionKey', Locked = true;
}
field(100; "XML Value"; Blob)
{
DataClassification = CustomerContent;
Caption = 'XML Value', Locked = true;
}
field(110; URI; Text[2048])
{
DataClassification = SystemMetadata;
Caption = 'URI', Locked = true;
}
}

keys
{
key(PK; "Entry No.")
{
Clustered = true;
}
}
}
Loading