Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Azure List Storage Accounts
See more Azure Storage Accounts Examples
Demonstrates how to list Azure storage accounts.Chilkat Pascal (Lazarus/Delphi) Downloads
program ChilkatDemo;
// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
SysUtils,
CkDllLoader,
Chilkat.JsonObject,
Chilkat.Http;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
http: THttp;
jsonToken: TJsonObject;
url: string;
jsonResp: string;
json: TJsonObject;
i: Integer;
count_i: Integer;
skuName: string;
skuTier: string;
kind: string;
id: string;
name: string;
v_type: string;
location: string;
propertiesNetworkAclsBypass: string;
propertiesNetworkAclsDefaultAction: string;
propertiesSupportsHttpsTrafficOnly: Boolean;
propertiesEncryptionServicesFileEnabled: Boolean;
propertiesEncryptionServicesFileLastEnabledTime: string;
propertiesEncryptionServicesBlobEnabled: Boolean;
propertiesEncryptionServicesBlobLastEnabledTime: string;
propertiesEncryptionKeySource: string;
propertiesProvisioningState: string;
propertiesCreationTime: string;
propertiesPrimaryEndpointsBlob: string;
propertiesPrimaryEndpointsQueue: string;
propertiesPrimaryEndpointsTable: string;
propertiesPrimaryEndpointsFile: string;
propertiesPrimaryLocation: string;
propertiesStatusOfPrimary: string;
begin
success := False;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http := THttp.Create;
// Load an OAuth2 access token previously fetched by this example: Get Azure OAuth2 Access Token
jsonToken := TJsonObject.Create;
success := jsonToken.LoadFile('qa_data/tokens/azureToken.json');
// Assuming success..
http.AuthToken := jsonToken.StringOf('access_token');
WriteLn('AuthToken: ' + http.AuthToken);
http.Accept := 'application/json';
url := 'https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Storage/storageAccounts?api-version=2018-11-01';
jsonResp := http.QuickGetStr(url);
if (http.LastMethodSuccess <> True) then
begin
WriteLn(http.LastErrorText);
Exit;
end;
WriteLn('Response Status Code: ' + http.LastStatus);
json := TJsonObject.Create;
json.Load(jsonResp);
json.EmitCompact := False;
WriteLn(json.Emit());
if (http.LastStatus <> 200) then
begin
WriteLn('Failed.');
Exit;
end;
// Sample output...
// (See the parsing code below..)
//
// Use this online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON
// {
// "value": [
// {
// "sku": {
// "name": "Standard_LRS",
// "tier": "Standard"
// },
// "kind": "Storage",
// "id": "/subscriptions/6c42643b-ebef-45e0-b917-b3583b84a57f/resourceGroups/gchilkat/providers/Microsoft.Storage/storageAccounts/chilkat",
// "name": "chilkat",
// "type": "Microsoft.Storage/storageAccounts",
// "location": "eastus",
// "tags": {},
// "properties": {
// "networkAcls": {
// "bypass": "AzureServices",
// "virtualNetworkRules": [
// ],
// "ipRules": [
// ],
// "defaultAction": "Allow"
// },
// "supportsHttpsTrafficOnly": true,
// "encryption": {
// "services": {
// "file": {
// "enabled": true,
// "lastEnabledTime": "2017-12-28T11:02:10.6840887Z"
// },
// "blob": {
// "enabled": true,
// "lastEnabledTime": "2017-12-28T11:02:10.6840887Z"
// }
// },
// "keySource": "Microsoft.Storage"
// },
// "provisioningState": "Succeeded",
// "creationTime": "2016-04-18T22:57:36.5377065Z",
// "primaryEndpoints": {
// "blob": "https://chilkat.blob.core.windows.net/",
// "queue": "https://chilkat.queue.core.windows.net/",
// "table": "https://chilkat.table.core.windows.net/",
// "file": "https://chilkat.file.core.windows.net/"
// },
// "primaryLocation": "eastus",
// "statusOfPrimary": "available"
// }
// }
// ]
// }
//
i := 0;
count_i := json.SizeOfArray('value');
while i < count_i do
begin
json.I := i;
skuName := json.StringOf('value[i].sku.name');
skuTier := json.StringOf('value[i].sku.tier');
kind := json.StringOf('value[i].kind');
id := json.StringOf('value[i].id');
name := json.StringOf('value[i].name');
v_type := json.StringOf('value[i].type');
location := json.StringOf('value[i].location');
propertiesNetworkAclsBypass := json.StringOf('value[i].properties.networkAcls.bypass');
propertiesNetworkAclsDefaultAction := json.StringOf('value[i].properties.networkAcls.defaultAction');
propertiesSupportsHttpsTrafficOnly := json.BoolOf('value[i].properties.supportsHttpsTrafficOnly');
propertiesEncryptionServicesFileEnabled := json.BoolOf('value[i].properties.encryption.services.file.enabled');
propertiesEncryptionServicesFileLastEnabledTime := json.StringOf('value[i].properties.encryption.services.file.lastEnabledTime');
propertiesEncryptionServicesBlobEnabled := json.BoolOf('value[i].properties.encryption.services.blob.enabled');
propertiesEncryptionServicesBlobLastEnabledTime := json.StringOf('value[i].properties.encryption.services.blob.lastEnabledTime');
propertiesEncryptionKeySource := json.StringOf('value[i].properties.encryption.keySource');
propertiesProvisioningState := json.StringOf('value[i].properties.provisioningState');
propertiesCreationTime := json.StringOf('value[i].properties.creationTime');
propertiesPrimaryEndpointsBlob := json.StringOf('value[i].properties.primaryEndpoints.blob');
propertiesPrimaryEndpointsQueue := json.StringOf('value[i].properties.primaryEndpoints.queue');
propertiesPrimaryEndpointsTable := json.StringOf('value[i].properties.primaryEndpoints.table');
propertiesPrimaryEndpointsFile := json.StringOf('value[i].properties.primaryEndpoints.file');
propertiesPrimaryLocation := json.StringOf('value[i].properties.primaryLocation');
propertiesStatusOfPrimary := json.StringOf('value[i].properties.statusOfPrimary');
i := i + 1;
end;
http.Free;
jsonToken.Free;
json.Free;
end;
// ---------------------------------------------------------------------------
begin
try
RunDemo;
except
on E: Exception do
WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
end;
WriteLn;
{$IFDEF MSWINDOWS}
WriteLn('Press Enter to exit...');
ReadLn;
{$ENDIF}
end.