This Document is also available in English
POST : ajouter un nouveau lien
On ajoute un nouveau lien sur Blogmarks.net, en postant une entrée ATOM sur une postURI. la postURI est http://api.blogmarks.net/marks. Dans une entrée ATOM, le titre et le lien associé doivent obligatoirement être spécifié.
Premier Exemple
Nous allons voir comment créer un blogmark simple et valide. L'authentification est expliqué dans le tutorial Fr/AtomApiTutorial/Get.
Envoi du client :
POST /marks HTTP/1.0 Host: api.blogmarks.net Accept: application/atom+xml Content-Type: text/xml; charset=utf-8 Content-length: 267 Authorization: WSSE profile="UsernameToken" X-WSSE: UsernameToken Username="$Username", PasswordDigest="$PasswordDigest", Nonce="$Nonce", Created="$CreationTimestamp" <entry version="draft-ietf-atompub-format-05:do not deploy" xmlns="http://purl.org/atom/ns#draft-ietf-atompub-format-05" xmlns:bm="http://api.blogmarks.net/ns#"> <title>Znarf Blog</title> <link rel="related" href="http://upian.net/znarf/blog/" /> </entry>
La réponse du serveur :
HTTP/1.1 201 Created Date: Wed, 09 Mar 2005 11:21:03 GMT Content-length: 811 Connection: close Content-Type: application/atom+xml; charset=utf-8 <?xml version="1.0" encoding="UTF-8"?> <entry xmlns="http://purl.org/atom/ns#draft-ietf-atompub-format-05" xmlns:bm="http://api.blogmarks.net/ns#> <id>tag:blogmarks.net,2005:marks,31523</id> <title type="TEXT">Znarf Blog</title> <link rel="related" href="http://upian.net/znarf/blog/" type="text/html"/> <link rel="alternate" href="http://blogmarks.net/user/znarf/archives/2005/03/#mark31523" type="application/xhtml+xml" title="Znarf Blog Test"/> <link rel="image" href="http://blogmarks.net/screenshots/2005/03/09/dbc0c60c8794c0ca4f2e99f10a5f2408.png" type="image/png"/> <updated>2005-03-09T12:21:03Z</updated> <author><name>znarf</name></author> <edit>http://api.blogmarks.net/marks/31523</edit> <bm:created>2005-03-09T12:21:03Z</bm:created> </entry>
Deuxième exemple
Nous allons créer un blogmark plus aboutie.
- Dans ATOM, les tags sont appelés category.
- En spécifiant la balise published=0000-00-00, le blogmark devient alors privé (non publié).
- La balise bm:created représente la date de publication du lien. Elle est utilisé pour trier les blogmarks chronologiquement.
POST /marks HTTP/1.0 Host: api.blogmarks.net Accept: application/atom+xml Content-Type: text/xml; charset=utf-8 Content-length: 535 Authorization: WSSE profile="UsernameToken" X-WSSE: UsernameToken Username="$Username", PasswordDigest="$PasswordDigest", Nonce="$Nonce", Created="$CreationTimestamp" <?xml version="1.0" encoding="UTF-8"?> <entry version="draft-ietf-atompub-format-05:do not deploy" xmlns="http://purl.org/atom/ns#draft-ietf-atompub-format-05" xmlns:bm="http://api.blogmarks.net/ns#"> <title>Znarf Blog</title> <link rel="related" href="http://upian.net/znarf/blog/" /> <link rel="via" href="http://blogmarks.net/" /> <summary>This blog really rox</summary> <category label="blog" /> <category label="dotclear" /> <published>0000-00-00</published> <bm:created>2005-03-09</bm:created> </entry>
Le même code en PHP / Pear HTTP Request
<?php
$Username = 'znarf';
$Password = '';
$Nonce = rand( 1 , 100000000000000 );
$CreationTimestamp = date('Y-m-d\Th:i:s\Z');
$PasswordHash = md5( $Password );
$PasswordDigest = base64_encode( sha1( $Nonce . $CreationTimestamp . $PasswordHash ) );
require_once "HTTP/Request.php";
$req =& new HTTP_Request('http://api.blogmarks.net/marks');
$req->setMethod(HTTP_REQUEST_METHOD_POST);
$req->addHeader('X-WSSE', 'UsernameToken Username="' . $Username . '", PasswordDigest="' . $PasswordDigest . '", Nonce="' . $Nonce . '", Created="' . $CreationTimestamp . '"');
$xml =
'<?xml version="1.0" encoding="UTF-8"?>
<entry
version="draft-ietf-atompub-format-05:do not deploy"
xmlns="http://purl.org/atom/ns#draft-ietf-atompub-format-05"
xmlns:bm="http://api.blogmarks.net/ns#">
<title>Znarf Blog</title>
<link rel="related" href="http://upian.net/znarf/blog/" />
<link rel="via" href="http://blogmarks.net/" />
<summary>This blog rox</summary>
<category term="http://api.blogmarks.net/tags/" sheme="blog" />
<category term="http://api.blogmarks.net/tags/" sheme="dotclear" />
<published>0000-00-00</published>
<bm:created>2005-03-09</bm:created>
</entry>';
$req->addRawPostData($xml);
$response = $req->sendRequest();
if (PEAR::isError($response)) {
echo $response->getMessage();
} else {
$code = $req->getResponseCode();
switch ($code) {
case 201:
echo "OK\n";
echo $req->getResponseBody();
break;
default:
echo $code . " Error\n";
break;
}
}
?>
Bonnes pratiques
- Ne pas flooder : Le Flooding est lorsque une longue liste de blogmarks est postée (plus de 5)ce qui a pour résultat de remplir la liste des derniers liens Public. Les utilisateurs (en général) n'aiment vraiment pas ça. Nous recommandons donc aux utilisateurs voulant faire de grands imports de spécifier dans la balise bm:created une date passée. Vous devez en avoir une si vous importez des liens. Sinon, nous recommandons de mettre la date courante sans spécifier l'heure <bm:created>2005-03-08Z</bm:created>
Voir aussi : Fr/AtomApiTutorial/Get, Fr/AtomApiTutorial/Put, Fr/AtomApiTutorial/Delete
