<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: API from CURL vs from Python in Nuxeo Forum</title>
    <link>https://connect.hyland.com/t5/nuxeo-forum/api-from-curl-vs-from-python/m-p/326395#M13396</link>
    <description>&lt;P&gt;...&lt;/P&gt;
&lt;P&gt;OK J'ai trouvé le problème:&lt;/P&gt;
&lt;P&gt;Pour construire les data en utilisant json.dumps, on passe un dictionnaire des propriétés. Mais on DOIT ordonner le dictionnaire, sinon, l'ordre est incorrect. En particulier, la propriété "entity-type" doit être en tête&lt;/P&gt;
&lt;P&gt;donc on doit utiliser l'option sort_keys de la fonction dumps ainsi:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;data = json.dumps(d, sort_keys=True)
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;J'ai proposé un PullRequest pour améliorer le package nuxeolib-py&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;&lt;A href="https://github.com/nuxeo/nuxeolib-py" target="test_blank"&gt;https://github.com/nuxeo/nuxeolib-py&lt;/A&gt;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Cordialement
Christian&lt;/P&gt;</description>
    <pubDate>Fri, 28 Feb 2014 15:54:50 GMT</pubDate>
    <dc:creator>Arnault_</dc:creator>
    <dc:date>2014-02-28T15:54:50Z</dc:date>
    <item>
      <title>API from CURL vs from Python</title>
      <link>https://connect.hyland.com/t5/nuxeo-forum/api-from-curl-vs-from-python/m-p/326394#M13395</link>
      <description>&lt;P&gt;Bonjour&lt;/P&gt;
&lt;P&gt;J'ai pu créer un nouvel utilisateur en utilisant CURL:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;set header="Content-Type: application/json"
set auth="Administrator:Administrator"
set u="xxx"
set url="http://localhost:8081/nuxeo/api/v1/user"
set data="{ \"entity-type\": \"user\", \"id\":\"%u%\", \"properties\":{\"username\":\"%u%\", \"email\":\"%u%@a.b\", \"lastName\":\"%u%\", \"firstName\":\"x\", \"password\":\"%x%\" } }"

curl --trace-ascii log.txt -X POST -H %header% -u %auth% -d %data% %url%

set url="http://localhost:8081/nuxeo/api/v1/user/%u%"
curl --trace-ascii log.txt -X POST -H %header% -u %auth% %url%
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;et voici le résultat de la dernière commande qui confirme la création:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;{"entity-type":"user","id":"xxx","properties":{"lastName":"xxx","username":"xxx","email":"xxx@a.b","company":null,"first
Name":"x","password":"","groups":[]},"extendedGroups":[{"name":"members","label":"Members group","url":"group/members"}]
,"isAdministrator":false,"isAnonymous":false}
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Maintenant j'essaie de reproduire la même séquence en Python:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;import urllib
import urllib2, base64, time, os
import logging as log
import json
import mimetypes, random

if __name__ == '__main__':

    url="http://localhost:8081/nuxeo/api/v1/user"

    login = "Administrator"
    passwd = "Administrator"
    auth = 'Basic %s' % base64.b64encode(login + ":" + passwd).strip()

    cookie_processor = urllib2.HTTPCookieProcessor()
    opener = urllib2.build_opener(cookie_processor)

    headers = {
	"Content-Type": "application/json",
	"Authorization": auth,
	"X-NXDocumentProperties": "*",
        }

    d = {}

    user = u'xxx'

    d['entity-type'] = 'user'
    d['id'] = user
    d['properties'] = {}
    d['properties']['username'] = user
    d['properties']['email'] = '%s@a.b' % user
    d['properties']['lastName'] = user
    d['properties']['firstName'] = 'x'
    d['properties']['password'] = ''

    data = json.dumps(d)
    data = data.strip ()

    req = urllib2.Request (url, headers=headers, data=data)

    resp = opener.open(req)
    print resp.read ()
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;malheureusement, ceci produit une erreur:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;Caused by: java.lang.NullPointerException
        at org.nuxeo.ecm.restapi.jaxrs.io.usermanager.NuxeoPrincipalReader.readProperties(NuxeoPrincipalReader.java:179)

        at org.nuxeo.ecm.restapi.jaxrs.io.usermanager.NuxeoPrincipalReader.readJson(NuxeoPrincipalReader.java:148)
        at org.nuxeo.ecm.restapi.jaxrs.io.usermanager.NuxeoPrincipalReader.readRequest(NuxeoPrincipalReader.java:100)
        at org.nuxeo.ecm.restapi.jaxrs.io.usermanager.NuxeoPrincipalReader.readFrom(NuxeoPrincipalReader.java:84)
        at org.nuxeo.ecm.restapi.jaxrs.io.usermanager.NuxeoPrincipalReader.readFrom(NuxeoPrincipalReader.java:57)
        at com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:488)
        at com.sun.jersey.server.impl.model.method.dispatch.EntityParamDispatchProvider$EntityInjectable.getValue(Entity
ParamDispatchProvider.java:123)
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;qui montre que la lecture des properties en JSON est en erreur.&lt;/P&gt;
&lt;P&gt;Qui pourrait m'aider?&lt;/P&gt;
&lt;P&gt;Merci d'avance
Christian&lt;/P&gt;</description>
      <pubDate>Thu, 27 Feb 2014 15:50:15 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/nuxeo-forum/api-from-curl-vs-from-python/m-p/326394#M13395</guid>
      <dc:creator>Arnault_</dc:creator>
      <dc:date>2014-02-27T15:50:15Z</dc:date>
    </item>
    <item>
      <title>Re: API from CURL vs from Python</title>
      <link>https://connect.hyland.com/t5/nuxeo-forum/api-from-curl-vs-from-python/m-p/326395#M13396</link>
      <description>&lt;P&gt;...&lt;/P&gt;
&lt;P&gt;OK J'ai trouvé le problème:&lt;/P&gt;
&lt;P&gt;Pour construire les data en utilisant json.dumps, on passe un dictionnaire des propriétés. Mais on DOIT ordonner le dictionnaire, sinon, l'ordre est incorrect. En particulier, la propriété "entity-type" doit être en tête&lt;/P&gt;
&lt;P&gt;donc on doit utiliser l'option sort_keys de la fonction dumps ainsi:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;data = json.dumps(d, sort_keys=True)
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;J'ai proposé un PullRequest pour améliorer le package nuxeolib-py&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;&lt;A href="https://github.com/nuxeo/nuxeolib-py" target="test_blank"&gt;https://github.com/nuxeo/nuxeolib-py&lt;/A&gt;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Cordialement
Christian&lt;/P&gt;</description>
      <pubDate>Fri, 28 Feb 2014 15:54:50 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/nuxeo-forum/api-from-curl-vs-from-python/m-p/326395#M13396</guid>
      <dc:creator>Arnault_</dc:creator>
      <dc:date>2014-02-28T15:54:50Z</dc:date>
    </item>
  </channel>
</rss>

