azure-storage
Version:
Microsoft Azure Storage Client Library for Node.js
182 lines (163 loc) • 5.44 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 util = require('util');
/**
* The interface for classes that represent a encoder which can be used to specify how the queue service encodes and decodes queue messages.
*
* To specify how the queue service encodes and decodes queue messages, set `queueService.messageEncoder` to object of built-in encoder types
* `[TextBase64QueueMessageEncoder]{@link TextBase64QueueMessageEncoder}`, `[BinaryBase64QueueMessageEncoder]{@link BinaryBase64QueueMessageEncoder}`, `[TextXmlQueueMessageEncoder]{@link TextXmlQueueMessageEncoder}`,
* or custom implementation of the QueueMessageEncoder.
*
* @class
*/
function QueueMessageEncoder() {
}
/**
* Function to encode queue messages.
*
* @param {object} [input] The target to be encoded.
* @return {string}
*/
QueueMessageEncoder.prototype.encode = function(input){
return input;
};
/**
* Function to decode queue messages
*
* @param {string} [textToBeDecoded] The base64 string to be decoded.
* @returns {any}
*/
QueueMessageEncoder.prototype.decode = function(textToBeDecoded){
return textToBeDecoded;
};
/**
* Create a new TextBase64QueueMessageEncoder object
* @class
*
* Encode from utf-8 string to base64 string
* Decode from base64 string to utf-8 string.
*
* @constructor
* @extends {QueueMessageEncoder}
*/
function TextBase64QueueMessageEncoder(){
}
util.inherits(TextBase64QueueMessageEncoder, QueueMessageEncoder);
/**
* Encode from utf-8 string to base64 string
* @this TextBase64QueueMessageEncoder
*
* @param {string} [input] The target to be encoded.
*
* @return {string}
*/
TextBase64QueueMessageEncoder.prototype.encode = function(input){
return Buffer.from(input, 'utf8').toString('base64');
};
/**
* Decode from base64 string to utf-8 string.
* @this TextBase64QueueMessageEncoder
*
* @param {string} [textToBeDecoded] The base64 string to be decoded.
*
* @return {string}
*/
TextBase64QueueMessageEncoder.prototype.decode = function(textToDecode){
return Buffer.from(textToDecode, 'base64').toString('utf8');
};
/**
* Create a new BinaryBase64QueueMessageEncoder object
* @class
*
* Encode from binary buffer to base64 string
* Decode from base64 string to binary buffer.
*
* @constructor
* @extends {QueueMessageEncoder}
*/
function BinaryBase64QueueMessageEncoder(){
}
util.inherits(BinaryBase64QueueMessageEncoder, QueueMessageEncoder);
/**
* Encode from binary buffer string to base64 string
* @this BinaryBase64QueueMessageEncoder
*
* @param {Buffer} [input] The target to be encoded.
*
* @return {string}
*/
BinaryBase64QueueMessageEncoder.prototype.encode = function(input){
return input.toString('base64');
};
/**
* Decode from base64 string to binary buffer.
* @this BinaryBase64QueueMessageEncoder
*
* @param {string} [textToBeDecoded] The base64 string to be decoded.
*
* @return {Buffer}
*/
BinaryBase64QueueMessageEncoder.prototype.decode = function(textToDecode){
return Buffer.from(textToDecode, 'base64');
};
/**
* Create a new TextXmlQueueMessageEncoder object
* @class
*
* Encode utf-8 string by escaping the xml markup characters.
* Decode from utf-8 string by unescaping the xml markup characters.
*
* @constructor
* @extends {QueueMessageEncoder}
*/
function TextXmlQueueMessageEncoder(){
}
util.inherits(TextXmlQueueMessageEncoder, QueueMessageEncoder);
/**
* Encode utf-8 string by escaping the xml markup characters.
* @this TextXmlQueueMessageEncoder
*
* @param {string} [input] The target to be encoded.
*
* @return {string}
*/
TextXmlQueueMessageEncoder.prototype.encode = function(input){
return input.replace(/&/gm, '&')
.replace(/</gm, '<')
.replace(/>/gm, '>')
.replace(/"/gm, '"')
.replace(/'/gm, ''');
};
/**
* Decode from utf-8 string by unescaping the xml markup characters.
* @this TextXmlQueueMessageEncoder
*
* @param {string} [textToBeDecoded] The base64 string to be decoded.
*
* @return {string}
*/
TextXmlQueueMessageEncoder.prototype.decode = function(textToDecode){
return textToDecode.replace(/&/gm, '&')
.replace(/</gm, '<')
.replace(/>/gm, '>')
.replace(/"/gm, '"')
.replace(/'/gm, '\'');
};
module.exports = QueueMessageEncoder;
module.exports.TextBase64QueueMessageEncoder = TextBase64QueueMessageEncoder;
module.exports.BinaryBase64QueueMessageEncoder = BinaryBase64QueueMessageEncoder;
module.exports.TextXmlQueueMessageEncoder = TextXmlQueueMessageEncoder;