Skip to content

O conceito Promise

Vinícius Pozzebon edited this page Sep 16, 2017 · 6 revisions

Para que o processo de upload na StorageAPI não degrade o desempenho do front-end, adotamos o conceito de Promise (promessa), onde o front-end, ao disparar um pedido de "upload", recebe da StorageAPI um identificador de "promessa" que já identifica, minimamente, se os arquivos submetidos foram aceitos para processamento.

Com esse identificador da promessa, o front-end pode consultar periodicamente se o "status" da promessa mudou e se o lote de arquivos enviados já foi processado no todo ou em parte.

Estrutura de uma Promise:

{
   "success":true,
   "data":{
      "StorageAPI":{
         "send_id":"abcd123",
         "timestamp_start":121212333,
         "timestamp_end":null,
         "send_status_code":206,
         "files":[
            {
               "file_id":"{hash}",
               "name":"DOC0025.jpg",
               "sha1":"38c34f6453ab1cef08d42618438e6380fac3ed13",
               "timestamp_start":123123123,
               "timestamp_end":null,
               "status_code":202,
               "url":null,
               "width":null,
               "height":null,
               "upload_tipo_cod":[
                  0
               ]
            },
            {
               "file_id":"{hash}",
               "name":"DOC0026.jpg",
               "sha1":"asdasd6453ab1cef08d42618438e6380fac3ed13",
               "timestamp_start":123123123,
               "timestamp_end":321321321,
               "status_code":201,
               "url":"https://s3.amazonaws.com/{hash}.jpg",
               "width":970,
               "height":615,
               "upload_tipo_cod":[
                  0
               ]
            },
            {
               "file_id":"{hash}",
               "name":"DOC0027.jpg",
               "sha1":"asdasd6453ab1cef08d42618438e6380fac3ed13",
               "timestamp_start":123123123,
               "timestamp_end":321321321,
               "status_code":415,
               "url":null,
               "width":null,
               "height":null,
               "upload_tipo_cod":[
                  0
               ]
            }
         ]
      }
   }
}
  • send_id: identifica a promise;
  • timestamp_start: momento em que a promise foi iniciada no back-end;
  • timestamp_end: momento em que o back-end concluiu a promise;