azure-storage-legacy
Version:
Microsoft Azure Storage Client Library for node for back compat with older versions of node sdk
181 lines (146 loc) • 6.5 kB
JavaScript
//
// Copyright (c) Microsoft and contributors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Module dependencies.
var azureCommon = require('azure-common');
var xmlbuilder = azureCommon.xmlbuilder;
var Constants = azureCommon.Constants;
// Expose 'ServicePropertiesResult'.
var exports = module.exports;
exports.serialize = function (servicePropertiesJs) {
var doc = xmlbuilder.create(Constants.STORAGE_SERVICE_PROPERTIES_ELEMENT, { version: '1.0', encoding: 'utf-8' });
if (typeof servicePropertiesJs.Logging !== 'undefined') {
doc = doc.ele(Constants.LOGGING_ELEMENT);
if (servicePropertiesJs.Logging.Version) {
doc = doc.ele(Constants.VERSION_ELEMENT)
.txt(servicePropertiesJs.Logging.Version)
.up();
}
if (typeof servicePropertiesJs.Logging.Delete !== 'undefined') {
doc = doc.ele(Constants.DELETE_ELEMENT)
.txt(servicePropertiesJs.Logging.Delete)
.up();
}
if (typeof servicePropertiesJs.Logging.Read !== 'undefined') {
doc = doc.ele(Constants.READ_ELEMENT)
.txt(servicePropertiesJs.Logging.Read)
.up();
}
if (typeof servicePropertiesJs.Logging.Write !== 'undefined') {
doc = doc.ele(Constants.WRITE_ELEMENT)
.txt(servicePropertiesJs.Logging.Write)
.up();
}
if (typeof servicePropertiesJs.Logging.RetentionPolicy !== 'undefined') {
doc = doc.ele(Constants.RETENTION_POLICY_ELEMENT);
if (typeof servicePropertiesJs.Logging.RetentionPolicy.Enabled !== 'undefined') {
doc = doc.ele(Constants.ENABLED_ELEMENT)
.txt(servicePropertiesJs.Logging.RetentionPolicy.Enabled)
.up();
}
if (typeof servicePropertiesJs.Logging.RetentionPolicy.Days !== 'undefined') {
doc = doc.ele(Constants.DAYS_ELEMENT)
.txt(servicePropertiesJs.Logging.RetentionPolicy.Days)
.up();
}
doc = doc.up();
}
doc = doc.up();
}
if (typeof servicePropertiesJs.Metrics !== 'undefined') {
doc = doc.ele(Constants.METRICS_ELEMENT);
if (typeof servicePropertiesJs.Metrics.Version !== 'undefined') {
doc = doc.ele(Constants.VERSION_ELEMENT)
.txt(servicePropertiesJs.Metrics.Version)
.up();
}
if (typeof servicePropertiesJs.Metrics.Enabled !== 'undefined') {
doc = doc.ele(Constants.ENABLED_ELEMENT)
.txt(servicePropertiesJs.Metrics.Enabled)
.up();
}
if (typeof servicePropertiesJs.Metrics.IncludeAPIs !== 'undefined') {
doc = doc.ele(Constants.INCLUDE_APIS_ELEMENT)
.txt(servicePropertiesJs.Metrics.IncludeAPIs)
.up();
}
if (typeof servicePropertiesJs.Metrics.RetentionPolicy !== 'undefined') {
doc = doc.ele(Constants.RETENTION_POLICY_ELEMENT);
if (typeof servicePropertiesJs.Metrics.RetentionPolicy.Enabled !== 'undefined') {
doc = doc.ele(Constants.ENABLED_ELEMENT)
.txt(servicePropertiesJs.Metrics.RetentionPolicy.Enabled)
.up();
}
if (typeof servicePropertiesJs.Metrics.RetentionPolicy.Days !== 'undefined') {
doc = doc.ele(Constants.DAYS_ELEMENT)
.txt(servicePropertiesJs.Metrics.RetentionPolicy.Days)
.up();
}
doc = doc.up();
}
doc = doc.up();
}
return doc.doc().toString();
};
exports.parse = function (response) {
var servicePropertiesXml = response.body.StorageServiceProperties;
var serviceProperties = {};
if (servicePropertiesXml.Logging) {
serviceProperties.Logging = {};
if (servicePropertiesXml.Logging.Version) {
serviceProperties.Logging.Version = servicePropertiesXml.Logging.Version;
}
if (servicePropertiesXml.Logging.Delete) {
serviceProperties.Logging.Delete = servicePropertiesXml.Logging.Delete === 'true';
}
if (servicePropertiesXml.Logging.Read) {
serviceProperties.Logging.Read = servicePropertiesXml.Logging.Read === 'true';
}
if (servicePropertiesXml.Logging.Write) {
serviceProperties.Logging.Write = servicePropertiesXml.Logging.Write === 'true';
}
if (servicePropertiesXml.Logging.RetentionPolicy) {
serviceProperties.Logging.RetentionPolicy = {};
if (servicePropertiesXml.Logging.RetentionPolicy.Enabled) {
serviceProperties.Logging.RetentionPolicy.Enabled = servicePropertiesXml.Logging.RetentionPolicy.Enabled === 'true';
}
if (servicePropertiesXml.Logging.RetentionPolicy.Days) {
serviceProperties.Logging.RetentionPolicy.Days = parseInt(servicePropertiesXml.Logging.RetentionPolicy.Days, 10);
}
}
}
if (servicePropertiesXml.Metrics) {
serviceProperties.Metrics = {};
if (servicePropertiesXml.Metrics.Version) {
serviceProperties.Metrics.Version = servicePropertiesXml.Metrics.Version;
}
if (servicePropertiesXml.Metrics.Enabled) {
serviceProperties.Metrics.Enabled = servicePropertiesXml.Metrics.Enabled === 'true';
}
if (servicePropertiesXml.Metrics.IncludeAPIs) {
serviceProperties.Metrics.IncludeAPIs = servicePropertiesXml.Metrics.IncludeAPIs === 'true';
}
if (servicePropertiesXml.Metrics.RetentionPolicy) {
serviceProperties.Metrics.RetentionPolicy = {};
if (servicePropertiesXml.Metrics.RetentionPolicy.Enabled) {
serviceProperties.Metrics.RetentionPolicy.Enabled = servicePropertiesXml.Metrics.RetentionPolicy.Enabled === 'true';
}
if (servicePropertiesXml.Metrics.RetentionPolicy.Days) {
serviceProperties.Metrics.RetentionPolicy.Days = parseInt(servicePropertiesXml.Metrics.RetentionPolicy.Days, 10);
}
}
}
return serviceProperties;
};