[The Sodium crypto library (libsodium)](https://download.libsodium.org/doc/installation/) is a modern, easy-to-use software library for encryption, decryption, signatures, password hashing and more.
[The Sodium crypto library (libsodium)](https://download.libsodium.org/doc/installation/) is a modern, easy-to-use software library for encryption, decryption, signatures, password hashing and more.
* Linux: after [installation](http://doc.libsodium.org/installation/index.html), make sure the file 'libsodium.so' exists on: /usr/local/lib or /opt/local/lib.
* Linux: after [installation](http://doc.libsodium.org/installation/index.html), make sure the file 'libsodium.so' exists on: `/usr/local/lib` or `/opt/local/lib`.
If not, create a symbolic link.
If not, create a symbolic link.
* Windows: copy the file 'sodium.dll' into directory 'duniter4j-core/lib/'
* Windows: copy the file 'sodium.dll' into directory 'duniter4j-core/lib/'
@@ -9,23 +9,29 @@ A la fin de ce tutoriel, vous serez donc *capable de modifier le logiciel*.
...
@@ -9,23 +9,29 @@ A la fin de ce tutoriel, vous serez donc *capable de modifier le logiciel*.
Le projet Duniter4j est composé de plusieurs sous-modules :
Le projet Duniter4j est composé de plusieurs sous-modules :
-`duniter4j-core-shared`: Classes utilitaires Java. Réutilisable dans d'autres projets Java autour de Duniter.
-`duniter4j-core-shared`: Classes utilitaires Java. Réutilisable dans d'autres projets Java autour de Duniter.
-`duniter4j-core-client`: Ensemble de services Java permettant d'accéder à un réseau Duniter (c'est à dire une API Java client Duniter) . Cette partie est **réutilisable dans d'autres applications Java**.
-`duniter4j-core-client`: Ensemble de services Java permettant d'accéder à un réseau Duniter (c'est à dire une API Java client Duniter) . Cette partie est **réutilisable dans d'autres applications Java**.
-`duniter4j-es-*`: Les plugins ElasticSearch, qui implémentent :
-`duniter4j-es-*`: Les plugins ElasticSearch, qui implémentent :
*`duniter4j-es-core`: Indexation de BlockChain Duniter (ESA ou ES API);
*`duniter4j-es-user`: Indexation de données utilisateurs (profils, des messages privées, paramètres chiffrés) (ESUA ou ES USER API);
*`duniter4j-es-core`: Indexation de BlockChain Duniter (ESA ou ES API);
*`duniter4j-es-subscription`: Indexation des abonnements en ligne (notifications par email);
*`duniter4j-es-assembly`: gestion des livrables (packaging).
*`duniter4j-es-user`: Indexation de données utilisateurs (profils, des messages privées, paramètres chiffrés) (ESUA ou ES USER API);
*`duniter4j-es-subscription`: Indexation des abonnements en ligne (notifications par email);
*`duniter4j-es-assembly`: gestion des livrables (packaging).
## Niveau I : récupérer le code source
## Niveau I : récupérer le code source
Ce premier niveau consiste à créer *votre propre version* des sources du logiciel et de récupérer cette copie sur votre ordinateur. Vous y produirez :
Ce premier niveau consiste à créer *votre propre version* des sources du logiciel et de récupérer cette copie sur votre ordinateur. Vous y produirez :
* votre propre compte *GitHub*
- Votre propre compte *GitHub*
* votre propre version du logiciel, votre *fork*
* une copie locale des fichiers de code source provenant de votre *fork*
- Votre propre version du logiciel, votre *fork*
- Une copie locale des fichiers de code source provenant de votre *fork*
### Créez un compte GitHub
### Créez un compte GitHub
...
@@ -33,9 +39,11 @@ Ce premier niveau consiste à créer *votre propre version* des sources du logic
...
@@ -33,9 +39,11 @@ Ce premier niveau consiste à créer *votre propre version* des sources du logic
Rendez-vous sur https://github.com (site en anglais). Renseigner les 3 champs proposés :
Rendez-vous sur https://github.com (site en anglais). Renseigner les 3 champs proposés :
* Sous Windows : [téléchargez](http://maven.apache.org/download.cgi)(version 3.x) puis installez en suivant [ces instructions](http://maven.apache.org/install.html).
* Sous Windows : [téléchargez](http://maven.apache.org/download.cgi)(version 3.x) puis installez en suivant [ces instructions](http://maven.apache.org/install.html).
* Sous Linux : Lancez la commande :
* Sous Linux : Lancez la commande :
```
```bash
sudo apt-get install maven
sudo apt-get install maven
```
```
...
@@ -129,16 +144,18 @@ Installer les outils nécessaires pour la compilation :
...
@@ -129,16 +144,18 @@ Installer les outils nécessaires pour la compilation :
Pour développer en Java, vous pouvez utiliser l'IDE de votre choix, par exemple :
Pour développer en Java, vous pouvez utiliser l'IDE de votre choix, par exemple :
* Sublime Text (non libre) : https://www.sublimetext.com/
- Sublime Text (non libre) : https://www.sublimetext.com/
* Autre possibilité : [Idea](https://www.jetbrains.com/idea/download/)(non libre mais fonctionnement très avancé).
- Autre possibilité : [Idea](https://www.jetbrains.com/idea/download/)(non libre mais fonctionnement très avancé).
## Niveau III : maîtriser les commandes usuelles
## Niveau III : maîtriser les commandes usuelles
Ce troisième niveau permet de découvrir les quelques commandes que vous utiliserez tout le temps si vous développez sur Duniter4j. Vous y apprendrez :
Ce troisième niveau permet de découvrir les quelques commandes que vous utiliserez tout le temps si vous développez sur Duniter4j. Vous y apprendrez :
* à configurer le projet, notamment les paramètres réseau (du noeud ES, du noeud Duniter, etc.);
- à configurer le projet, notamment les paramètres réseau (du noeud ES, du noeud Duniter, etc.);
* à compiler le projet;
* à lancer votre noeud ElasticSearch avec le plugin Duniter4j;
- à compiler le projet;
- à lancer votre noeud ElasticSearch avec le plugin Duniter4j;
### Configurer le projet
### Configurer le projet
...
@@ -291,7 +308,9 @@ Ouvrir votre IDE, et ouvrir le projet Duniter4j.
...
@@ -291,7 +308,9 @@ Ouvrir votre IDE, et ouvrir le projet Duniter4j.
Dans le répertoire `duniter4j-es-core/src/main/java`, cherchez et répérez dans le code :
Dans le répertoire `duniter4j-es-core/src/main/java`, cherchez et répérez dans le code :
- les controlleurs REST : package `org.duniter.elasticsearch.rest`
- les controlleurs REST : package `org.duniter.elasticsearch.rest`
- les services d'indexation : package `org.duniter.elasticsearch.service`.
- les services d'indexation : package `org.duniter.elasticsearch.service`.
* Il existe un service d'indexation par type de stockage. Par exemple : `BlockchainService`, `UserService`, etc.
* Il existe un service d'indexation par type de stockage. Par exemple : `BlockchainService`, `UserService`, etc.
Dans le répertoire `duniter4j-core-client/src/main/java`, cherchez et répérez dans le code :
Dans le répertoire `duniter4j-core-client/src/main/java`, cherchez et répérez dans le code :
...
@@ -308,8 +327,9 @@ Nous allons requeter l'indexation de la BlockChain `g1-test`, qui s'est fait dè
...
@@ -308,8 +327,9 @@ Nous allons requeter l'indexation de la BlockChain `g1-test`, qui s'est fait dè
Il existe plusieurs manière de requéter un noeud ES :
Il existe plusieurs manière de requéter un noeud ES :
- Requêtes HTTP GET
- Requêtes HTTP GET
- Requêtes HTTP POST
- Requêtes HTTP POST
### Requêtes GET
### Requêtes GET
...
@@ -391,6 +411,7 @@ Voici la documentation pour aller plus loin :
...
@@ -391,6 +411,7 @@ Voici la documentation pour aller plus loin :
- ElasticSearch [official web site](http://www.elastic.co/guide/en/elasticsearch/reference/1.3/docs-get.html#get-source-filtering)
- ElasticSearch [official web site](http://www.elastic.co/guide/en/elasticsearch/reference/1.3/docs-get.html#get-source-filtering)
- un bon [tutoriel](http://okfnlabs.org/blog/2013/07/01/elasticsearch-query-tutorial.html)
- un bon [tutoriel](http://okfnlabs.org/blog/2013/07/01/elasticsearch-query-tutorial.html)
## Niveau VI : Requêtage sur Cesium+ API
## Niveau VI : Requêtage sur Cesium+ API
Duniter4j permet aussi de stocker et d'indexer les données hors BlockChain, comme celles utilisées par Cesium+ :
Duniter4j permet aussi de stocker et d'indexer les données hors BlockChain, comme celles utilisées par Cesium+ :
...
@@ -402,7 +423,7 @@ Duniter4j permet aussi de stocker et d'indexer les données hors BlockChain, com
...
@@ -402,7 +423,7 @@ Duniter4j permet aussi de stocker et d'indexer les données hors BlockChain, com
-`/page/comment` : les commentaires sur les annonces
-`/page/comment` : les commentaires sur les annonces
-`/subscription/record` : les abonnements aux services en ligne (par exemple les notifications par email)
-`/subscription/record` : les abonnements aux services en ligne (par exemple les notifications par email)
> La document de l'API HTTP est disponible [ici](../API.md).
> La document de l'API HTTP est disponible [ici](./ES_API.html).
### Requêtes sur `g1-test.data.duniter.fr`
### Requêtes sur `g1-test.data.duniter.fr`
...
@@ -410,6 +431,7 @@ Nous allons requêter le noeud `g1-test.data.duniter.fr` déployé sur la monnai
...
@@ -410,6 +431,7 @@ Nous allons requêter le noeud `g1-test.data.duniter.fr` déployé sur la monnai
> **Note** : Ce noeud est configuré AVEC la couche de sécurité Duniter4j. Les accès sur des URL non autorisés renverront une page vide (erreur HTTP 404).
> **Note** : Ce noeud est configuré AVEC la couche de sécurité Duniter4j. Les accès sur des URL non autorisés renverront une page vide (erreur HTTP 404).
#### Requêtes GET
#### Requêtes GET
-[GET-5] Liste des pages avec le mot `boulangerie` : [/page/record/_search?pretty&q=boulangerie](https://g1-test.data.duniter.fr/page/record/_search?pretty&q=boulangerie)
-[GET-5] Liste des pages avec le mot `boulangerie` : [/page/record/_search?pretty&q=boulangerie](https://g1-test.data.duniter.fr/page/record/_search?pretty&q=boulangerie)