Ticket #2507 (closed melhoria: fixed)

Opened 6 years ago

Last modified 4 years ago

Implementar uma camada de WebService no Expresso

Reported by: niltonneto Owned by: niltonneto
Priority: normal Milestone: Sandbox - API Rest para Expresso 2.2
Component: API Version: sandbox
Severity: média Keywords: api webservice json rpc
Cc: WorkGroup:

Description

Há vários anos, já se sabe que o EgroupWare? possui, em sua API, uma camada para chamadas remotas usando SOAP ou XMLRPC, mas que o Expresso até hoje, nunca precisou utilizá-la. E mesmo que precisasse de um desses padrões, seria necessário revisar, atualizar ou mesmo refazer esta camada de WebService?, já que houve mudança significativa em sua API, construção de novos módulos e novas funcionalidades.

Com a tendência de evolução do Expresso para uma arquitetura orientada a serviços, tanto em sua versão 2.4 quanto em futuras versões (3.0....), com o surgimento de demandas tecnológicas provenientes da interoperabilidade do objeto Expresso com outros serviços e sistemas, da implementação de aplicativos Mobile para acesso ao Expresso, etc... será implementada uma camada de WebService? para o Expresso, que deverá contemplar inicialmente os seguintes itens:

  • Compatibilidade com versões do Expresso > 2.2;
  • Protocolo de comunicação JSON-RPC;

Toda documentação será publicada a partir do Draft:

 http://trac.expressolivre.org/wiki/WebServiceDraft

Change History

comment:1 Changed 6 years ago by niltonneto

  • Status changed from new to assigned

Adicionado em [5594] [5595] Subprojeto inicial contendo arquivos e pastas.

comment:2 Changed 6 years ago by niltonneto

Adicionado em [5633] método que retorna versão instalada do Expresso.

Corrigido em [5634] problema ao retornar o Body Resume na lista de mensagens, somente no Expresso 2.2.

comment:3 Changed 6 years ago by niltonneto

Adicionado em [5668] parâmetro 'search' no método Mail.getUserFolders().

comment:4 Changed 6 years ago by niltonneto

Corrigido em [5670] problema ao retornar cota do usuário (used,limit,percent), somente no Expresso 2.2.

comment:5 Changed 6 years ago by niltonneto

Adicionado em [5681] a primeira parte do método Catalog.getUserContacts().

comment:6 Changed 6 years ago by niltonneto

Adicionado em [5687] melhorias no método Catalog.getUserContacts(), e adicionado método Catalog.getImagePicture().

comment:7 Changed 6 years ago by niltonneto

Corrigido em [5691] problema de acentuação no método Catalog.getUserContacts().

Obs.: O padrão do WebService? é UTF-8.

comment:8 Changed 6 years ago by niltonneto

Adicionado em [5694] diversas melhorias no método Catalog.getUserContacts():

  • Padronizado prefixo do nome das variáveis;
  • Adicionada variável para sinalizar foto no contato;
  • Adicionada variável contendo array de telefones;

comment:9 Changed 6 years ago by niltonneto

Corrigido em [5699] condição invertida 'id_typeof_contact_connection' para emails e telefones.

comment:10 Changed 6 years ago by niltonneto

Implementado em [5707] as seguintes melhorias:

  • Modificado alguns atributos e métodos para 'private' e 'protected';
  • Adicionado parâmetro 'contactType' para sinalizar busca no contato pessoal ou LDAP;
  • Adicionado método que busca contatos do LDAP, utilizando o método "quicksearch" do ExpressoMail?;
  • Adicionado parâmetro 'search' no método Mail.getUserContacts, para contatos pessoais ou global;

comment:11 Changed 6 years ago by niltonneto

Adicionado em [5712] busca de foto do contato global (LDAP), no método Catalog.getImagePicture().

comment:12 Changed 6 years ago by niltonneto

Corrigido em [5714] problema do "dn" como "contactID" por causa JSON encode/decode em versões PHP < 5.3

comment:13 Changed 6 years ago by niltonneto

Removido em [5722] log de error no método getUserLdapPhoto().

comment:14 Changed 6 years ago by niltonneto

Implementado em [5889] as seguintes melhorias:

  • Adicionado método Expresso.getUserProfile();
  • Adicionado método Expresso.getUserPreferences();
  • Adicionado no result do método Expresso.login(), informações adicionais e preferências do usuário logado no Expresso;

comment:15 Changed 6 years ago by niltonneto

Conforme análise refeita, ficou constatado que o método Expresso.getUserPreferences() não será utilizado. Removido em [5895]

Padronizado em [5896] retorno do método Expresso.getUserProfile() e seu valor dentro do retorno do método Expresso.login().

comment:16 Changed 6 years ago by niltonneto

Implementado em [5954] as seguintes modificações:

  • Classe http_request renomeada para HttpRequest? (classe e arquivo);
  • Adicionado classe Errors para tratamento centralizado de erros;
  • Movido para "library" as classes existentes em "/";
  • Corrigido método Catalog.getUserId();

comment:17 Changed 6 years ago by niltonneto

Corrigido em [5956] problema em Catalog, referente ao repasse de ID da requisição.

comment:18 Changed 6 years ago by niltonneto

Modificada em [6061] implementação para tratamento de erros usando ResponseException?.

comment:19 Changed 6 years ago by niltonneto

Corrigido em [6062] rotina que efetua logout do usuário.

comment:20 Changed 6 years ago by asaikawa

Implementado em [6084]:

  • Adicionado recurso de envio de email de suporte ou sugestão: Mail.SendSupportFeedback?
  • Adicionado na classe Errors, um erro de envio de email

comment:21 Changed 6 years ago by asaikawa

Implementado em [6091]:

  • Adicionado recurso de limpar a pasta Lixeira: Mail.CleanTrash?
  • Adicionado na classe Errors, um erro de lixeira não pôde ser limpa

comment:22 Changed 6 years ago by asaikawa

Implementado em [6092]:

  • Inserido código (jQuery e PHP) contendo a interface de um cliente para a realizacao dos testes de consumo dos webservices

comment:23 Changed 6 years ago by niltonneto

Implementado em [6110] as seguintes melhorias em Expresso.getUserProfile():

  • Modificado contactID para carregar userDN do usuário logado;
  • Adicionado contactApps para carregar array de aplicações liberadas no Expresso;

comment:24 Changed 6 years ago by niltonneto

Removido em [6119] implementação descontinuada.

comment:25 Changed 6 years ago by niltonneto

Removido em [6121] parâmetro $request desnecessário na chamada do método getResponse().

comment:26 Changed 6 years ago by niltonneto

Adicionada Exception em [6125] para tratamento de erro quando mensagem (msgID) não for encontrada na pasta (msgFolder).

Last edited 6 years ago by niltonneto (previous) (diff)

comment:27 Changed 6 years ago by asaikawa

Implementado em [6155]:

  • Adicionados os recursos para adicionar, remover e renomear pastas: Mail.AddFolder?, Mail.DelFolder? e Mail.RenameFolder?
  • Adicionados erros tratados nos recursos adicionados

comment:28 Changed 6 years ago by asaikawa

Implementado em [6156]:

  • Atualização do restclient com os testes das operações de adicionar pasta, remover e renomear.

comment:29 Changed 6 years ago by niltonneto

Refatorado e centralizado em [6165] todo tratamento de erros no WS, encapsulando ResponseException? e gerando um arquivo para registro dos erros por código, chave e mensagem.

comment:30 Changed 6 years ago by asaikawa

Implementado em [6166]:

  • Inserida a validação da quantidade máxima de pastas na operação de adicionar pasta
  • Mesmo passando por todas as validações, na remoção de pasta ocorria um erro. Como solução paliativa, antes de realizar a remoção está sendo feita a reinstanciação da classe imap. É necessário verificar o que ocorre com este objeto durante as validações, para que ele não precise ser reinstanciado.

comment:31 Changed 6 years ago by niltonneto

Corrigido em [6191] query SQL que executa busca de contatos pessoais, para melhorar rotina de pesquisa, bem como permitir que procure também por email.

comment:32 Changed 6 years ago by niltonneto

  • Corrigido em [6228] problema referente à leitura do conteúdo (body).
  • Corrigido em [6227] problema referente ao caminho relativo do header.inc.php
  • Corrigido em [6226] problema referente ao atributo expressoVersion.
  • Corrigido em [6225] problema de performance ocasionado pelo ldap_connect.

comment:33 Changed 6 years ago by niltonneto

Implementado em [6239] mapeamento dos módulos do Expresso, para liberar acesso no Web Service, através de arquivo de configuração (user.ini), baseado na ACL do usuário logado.

comment:34 Changed 6 years ago by niltonneto

Adicionado em [6241] valor padrão = "4" para o mínimo de caracteres exigidos na busca de contatos, mantendo a compatibilidade com API do Expresso 2.2, já que na 2.4 este valor é uma configuração do servidor.

comment:35 Changed 6 years ago by niltonneto

Alterado em [6247] implementação do campo "to" na lista de mensagens, conforme modificação feita na class imap_functions do Expresso 2.4

comment:36 Changed 6 years ago by niltonneto

Implementado em [6256] as referidas validações nas variáveis de retorno, para evitar possíveis erros de implementação no lado do cliente, em consequência da nulidade das mesmas.

comment:37 Changed 6 years ago by niltonneto

Corrigido em [6267] valor de retorno da variável "msghasattachments" para API 2.2

comment:38 Changed 6 years ago by niltonneto

Implementado em [6273] condição que permite utilizar os recursos disponíveis no Web Service, conforme usuário logado na aplicação Web do Expresso, sem precisar repassar o "auth" para validação de sessão.

comment:39 Changed 6 years ago by niltonneto

Implementado em [6274] condição dentro recurso "ContactPictureResource?", para retornar foto do usuário logado, quando "contactID" for nulo.

comment:40 Changed 6 years ago by niltonneto

A revisão [6267] ficou com a implementação invertida. Alterado em [6277] para corrigir problema da variável "msgHasAttachments" para 2.2

comment:41 Changed 6 years ago by niltonneto

Implementado em [6307] recurso "Mail/Attachment?" para permitir o download de anexo.

comment:42 Changed 6 years ago by niltonneto

  • Implementado em [6311] no restclient, botão para retornar foto do usuário logado, quando "contactID" não for enviado para o recurso "ContactPictureResource?".
  • Implementado em [6312] no restclient, selectbox para efetuar download de anexo a partir do recurso "Mail/Attachment?".

comment:43 Changed 6 years ago by niltonneto

  • Adicionado em [6322] alguns parâmetros no Recurso "Mail/Attachment?", para manter compatibilidade com versão 2.2;
  • Modificado em [6323] implementação do restclient, para manter compatibilidade com versão 2.2;

comment:44 Changed 6 years ago by asaikawa

  • Implementado parcialmente o Recurso Send em [6338]
  • Implementado no restclient, o formulário para envio de e-mail do Recurso Send em [6339]

comment:45 Changed 6 years ago by niltonneto

Adicionado em [6382] no Restclient, a biblioteca json2.js para compatibilizar parserJSON com versões do IE < 9.

comment:46 Changed 6 years ago by niltonneto

Efetuado em [6383] melhorias na página de testes do Restclient.

comment:47 Changed 6 years ago by asaikawa

  • Implementado em [6423] o Recurso Events
  • Implementado em [6424] formulário do Restclient para teste do Recurso Events

comment:48 Changed 6 years ago by niltonneto

  • Modificado em [6489] implementação para envio de email através do recurso "Mail/Send?".
  • Modificado em [6493] implementação para permitir anexos no envio de email, através do recurso "Mail/Send?".

comment:49 Changed 6 years ago by pereira.jair

Modificado em [6495] implementação para deletar mensagens de email através do recurso "Mail/DelMessage?"

comment:50 Changed 6 years ago by asaikawa

Corrigido em [6515] o retorno de strings acentuadas no Recurso Events

comment:51 Changed 6 years ago by pereira.jair

Alteracao do ExpressoVersion? para retornar a apiVersion na revisao [6554].

comment:52 Changed 6 years ago by niltonneto

Corrigido em [6601] padrão de charset para todos os parâmetros recebidos, conforme definição de charset do Webservice (convencionado como UTF-8), já que a API atual do Expresso utiliza ISO-8859-1.

comment:53 Changed 6 years ago by niltonneto

Corrigido em [6602] condicional para traduzir nome da pasta INBOX (versão 2.2).

comment:54 Changed 6 years ago by niltonneto

Corrigido em [6603] problema no envio de mensagem como texto plano.

Corrigido em [6604] problema na leitura de emails devido ao tipo de charset.

comment:55 Changed 6 years ago by niltonneto

Corrigido em [6617] envio de email (versão 2.4), respeitando preferência para salvar ou não após o envio.

comment:56 Changed 6 years ago by niltonneto

Adicionada em [6664] implementação para enviar email com anexo na versão 2.4 (conforme nova API).

comment:57 Changed 6 years ago by niltonneto

Implementado em [6666] verificação de limite do tamanho de anexos para envio de email, conforme configuração do administrador (qualquer versão).

comment:58 Changed 6 years ago by niltonneto

Implementada em [6701] pesquisa de mensagens para API do Expresso 2.2.

comment:59 Changed 6 years ago by niltonneto

Corrigido em [6775] problema referente à paginação de mensagens.

comment:60 Changed 6 years ago by viani

  • Milestone set to Sandbox - Expresso 2.4 API

comment:61 Changed 6 years ago by viani

  • Status changed from assigned to closed
  • Resolution set to fixed

comment:62 Changed 6 years ago by viani

  • Status changed from closed to reopened
  • Resolution fixed deleted

comment:63 Changed 6 years ago by alexandrecorreia

Revisão [7463] [7464] [7465], adicionado melhorias no resource do calendar, retornando inclusive os participantes internos e externos. Adicionado tb o resource para listar os servidores disponíveis para o serviço REST.

comment:64 Changed 6 years ago by alexandrecorreia

Revisão [7469] - Ajustando os encodings dos parametros para caixa postal.

comment:65 Changed 6 years ago by alexandrecorreia

Revisão [7470] - Ajustando os encodings dos parametros para caixa postal.

comment:66 Changed 5 years ago by pereira.jair

Revisão [7577] - Correção da varíavel global DIR que dependendo da configuração do apache estava sendo definida de forma incorreta, também foi feita a liberação do Resource ExpressoVersion? para o método GET.

comment:67 Changed 5 years ago by pereira.jair

Revisão [7740] - Correção do Resource de Eventos que estava retornando somente o primeiro resultado.

comment:68 Changed 5 years ago by alexandrecorreia

Revisão [7807]- Criado novo cliente REST, que servirá para testes no Expresso e também será utilizado como uma documentação de apoio aos desenvolvedores para os recursos.

comment:69 Changed 5 years ago by alexandrecorreia

Revisão [7808] - Apenas completando a revisão [7807].

comment:70 Changed 5 years ago by alexandrecorreia

As revisões a seguir foram modificações dentro da API REST e no novo client REST para teste do Expresso, segue :

comment:71 Changed 4 years ago by viani

  • Status changed from reopened to closed
  • Resolution set to fixed
Note: See TracTickets for help on using tickets.