Sincronizando um aplicativo C ++ com o Ubuntu One

3

Atualmente, estou desenvolvendo um aplicativo, em C ++, que sincroniza seus dados com o Ubuntu One, mas não consigo encontrar nenhuma documentação on-line que explique como fazer isso. Eu encontrei Artigo de Ryan Ars Technica que fornece uma excelente introdução para fazer isso em Python, mencionando que existe uma biblioteca que facilitará isso em C, mas não fornece uma dica como para onde esta solução baseada em C pode ser encontrada. Eu pesquisei um pouco sobre o Google, mas ninguém parece estar falando sobre o desenvolvimento de aplicativos que aproveitam a sincronização do Ubuntu One.

Alguém sabe onde posso obter informações sobre essa interface baseada em C?

    
por Chris Wilson 31.05.2011 / 20:08

1 resposta

8

O Ubuntu One fornece sincronização de dados através do desktopcouch, que é uma versão local do CouchDB que é automaticamente sincronizada com o Ubuntu One e todas as suas máquinas. Algumas documentações para as APIs em nuvem e Python estão disponíveis em Ubuntu One aqui , que pode ser útil se você quiser Crie aplicativos da Web ou aplicativos móveis que funcionem com os mesmos dados do aplicativo do Ubuntu C ++.

A API C / C ++ ainda não está no site do desenvolvedor (será em breve!), então aqui está um resumo que deve ser suficiente para começar.

Para C / C ++, você tem couchdb-glib e desktopcouch-glib. O couchdb-glib fornece a API CouchDB genérica, e o desktopcouch-glib apenas fornece um objeto, que cria um objeto Session com tudo o que é necessário para conectar-se ao desktop do Ubuntu One.

Então:

DesktopcouchSession *dc = desktopcouch_session_new ();

DesktopcouchSession é uma subclasse de CouchdbSession, portanto, depois de obter uma instância dele, você pode usar os métodos em CouchdbSession para acessar a instância do CouchDB subjacente:

GSList              *couchdb_session_list_databases (CouchdbSession *session, 
                                                     GError **error);
CouchdbDatabase     *couchdb_session_get_database (CouchdbSession *session, 
                                                   const char *dbname, 
                                                   GError **error);
gboolean             couchdb_session_create_database (CouchdbSession *session, 
                                                      const char *dbname, 
                                                      GError **error);
gboolean             couchdb_session_delete_database (CouchdbSession *session, 
                                                      const char *dbname, 
                                                      GError **error);

Com esses métodos, você gerencia bancos de dados e, com get_database e create_database, obtém uma instância de um objeto CouchdbDatabase, que permite gerenciar os documentos nos bancos de dados:

GSList       *couchdb_database_get_all_documents (CouchdbDatabase *database, 
                                                  GError **error);
gboolean      couchdb_database_put_document (CouchdbDatabase *database,
                                             CouchdbDocument *document,
                                             GError **error);
gboolean      couchdb_database_delete_document (CouchdbDatabase *database, 
                                                CouchdbDocument *document, 
                                                GError **error);

Como você pode ver, para gerenciar os próprios documentos, há outro objeto, o CouchdbDocument. Além disso, há subclasses deste para gerenciar tipos específicos de documentos, como CouchdbDocumentContact (para contatos).

Você pode obter a referência completa da API instalando o libcouchdb-glib-doc pacote. Instalando # libdesktopcouch-glib-dev deve incluir todas as bibliotecas que você precisa.

A API oferece acesso ao CouchDB, portanto, é claro que você precisa saber como o próprio CouchDB funciona e como você armazena dados nele. A resposta curta é: os dados são armazenados em documentos JSON e extraídos por ID do documento ou com visualizações pré-calculadas. O link é o livro do CouchDB que explica o método de armazenamento de dados do Couch em mais detalhes.

Se você tiver dúvidas, por favor ping me (aquarius) ou rodrigo no #ubuntuone no freenode. Eu ficaria mais do que feliz em falar com você sobre o que você está planejando fazer e boas maneiras de modelar esses dados no sistema de armazenamento de dados do Ubuntu One.

    
por sil 01.06.2011 / 10:59