Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Commentaire: Published by Scroll Versions from space DA and version BM-4.0
Sv translation
languagefr

Présentation

Cet article a pour but de présenter l'API permettant d'automatiser la publication d'add-ons pour BlueMind et de leur versions sur le MarketPlace.

Cette API est elle-même téléchargeable sur le  MarketPlace BlueMind.

Astuce
titleClé d'API
Pour utiliser l'API, vous aurez besoin de votre clé d'API disponible dans l'interface d'administration : https://marketplace.blue-mind.net/admin/. Cette clé d'API n'est modifiable que par l'administrateur du site web.
Volet
borderWidth3

Sur cette page :

Sommaire
maxLevel2

Mes plugins et leurs versions

Pour savoir quels sont les plugins que l'on a publié, leur statut (publié ou non), quelle est leur version courante, et de nombreuses autres informations, il faut faire une requête GET sur l'URL : https://marketplace.blue-mind.net/addons/api/plugins/. Cette requête renvoie les informations au format JSON.
La clé d'API associée à l'utilisateur faisant la demande doit être incluse en tant que header de la requête sous la forme : "api-key: la_cle_d_api".

Voici un exemple de code en Python qui permet de faire cette requête :

Bloc de code
languagepy
titleGET /api/plugins/
linenumberstrue
import requests

headers = {
    'api-key': 'your_api_key'
}

URL = 'https://marketplace.blue-mind.net/addons/api/plugins/'

req = requests.get(URL, headers=headers, verify=False)
print "Status code : " + str(req.status_code)
if req.text:
    print "Contents : " + str(json.dumps(req.json(), indent=4, sort_keys=True))
Astuce

N'oubliez pas de remplacer la clé d'API par la clé associée à votre compte sur le MarketPlace.

Des exemples d'implémentation dans d'autres langages sont fournis en bas de cette page. Si vous souhaitez construire la requête dans un langage qui n'y serait pas, vous pouvez développer un exemple de trame générée :

Développer
titleTrame générée

GET /addons/api/plugins/ HTTP/1.1

Host: marketplace.blue-mind.net

Content-Length: 51

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip, deflate

Accept: */*

User-Agent: python-requests/2.3.0 CPython/2.7.5+ Linux/3.11.0-12-generic

api-key: your_api_key

Un plugin spécifique

Pour avoir des informations sur un plugin spécifique (dont on connait l'ID), on peut faire une requête GET sur l'url : https://marketplace.blue-mind.net/addons/api/plugin/{id}/ où {id} est l'ID du plugin considéré. Cette requête renverra des informations sur le plugin désiré au format JSON si l'utilisateur est propriétaire de ce plugin, sinon elle renverra une erreur 403.
Cette requête demande aussi d'inclure la clé d'API en tant que header de la requête sous la forme : "api-key: la_cle_d_api".

Voici un exemple de code en Python qui permet de faire cette requête :

Bloc de code
languagepy
titleGET /api/plugin/1
linenumberstrue
import requests

headers = {
    'api-key': 'your_api_key'
}

URL = 'https://marketplace.blue-mind.net/addons/api/plugin/1/'

req = requests.get(URL, headers=headers, verify=False)
print "Status code : " + str(req.status_code)
if req.text:
    print "Contents : " + str(json.dumps(req.json(), indent=4, sort_keys=True))

Des exemples d'implémentation dans d'autres langages sont fournis en bas de cette page. Si vous souhaitez construire la requête dans un langage qui n'y serait pas, vous pouvez développer un exemple de trame générée :

Développer
titleTrame générée

GET /addons/api/plugin/1/ HTTP/1.1

Host: marketplace.blue-mind.net

Content-Length: 51

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip, deflate

Accept: */*

User-Agent: python-requests/2.3.0 CPython/2.7.5+ Linux/3.11.0-12-generic

api-key: your_api_key

Ajouter un plugin

Pour ajouter un plugin, il faut construire une requête POST contenant les informations pour sa création au format JSON, et envoyer cette requête à l'URL https://marketplace.blue-mind.net/addons/api/plugins/. Ces informations sont :

Nom de la cléObligatoireDescription de la clé
api_keyouiIdentifiant de l'utilisateur qui va créer un plugin
nameouiNom du plugin à créer
shortdescouiDescription courte du plugin à créer (affichée sous le titre)
descriptionouiDescription longue du plugin à créer (affichée sous les captures d'écran)
licenseouiLicence de publication du plugin à créer
installation_instructionsouiDémarche à suivre pour installer le plugin
home_urlnonURL du site web associé au plugin
Avertissement

La requête étant de type "multipart/form-data", il a été choisi que les données JSON soient associées au nom "json". Si vous ne respectez pas cette convention, la requête n'aboutira pas.

Vous pouvez aussi ajouter des images liées au plugin en les joignant en tant que fichiers associés à la requête POST. Le nom des images doit respecter la convention suivante :

NomDescription
thumbnailL'image associée au logo du plugin.
*

Toute image avec un autre nom sera importée en tant que capture d'écran pour le plugin.

Astuce

Le nombre de screenshots n'est pas limité.

Voici un exemple de code en Python qui crée un plugin avec un logo et deux captures d'écran (screenshots) :

Bloc de code
languagepy
titlePOST /api/plugins/
linenumberstrue
import requests, json

data = {
  'api_key': 'your_api_key',
  'name': 'Super plugin',
  'shortdesc': 'A short description',
  'description': 'A long description',
  'license': 'A license',
  'installation_instructions': 'Some instructions',
  'home_url': "http://www.blue-mind.net"
}

files = {
    'thumbnail': open('/home/user/Images/my_thumbnail.jpg', 'rb'),
    'screen1': open('/home/user/Images/my_screenshot1.png', 'rb'),
    'screen2': open('/home/user/Images/my_screenshot2.png', 'rb')
}

URL = 'https://marketplace.blue-mind.net/addons/api/plugins/'

req = requests.post(URL, files=files, data={'json': json.dumps(data)}, verify=False)
print "Status code : " + str(req.status_code)

Des exemples d'implémentation dans d'autres langages sont fournis en bas de cette page. Si vous souhaitez construire la requête dans un langage qui n'y serait pas, vous pouvez développer un exemple de trame générée :

Développer
titleTrame générée

POST /addons/api/plugins/ HTTP/1.1
Host: marketplace.blue-mind.net
Content-Length: 279271
Content-Type: multipart/form-data; boundary=1824dd5f14f14e57bb2b2a27424628db
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.3.0 CPython/2.7.5+ Linux/3.11.0-12-generic

--1824dd5f14f14e57bb2b2a27424628db
Content-Disposition: form-data; name="json"
{"home_url": "http://www.blue-mind.net", "name": "Super plugin", "license": "A license", "installation_instructions": "Some instructions", "shortdesc": "A short description", "api_key": "your_api_key", "description": "A long description"}


--1824dd5f14f14e57bb2b2a27424628db
Content-Disposition: form-data; name="screen2"; filename="my_screenshot2.png"
[... DATA ...]
--1824dd5f14f14e57bb2b2a27424628db--
--1824dd5f14f14e57bb2b2a27424628db
Content-Disposition: form-data; name="screen1"; filename="my_screenshot1.png"
[... DATA ...]
--1824dd5f14f14e57bb2b2a27424628db--
--1824dd5f14f14e57bb2b2a27424628db
Content-Disposition: form-data; name="thumbnail"; filename="my_thumbnail.jpg"
[... DATA ...]
--1824dd5f14f14e57bb2b2a27424628db--

Ajouter une version de plugin

Pour ajouter une version de plugin à un plugin qui vous appartient, il faut construire une requête POST contenant les informations pour la création de la version au format JSON, et envoyer cette requête à l'URL : https://marketplace.blue-mind.net/addons/api/plugin_version/ . Ces informations sont :

Nom de la cléObligatoireDescription de la clé
api_keyouiIdentifiant de l'utilisateur qui va créer le plugin
plugin_nameouiNom du plugin associé à la version
versionouiNuméro de la nouvelle version du plugin
target_bm_versionsouiVersions de BlueMind concernées par cette nouvelle version
release_notesoui

Informations sur la raison de cette nouvelle version

Avertissement

La requête étant de type "multipart/form-data", il a été choisi que les données JSON soient associées au nom "json". Si vous ne respectez pas cette convention, la requête n'aboutira pas.

Remarque

Vous devez associer un fichier à cette nouvelle version (le fichier à télécharger) en le joignant à la requête POST sous le nom de "package".

Voici un exemple de code en Python qui permet d'ajouter la version 0.2 pour le plugin "Super plugin" :

Bloc de code
languagepy
titlePOST /api/plugin_version/
linenumberstrue
import requests, json

data = {
  'api_key': 'your_api_key',
  'plugin_name': 'Super plugin',
  'version': '0.2',
  'target_bm_versions': '3.x',
  'release_notes': 'Brand new release'
}

files = {
    'package': open('/home/user/Files/super_plugin.jar', 'rb')
}

URL = 'https://marketplace.blue-mind.net/addons/api/plugin_version/'

req = requests.post(URL, files=files, data={'json': json.dumps(data)}, verify=False)
print "Status code : " + str(req.status_code)
Avertissement

La nouvelle version sera refusée si elle ne comporte pas de fichier, ainsi que si le plugin ne vous appartient pas (sauf pour un administrateur du MarketPlace).

Des exemples d'implémentation dans d'autres langages sont fournis en bas de cette page. Si vous souhaitez construire la requête dans un langage qui n'y serait pas, vous pouvez développer un exemple de trame générée :

Développer

POST /addons/api/plugin_version/ HTTP/1.1

Host: marketplace.blue-mind.net

Content-Length: 1191498

Content-Type: multipart/form-data; boundary=947a3f6396a244a99118fd5a3faa5204

Accept-Encoding: gzip, deflate

Accept: */*

User-Agent: python-requests/2.3.0 CPython/2.7.5+ Linux/3.11.0-12-generic

 

--947a3f6396a244a99118fd5a3faa5204

Content-Disposition: form-data; name="json"

{"api_key": "your_api_key", "release_notes": "Ceci est une nouvelle release", "version": "0.2", "plugin_name": "Super plugin", "target_bm_versions": "3.x"}

 

--947a3f6396a244a99118fd5a3faa5204

Content-Disposition: form-data; name="package"; filename="super_plugin.jar"

[... DATA ...]

--947a3f6396a244a99118fd5a3faa5204--

Utilisation de l'API dans divers langages

En Python

Voici un script complet qui reprend les scripts précédents et permet de faire du POST ou du GET (en fonction de ce qui est commenté) sur le MarketPlace :

Bloc de code
languagepy
titleScript complet
linenumberstrue
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests, json

WEBSITE = "https://marketplace.blue-mind.net/"
API_KEY = "your_api_key"

#### POST PLUGIN
data = {
  'api_key': API_KEY,
  'name': 'Super plugin',
  'shortdesc': 'A short description',
  'description': 'A long description',
  'license': 'A license',
  'installation_instructions': 'Several instructions !',
  'home_url': "http://www.blue-mind.net"
}

files = {
    'thumbnail': open('/home/user/Images/thumbnail.jpg', 'rb'),
    'screen1': open('/home/user/Images/screenshot1.png', 'rb'),
    'screen2': open('/home/user/Images/screenshot1.png', 'rb')
}

URL = WEBSITE + 'addons/api/plugins/'

#### POST PLUGIN VERSION
# data = {
#   'api_key': API_KEY,
#   'plugin_name': 'Super plugin',
#   'version': '0.2',
#   'target_bm_versions': '3.x',
#   'release_notes': 'On vient de faire une nouvelle release'
# }
#
# files = {
#     'package': open('/home/user/Files/super_plugin.jar', 'rb')
# }
#
# URL = WEBSITE + 'addons/api/plugin_version/'

#### POST REQUEST
req = requests.post(URL, files=files, data={'json': json.dumps(data)}, verify=False)


#### GET PLUGINS
# headers = {
#     'api-key': API_KEY
# }
#
# URL = WEBSITE + 'addons/api/plugins/'
#
# #### GET REQUEST
# req = requests.get(URL, headers=headers, verify=False)


#### POST OR GET RESPONSE
print "Status code : " + str(req.status_code)
if req.text:
    print "Contents : " + str(json.dumps(req.json(), indent=4, sort_keys=True))
Astuce

Téléchargez le code source : api_python.py

En Java

Les extraits de code suivants donnent un aperçu de ce qu'il faut faire en Java pour avoir des requêtes GET et POST fonctionnelles. Ils utilisent les API Apache HTTP et JSON-Simple.

Bloc de code
languagejava
titleGET /addons/api/plugins
linenumberstrue
private static HttpClient httpClient = StaticTools.getHttpClient(true);
private static String API_KEY = "your_api_key";
private static String WEBSITE = "https://marketplace.blue-mind.net/";

private static void getPlugins() throws IOException {
    HttpGet httpGet = new HttpGet(WEBSITE + "/addons/api/plugins/");
    httpGet.addHeader("api-key", API_KEY);
    ResponseHandler<String> handler = new BasicResponseHandler();
    HttpResponse rep = httpClient.execute(httpGet);
    if (rep != null) {
        int statusCode = rep.getStatusLine().getStatusCode();
        System.out.println("Status code : " + statusCode);
        if (statusCode == 200) {
            System.out.println("Contents : " + handler.handleResponse(rep));
        }
    }
}
Bloc de code
languagejava
titleGET /addons/api/plugin/id
linenumberstrue
private static HttpClient httpClient = StaticTools.getHttpClient(true);
private static String API_KEY = "your_api_key";
private static String WEBSITE = "https://marketplace.blue-mind.net/";
    
private static void getPlugin(int id) throws IOException {
    HttpGet httpGet = new HttpGet(WEBSITE + "/addons/api/plugin/" + id);
    httpGet.addHeader("api-key", API_KEY);
    ResponseHandler<String> handler = new BasicResponseHandler();
    HttpResponse rep = httpClient.execute(httpGet);
    if (rep != null) {
        int statusCode = rep.getStatusLine().getStatusCode();
        System.out.println("Status code : " + statusCode);
        if (statusCode == 200) {
            System.out.println("Contents : " + handler.handleResponse(rep));
        }
    }
}
Bloc de code
languagejava
titlePOST /addons/api/plugins
linenumberstrue
private static HttpClient httpClient = StaticTools.getHttpClient(true);
private static String API_KEY = "your_api_key";
private static String WEBSITE = "https://marketplace.blue-mind.net/";
    
@SuppressWarnings("unchecked")
private static void postPlugin() throws IOException {
    HttpPost httpPost = new HttpPost(WEBSITE + "/addons/api/plugins/");
    MultipartEntityBuilder builder = MultipartEntityBuilder.create();
    ContentType contentType = ContentType.getOrDefault(null);
    
    // Json part
    JSONObject j = new JSONObject();
    j.put("api_key", API_KEY);
    j.put("name", "Super plugin");
    j.put("shortdesc", "A short description");
    j.put("description", "A long description");
    j.put("license", "A license");
    j.put("installation_instructions", "Several instructions");
    j.put("home_url", "http://www.blue-mind.net");
    StringBody json = new StringBody(j.toString(), contentType);
     
    // Files part
    FileBody thumbnail = new FileBody(new File("/home/user/Images/thumbnail.jpg"));
    FileBody screen1 = new FileBody(new File("/home/user/Images/screenshot1.png"));
    FileBody screen2 = new FileBody(new File("/home/user/Images/screenshot2.png"));
    
    // Grouping
    builder.addPart("json", json);
    builder.addPart("thumbnail", thumbnail);
    builder.addPart("screen1", screen1);
    builder.addPart("screen2", screen2);
      
    httpPost.setEntity(builder.build());
    HttpResponse rep = httpClient.execute(httpPost);
    if (rep != null) {
        int statusCode = rep.getStatusLine().getStatusCode();
        System.out.println("Status code : " + statusCode);
    }
}
Bloc de code
languagejava
titlePOST /addons/api/plugin_version
linenumberstrue
private static HttpClient httpClient = StaticTools.getHttpClient(true);
private static String API_KEY = "your_api_key";
private static String WEBSITE = "https://marketplace.blue-mind.net/";

@SuppressWarnings("unchecked")
private static void postPluginVersion() throws IOException {
    HttpPost httpPost = new HttpPost(WEBSITE + "/addons/api/plugin_version/");
    MultipartEntityBuilder builder = MultipartEntityBuilder.create();
    ContentType contentType = ContentType.getOrDefault(null);
    
    // Json part
    JSONObject j = new JSONObject();
    j.put("api_key", API_KEY);
    j.put("plugin_name", "Super plugin");
    j.put("version", "0.2");
    j.put("target_bm_versions", "3.x");
    j.put("release_notes", "On vient de faire une nouvelle release");
    StringBody json = new StringBody(j.toString(), contentType);
    
    // Files part
    FileBody pack = new FileBody(new File("/home/user/Files/super_plugin.jar"));
    
    // Grouping
    builder.addPart("json", json);
    builder.addPart("package", pack);
    
    httpPost.setEntity(builder.build());
    HttpResponse rep = httpClient.execute(httpPost);
    if (rep != null) {
        int statusCode = rep.getStatusLine().getStatusCode();
        System.out.println("Status code : " + statusCode);
    }
}
Astuce

Téléchargez le code source : api_java.zip

 

Enregistrer

Sv translation
languagede

Präsentation

In diesem Abschnitt wird die API vorgestellt, die eine Automatisierung der Veröffentlichung von Add-ons für BlueMind und deren Versionen auf dem MarketPlace ermöglicht.

Diese API ist auf dem  BlueMind MarketPlace herunterladbar.

Astuce
titleAPI-Schlüssel
Um die API zu nutzen, benötigen Sie Ihren API-Schlüssel, der in der Administrationsoberfläche verfügbar ist: https://marketplace.blue-mind.net/admin/. Dieser API-Schlüssel kann nur durch den Website-Administrator geändert werden.
Volet
borderWidth3

Auf dieser Seite:

Sommaire
maxLevel2

Meine Plugins und ihre Versionen

Um herauszufinden, welche Plugins freigegeben sind, welchen Status sie haben (freigegeben oder nicht), wie die aktuelle Version lautet und viele andere Informationen, müssen Sie eine GET-Abfrage an die URL stellen:https://marketplace.blue-mind.net/addons/api/plugins/. Diese Abfrage gibt Informationen im JSON-Format zurück.
Der API-Schlüssel, der dem anfragenden Benutzer zugeordnet ist , muss als Header der Abfrage in der folgenden Form enthalten sein: "api-key: la_cle_d_api".

Hier ist ein Beispiel für Python-Code, um diese Anfrage zu stellen:

Bloc de code
languagepy
titleGET /api/plugins/
linenumberstrue
import requests

headers = {
    'api-key': 'your_api_key'
}

URL = 'https://marketplace.blue-mind.net/addons/api/plugins/'

req = requests.get(URL, headers=headers, verify=False)
print "Status code : " + str(req.status_code)
if req.text:
    print "Contents : " + str(json.dumps(req.json(), indent=4, sort_keys=True))
Astuce

Vergessen Sie nicht, den API-Schlüssel durch den Schlüssel zu ersetzen, der mit Ihrem Konto im MarketPlace verbunden ist.

Beispiele für Implementierungen in anderen Sprachen finden Sie am Ende dieser Seite. Wenn Sie die Abfrage in einer Sprache erstellen möchten, die nicht vorhanden ist, können Sie das Beispiel eines generierten Frame entwickeln:

Développer
titleGenerierter Frame

GET /addons/api/plugins/ HTTP/1.1

Host: marketplace.blue-mind.net

Content-Length: 51

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip, deflate

Accept: */*

User-Agent: python-requests/2.3.0 CPython/2.7.5+ Linux/3.11.0-12-generic

api-key: your_api_key

Ein bestimmtes Plugin

Um Informationen über ein bestimmtes Plugin (dessen ID bekannt ist) zu erhalten, kann eine GET-Anfrage an die Url : https: //marketplace.blue-mind.net/addons/api/plugin/{id}/ gerichtet werden, wobei {id} die ID des betreffenden Plugins ist. Diese Abfrage gibt Informationen über das gewünschte Plugin im JSON-Format zurück, wenn der Benutzer das Plugin besitzt, andernfalls wird ein Fehler 403 zurückgegeben.
Diese Abfrage verlangt außerdem, den API-Schlüssel als header in der folgenden Form einzuschließen: "api-key: der api-Schlüssel".

Hier ein Beispiel für Python-Code, mit dem Sie diese Anfrage stellen können:

Bloc de code
languagepy
titleGET /api/plugin/1
linenumberstrue
import requests

headers = {
    'api-key': 'your_api_key'
}

URL = 'https://marketplace.blue-mind.net/addons/api/plugin/1/'

req = requests.get(URL, headers=headers, verify=False)
print "Status code : " + str(req.status_code)
if req.text:
    print "Contents : " + str(json.dumps(req.json(), indent=4, sort_keys=True))

Beispiele für Implementierungen in anderen Sprachen finden Sie am Ende dieser Seite. Wenn Sie die Abfrage in einer Sprache erstellen möchten, die nicht vorhanden ist, können Sie das Beispiel eines generierten Frame entwickeln:

Développer
titleGenerierter Frame

GET /addons/api/plugin/1/ HTTP/1.1

Host: marketplace.blue-mind.net

Content-Length: 51

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip, deflate

Accept: */*

User-Agent: python-requests/2.3.0 CPython/2.7.5+ Linux/3.11.0-12-generic

api-key: your_api_key

Ein Plugin hinzufügen

Um ein Plugin hinzuzufügen, müssen Sie eine POST-Anfrage erstellen, die die Informationen für seine Erstellung im JSON-Format enthält, und diese Anfrage an die URL https://marketplace.blue-mind.net/addons/api/plugins/ senden. Die betreffenden Informationen sind:

Name des SchlüsselsObligatorischBeschreibung des Schlüssels
api_keyjaBenutzeridentifizierung des Benutzers, der ein Plugin erstellen wird
namejaName des zu erstellenden Plugins
shortdescjaKurzbeschreibung des zu erstellenden Plugins (wird unter dem Titel angezeigt)
BeschreibungjaLangbeschreibung des zu erstellenden Plugins (wird unter den Bildschirmfotos angezeigt)
licensejaLizenz zur Veröffentlichung des zu erstellenden Plugins
installation_instructionsjaInstallieren des Plugins
home_urlneinURL der Website, die mit dem Plugin verknüpft ist
Avertissement

Die Anfrage ist vom Typ "multipart/form-data"; es wurde gewählt, dass JSON-Daten mit dem Namen "json" assoziiert werden. Diese Konvention ist für eine erfolgreiche Anfrage einzuhalten.

Sie können auch Bilder mit Bezug zum Plugin hinzufügen, indem Sie sie als verknüpfte Dateien an die POST-Anfrage anhängen. Die Namen der Bilder müssen der folgenden Konvention entsprechen:

NameBeschreibung
ThumbnailDas Bild, das mit dem Plugin-Logo verbunden ist.
*

Jedes Bild mit einem anderen Namen wird als Screenshot für das Plugin importiert.

Astuce

Die Anzahl der Screenshot ist nicht begrenzt.

Hier ist ein Beispiel für Python-Code, der ein Plugin mit einem Logo und zwei Screenshots erstellt:

Bloc de code
languagepy
titlePOST /api/plugins/
linenumberstrue
import requests, json

data = {
  'api_key': 'your_api_key',
  'name': 'Super plugin',
  'shortdesc': 'A short description',
  'description': 'A long description',
  'license': 'A license',
  'installation_instructions': 'Some instructions',
  'home_url': "http://www.blue-mind.net"
}

files = {
    'thumbnail': open('/home/user/Images/my_thumbnail.jpg', 'rb'),
    'screen1': open('/home/user/Images/my_screenshot1.png', 'rb'),
    'screen2': open('/home/user/Images/my_screenshot2.png', 'rb')
}

URL = 'https://marketplace.blue-mind.net/addons/api/plugins/'

req = requests.post(URL, files=files, data={'json': json.dumps(data)}, verify=False)
print "Status code : " + str(req.status_code)

Beispiele für Implementierungen in anderen Sprachen finden Sie am Ende dieser Seite. Wenn Sie die Abfrage in einer Sprache erstellen möchten, die nicht vorhanden ist, können Sie das Beispiel eines generierten Frame entwickeln:

Développer
titleGenerierter Frame

POST /addons/api/plugins/ HTTP/1.1
Host: marketplace.blue-mind.net
Content-Length: 279271
Content-Type: multipart/form-data; boundary=1824dd5f14f14e57bb2b2a27424628db
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.3.0 CPython/2.7.5+ Linux/3.11.0-12-generic

--1824dd5f14f14e57bb2b2a27424628db
Content-Disposition: form-data; name="json"
{"home_url": "http://www.blue-mind.net", "name": "Super plugin", "license": "A license", "installation_instructions": "Some instructions", "shortdesc": "A short description", "api_key": "your_api_key", "description": "A long description"}


--1824dd5f14f14e57bb2b2a27424628db
Content-Disposition: form-data; name="screen2"; filename="my_screenshot2.png"
[... DATA ...]
--1824dd5f14f14e57bb2b2a27424628db--
--1824dd5f14f14e57bb2b2a27424628db
Content-Disposition: form-data; name="screen1"; filename="my_screenshot1.png"
[... DATA ...]
--1824dd5f14f14e57bb2b2a27424628db--
--1824dd5f14f14e57bb2b2a27424628db
Content-Disposition: form-data; name="thumbnail"; filename="my_thumbnail.jpg"
[... DATA ...]
--1824dd5f14f14e57bb2b2a27424628db--

Hinzufügen einer Plugin-Version

Um eine Plugin-Version zu einem eigenen Plugin hinzuzufügen, müssen Sie eine POST-Anfrage erstellen, die die Informationen zum Erstellen der Version im JSON-Format enthält, und diese Anfrage an die URL https://marketplace.blue-mind.net/addons/api/plugin_version/ senden. Die betreffenden Informationen sind:

Name des SchlüsselsObligatorischBeschreibung des Schlüssels
api_keyjaBenutzeridentifizierung des Benutzers, der das Plugin erstellen wird
plugin_namejaName des Plugins, das der Version zugeordnet ist
versionjaNummer der neuen Version des Plugins
target_bm_versionsjaBlueMind-Versionen, die von dieser neuen Version betroffen sind
release_notesja

Informationen über den Grund für diese neue Version

Avertissement

Die Anfrage ist vom Typ "multipart/form-data"; es wurde gewählt, dass JSON-Daten mit dem Namen "json" assoziiert werden. Diese Konvention ist für eine erfolgreiche Anfrage einzuhalten.

Remarque

Sie müssen dieser neuen Version eine Datei zuordnen (die herunterzuladende Datei), indem Sie sie unter dem Namen "package" an die POST-Anfrage anhängen.

Hier ist ein Beispiel für Code in Python, mit dem die Version 0.2 für das "Super-Plugin" hinzugefügt werden kann:

Bloc de code
languagepy
titlePOST /api/plugin_version/
linenumberstrue
import requests, json

data = {
  'api_key': 'your_api_key',
  'plugin_name': 'Super plugin',
  'version': '0.2',
  'target_bm_versions': '3.x',
  'release_notes': 'Brand new release'
}

files = {
    'package': open('/home/user/Files/super_plugin.jar', 'rb')
}

URL = 'https://marketplace.blue-mind.net/addons/api/plugin_version/'

req = requests.post(URL, files=files, data={'json': json.dumps(data)}, verify=False)
print "Status code : " + str(req.status_code)
Avertissement

Die neue Version wird abgelehnt, wenn sie keine Datei enthält oder wenn das Plugin nicht Ihnen gehört (außer bei einem MarketPlace-Administrator).

Beispiele für Implementierungen in anderen Sprachen finden Sie am Ende dieser Seite. Wenn Sie die Abfrage in einer Sprache erstellen möchten, die nicht vorhanden ist, können Sie das Beispiel eines generierten Frame entwickeln:

Développer

POST /addons/api/plugin_version/ HTTP/1.1

Host: marketplace.blue-mind.net

Content-Length: 1191498

Content-Type: multipart/form-data; boundary=947a3f6396a244a99118fd5a3faa5204

Accept-Encoding: gzip, deflate

Accept: */*

User-Agent: python-requests/2.3.0 CPython/2.7.5+ Linux/3.11.0-12-generic

 

--947a3f6396a244a99118fd5a3faa5204

Content-Disposition: form-data; name="json"

{"api_key": "your_api_key", "release_notes": "Dies ist ein neues Release", "Version": "0.2", "plugin_name": "Super plugin", "target_bm_versions": "3.x"}

 

--947a3f6396a244a99118fd5a3faa5204

Content-Disposition: form-data; name="package"; filename="super_plugin.jar"

[... DATA...]

--947a3f6396a244a99118fd5a3faa5204--

Verwendung der API in verschiedenen Sprachen

In Python

Dieses komplette Skript übernimmt die vorherigen Skripte und ermöglicht es, POST oder GET (je nachdem, was kommentiert ist) auf dem MarketPlace auszuführen:

Bloc de code
languagepy
titleVollständiges Skript
linenumberstrue
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests, json

WEBSITE = "https://marketplace.blue-mind.net/"
API_KEY = "your_api_key"

#### POST PLUGIN
data = {
  'api_key': API_KEY,
  'name': 'Super plugin',
  'shortdesc': 'A short description',
  'description': 'A long description',
  'license': 'A license',
  'installation_instructions': 'Several instructions !',
  'home_url': "http://www.blue-mind.net"
}

files = {
    'thumbnail': open('/home/user/Images/thumbnail.jpg', 'rb'),
    'screen1': open('/home/user/Images/screenshot1.png', 'rb'),
    'screen2': open('/home/user/Images/screenshot1.png', 'rb')
}

URL = WEBSITE + 'addons/api/plugins/'

#### POST PLUGIN VERSION
# data = {
#   'api_key': API_KEY,
#   'plugin_name': 'Super plugin',
#   'version': '0.2',
#   'target_bm_versions': '3.x',
#   'release_notes': 'On vient de faire une nouvelle release'
# }
#
# files = {
#     'package': open('/home/user/Files/super_plugin.jar', 'rb')
# }
#
# URL = WEBSITE + 'addons/api/plugin_version/'

#### POST REQUEST
req = requests.post(URL, files=files, data={'json': json.dumps(data)}, verify=False)


#### GET PLUGINS
# headers = {
#     'api-key': API_KEY
# }
#
# URL = WEBSITE + 'addons/api/plugins/'
#
# #### GET REQUEST
# req = requests.get(URL, headers=headers, verify=False)


#### POST OR GET RESPONSE
print "Status code : " + str(req.status_code)
if req.text:
    print "Contents : " + str(json.dumps(req.json(), indent=4, sort_keys=True))
Astuce

Laden Sie den Quellcode herunter: api_python.py

In Java

Die folgenden Codeschnipsel geben einen Überblick darüber, was Sie in Java tun müssen, um funktionierende GET- und POST-Anfragen zu erhalten. Sie verwenden die APIs Apache HTTP und JSON-Simple.

Bloc de code
languagejava
titleGET /addons/api/plugins
linenumberstrue
private static HttpClient httpClient = StaticTools.getHttpClient(true);
private static String API_KEY = "your_api_key";
private static String WEBSITE = "https://marketplace.blue-mind.net/";

private static void getPlugins() throws IOException {
    HttpGet httpGet = new HttpGet(WEBSITE + "/addons/api/plugins/");
    httpGet.addHeader("api-key", API_KEY);
    ResponseHandler<String> handler = new BasicResponseHandler();
    HttpResponse rep = httpClient.execute(httpGet);
    if (rep != null) {
        int statusCode = rep.getStatusLine().getStatusCode();
        System.out.println("Status code : " + statusCode);
        if (statusCode == 200) {
            System.out.println("Contents : " + handler.handleResponse(rep));
        }
    }
}
Bloc de code
languagejava
titleGET /addons/api/plugin/id
linenumberstrue
private static HttpClient httpClient = StaticTools.getHttpClient(true);
private static String API_KEY = "your_api_key";
private static String WEBSITE = "https://marketplace.blue-mind.net/";
    
private static void getPlugin(int id) throws IOException {
    HttpGet httpGet = new HttpGet(WEBSITE + "/addons/api/plugin/" + id);
    httpGet.addHeader("api-key", API_KEY);
    ResponseHandler<String> handler = new BasicResponseHandler();
    HttpResponse rep = httpClient.execute(httpGet);
    if (rep != null) {
        int statusCode = rep.getStatusLine().getStatusCode();
        System.out.println("Status code : " + statusCode);
        if (statusCode == 200) {
            System.out.println("Contents : " + handler.handleResponse(rep));
        }
    }
}
Bloc de code
languagejava
titlePOST /addons/api/plugins
linenumberstrue
private static HttpClient httpClient = StaticTools.getHttpClient(true);
private static String API_KEY = "your_api_key";
private static String WEBSITE = "https://marketplace.blue-mind.net/";
    
@SuppressWarnings("unchecked")
private static void postPlugin() throws IOException {
    HttpPost httpPost = new HttpPost(WEBSITE + "/addons/api/plugins/");
    MultipartEntityBuilder builder = MultipartEntityBuilder.create();
    ContentType contentType = ContentType.getOrDefault(null);
    
    // Json part
    JSONObject j = new JSONObject();
    j.put("api_key", API_KEY);
    j.put("name", "Super plugin");
    j.put("shortdesc", "A short description");
    j.put("description", "A long description");
    j.put("license", "A license");
    j.put("installation_instructions", "Several instructions");
    j.put("home_url", "http://www.blue-mind.net");
    StringBody json = new StringBody(j.toString(), contentType);
     
    // Files part
    FileBody thumbnail = new FileBody(new File("/home/user/Images/thumbnail.jpg"));
    FileBody screen1 = new FileBody(new File("/home/user/Images/screenshot1.png"));
    FileBody screen2 = new FileBody(new File("/home/user/Images/screenshot2.png"));
    
    // Grouping
    builder.addPart("json", json);
    builder.addPart("thumbnail", thumbnail);
    builder.addPart("screen1", screen1);
    builder.addPart("screen2", screen2);
      
    httpPost.setEntity(builder.build());
    HttpResponse rep = httpClient.execute(httpPost);
    if (rep != null) {
        int statusCode = rep.getStatusLine().getStatusCode();
        System.out.println("Status code : " + statusCode);
    }
}
Bloc de code
languagejava
titlePOST /addons/api/plugin_version
linenumberstrue
private static HttpClient httpClient = StaticTools.getHttpClient(true);
private static String API_KEY = "your_api_key";
private static String WEBSITE = "https://marketplace.blue-mind.net/";

@SuppressWarnings("unchecked")
private static void postPluginVersion() throws IOException {
    HttpPost httpPost = new HttpPost(WEBSITE + "/addons/api/plugin_version/");
    MultipartEntityBuilder builder = MultipartEntityBuilder.create();
    ContentType contentType = ContentType.getOrDefault(null);
    
    // Json part
    JSONObject j = new JSONObject();
    j.put("api_key", API_KEY);
    j.put("plugin_name", "Super plugin");
    j.put("version", "0.2");
    j.put("target_bm_versions", "3.x");
    j.put("release_notes", "On vient de faire une nouvelle release");
    StringBody json = new StringBody(j.toString(), contentType);
    
    // Files part
    FileBody pack = new FileBody(new File("/home/user/Files/super_plugin.jar"));
    
    // Grouping
    builder.addPart("json", json);
    builder.addPart("package", pack);
    
    httpPost.setEntity(builder.build());
    HttpResponse rep = httpClient.execute(httpPost);
    if (rep != null) {
        int statusCode = rep.getStatusLine().getStatusCode();
        System.out.println("Status code : " + statusCode);
    }
}
Astuce

Laden Sie den Quellcode herunter: api_java.zip

 

Speichern