2012-05-02 45 views
0

У меня есть эта строка, в которой мне нужно переструктурировать с использованием JavaScript.Строка реструктуризации в javascript

Ярлык = 11121212 & TopicArn = тест & AWSAccountId.member.1 = YYYYYYY & ActionName.member.1 = createTopic & Action = AddPermission & Version = 2010-03-31 & AWSAccessKeyId = XXXXXXXXX & SignatureVersion = 2 & SignatureMethod = HmacSHA1 & Отметка = 2012-05-02T16% 3A06% 3A09.000Z & Подпись = C3uIh% 2Bz% 2Fik

Для этого примера AWSAccessKeyId должен быть первой частью строки, а label должен быть вторым последним. Есть и другие, похожие на это.

Ожидаемый результат --AWSAccessKeyId = XXXXXXXXX & AWSAccountId.member.1 = YYYYYYYYY & Action = AddPermission & ActionName.member.1 = & Опубликовать Ярлык = КСН-SNS-разрешение маркировать & Подпись = dEaNL0ibP5c7xyl4qXDPFPADW0meoUX9caKyUIx1wkk% 3D & SignatureMethod = HmacSHA256 & SignatureVersion = 2 & Отметка = 2012-05-02T00% 3A51% 3A23.965Z & TopicArn = ARN% 3Aaws% 3Asns% 3Aus-восток-1% 3A335750469596% 3AiOSGoesWooooo-1335919882 & версия = 2010-03-31

Код, который создает этот код t string

exports.generatePayload = function(params, accessKeyId, secretKey, endpoint) { 
    var host = endpoint.replace(/.*:\/\//, ""); 
    var payload = null; 

    var signer = new AWSV2Signer(accessKeyId, secretKey); 
    params = signer.sign(params, new Date(), { 
     "verb" : "POST", 
     "host" : host, 
     "uriPath" : "/" 
    }); 

    var encodedParams = []; 
    for(var key in params) { 
     if(params[key] !== null) { 
      encodedParams.push(encodeURIComponent(key) + "=" + encodeURIComponent(params[key])); 
     } else { 
      encodedParams.push(encodeURIComponent(key)); 
     } 
    } 
    payload = encodedParams.join("&"); 
    return payload; 
} 

Я попытался поместить это в массив и перестроить его, но это не сработало для меня.

Пожалуйста, советы, как это можно легко сделать с помощью JavaScript

+1

Показать код, который вы пытались –

+0

Что вы имеете в виду, когда вы говорите, что вы пытались положить его в массив и реструктуризации? Можете ли вы отправить код? Это должно сработать. – dweiss

+0

Итак, у меня есть и массив, содержащий все элементы строки, и я делаю соединение, чтобы получить его как строку, такую ​​как: d = []; d.push ("label = 11111"); \t return e = d.join ("&") – Amit

ответ

1
exports.generatePayload = function(params, accessKeyId, secretKey, endpoint) { 
    var host = endpoint.replace(/.*:\/\//, ""); 
    var payload = null; 

    var signer = new AWSV2Signer(accessKeyId, secretKey); 
    params = signer.sign(params, new Date(), { 
     "verb" : "POST", 
     "host" : host, 
     "uriPath" : "/" 
    }); 

    var encodedParams = []; 
    if(params["AWSAccessKeyId"] != null) 
    { 
     encodedParams.push(encodeURIComponent("AWSAccessKeyId") + "=" + encodeURIComponent(params["AWSAccessKeyId"])); 

    } 
    if(params["AWSAccountId.member.1"] != null) 
    { 
     encodedParams.push(encodeURIComponent("AWSAccountId.member.1") + "=" + encodeURIComponent(params["AWSAccountId.member.1"])); 

    } 
    //other_ifs_for_param_keys_here 
    payload = encodedParams.join("&"); 
    return payload; 
+0

Есть более эффективные способы делать это, но это сработает. – dweiss

Смежные вопросы