Réécriture du wall de deblan
Le colorisateur syntaxique que je met à disposition des développeurs a été complétement refait. L'interface a radicalement changé et je m'appui encore une fois sur le bootsrap Twitter. J'en ai profité pour rendre l'envoi de code plus simple et plus rapide, et je met à disposition le code suivant pour envoyer et récupérer rapidement tout ça depuis votre application : afficher le code.
<?php
class WallException extends Exception {}
class Wall {
private $curl = null;
private $language = 'html';
private $code = null;
private $title = null;
private $showLines = true;
private static $instance = null;
public static function getInstance() {
return (self::$instance === null) ? self::$instance = new Wall() : self::$instance;
}
public function __construct() {
$this->curl = curl_init();
}
public function setCode($code) {
$this->code = $code;
return $this;
}
public function setCodeFromFile($file) {
$this->code = (file_exists($file) && is_readable($file)) ? file_get_contents($file) : '';
return $this;
}
public function getCode() {
return $this->code;
}
public function setLanguage($language) {
$this->language = $language;
return $this;
}
public function getLanguage() {
return $this->language;
}
public function setTitle($title) {
$this->title = $title;
return $this;
}
public function getTitle() {
return $this->title;
}
public function setShowLines($showLines) {
$this->showLines = (bool)$showLines;
return $this;
}
public function getShowLines() {
return $this->showLines;
}
public function paste() {
$options = array(
CURLOPT_URL => 'http://wall.deblan.fr/',
CURLOPT_HEADER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query(array(
'code' => $this->getCode(),
'language' => $this->getLanguage(),
'title' => $this->getTitle(),
'line' => $this->getShowLines()
))
);
curl_setopt_array($this->curl, $options);
$header = curl_exec($this->curl);
if(curl_errno($this->curl)) {
throw new WallException('Curl error: '.curl_error($this->curl));
}
else {
$http_code = curl_getinfo($this->curl, CURLINFO_HTTP_CODE);
if(in_array($http_code, array(301, 302, 200))) {
preg_match('`location: ([^\s]+)`i', $header, $matches);
return 'http://wall.deblan.fr'.trim(array_pop($matches));
} else {
throw new WallException('HTTP header error: unexpected response code ('.$http_code.')');
}
}
}
}
try {
$wall = Wall::getInstance()
->setCodeFromFile(__FILE__)
// html, js, xml, javascript, sql,
// perl, c, asp, python, bash
// actionscript, texte
->setLanguage('html')
->setTitle('foo')
->paste();
echo 'Url: '.$wall;
}
catch(WallException $e) {
echo $e->getMessage();
}
- Kadcom,
- Le design est clairement plus sympa. Plus propre plus web 2.0 et ça s'accord aussi mieux avec le blog.
- Jako,
- Sympa cette nouvelle version. L'idée de l'upload est bien penser.
- Simon,
- Les fonctions d'édition et de téléchargement me manquaient aussi, ça nous évitera les copiés/collés hasardeux…
- elliot,
- Ce qui serait vraiment bien c'est qu'avant de donner ton avis tu apprennes que ce n'est pas le BooSTrap Twitter, mais le BooTStrap Twitter, tu auras moins l'air idiot quand tu voudras faire le mec qui connait! ;)
- Simon,
- oh qu'il est mignon lui =)