Очистить LeaseWeb CDN с помощью LeaseWeb CDN API в POSTMAN

#c# #cdn #postman

#c# #cdn #postman

Вопрос:

У меня возникли трудности с отправкой запроса на очистку в LeaseWeb CDN API. Трудность заключается в том, что примеры LeaswebExamples находятся на PHP / Python и не содержат никакой информации о том, как это сделать в Post man. Пример curl является ближайшим:


curl -X POST -d '{"urls":["/path/to/file.jpg"]}' "https://api.leasewebcdn.com/content/purge/1234567890/123/1440593540/4a69f766bc48b1ed3d025339313196c388de8da5"

но я всегда получаю «forbidden» обратно от Postman.

Я создаю хэш sha1, используя SecretKey timeStamp authenticationURL; в c#:

         var authenticationURL = "https://api.leasewebcdn/content/purge";
        var sha1 = new SHA1Managed();
        var timeStamp = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;

        var sha1Input = secretKey   timeStamp   authenticationURL;

        var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(sha1Input));
        var sb = new StringBuilder(hash.Length);

        foreach (byte b in hash)
        {
            // can be "x2" if you want lowercase
            sb.Append(b.ToString("X2"));
        }
 

Который я затем использую в Postman для отправки следующего:

https://api.leasewebcdn.com/content/purge/1405123458/8888/1476699042/D94CF7DDF02CC6D11C7A0B0221F5DE40C11155E01

где 1405123458 = номер клиента

8888 = идентификатор зоны

D94CF7DDF02CC6D11C7A0B0221F5DE40C11155E01 = код формы хэшированной подписи

contenttype = application/json body = {«URL-адреса»: [«*»]} <- удалит все файлы в корзине cdn

Каждый раз, когда мне возвращают запрет, и я не могу понять, что не так, поскольку все параметры верны, насколько я вижу.

Документы Leaseweb CDN API находятся по следующей ссылке, но все они написаны на PHP / Python, и у меня такое чувство, что мой метод хеширования может быть неправильным?

http://developer.leaseweb.com/cdn-docs/?php#purge-file (s) -из-зоны

Кто-нибудь раньше использовал Leaseweb CDN api через C #? Любая помощь или указания будут с благодарностью приняты.

Ответ №1:

Хорошо, мне удалось решить эту проблему. На самом деле весь код был хорош, за исключением хэш-подписи. Для LeaseWeb подпись хэша всегда должна быть в нижнем регистре. Этого можно достичь, изменив приведенный выше код на 1 (один !!) характер:

     var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(sha1Input));
    var sb = new StringBuilder(hash.Length);

    foreach (byte b in hash)
    {
        // this must be lowercase x2 (not X2) to produce a lowercase hash signature.
        sb.Append(b.ToString("x2"));
    }
 

Я был удивлен, что это не было указано в документации LeaseWeb CDN, поскольку это заставило меня потратить много времени на выяснение этого….