software1987 Tech-Blog

4Jun/110

InterNetworX XMLRPC API für Ruby

Der Domain Registrar InterNetworX (kurz: inwx) stellt eine XMLRPC API zur Verfügung mit der man automatisiert Domains/Handles anlegen, editieren oder löschen kann. Zudem kann man noch Einträge im Nameserver bearbeiten.

INWX stellt für Entwickler eine API-Beschreibung, sowie Beispiel Implementierungen für PHP und Java zur Verfügung (link). Der Entwickler Philipp Klaus hat in seinem Blog zusätzlich eine Python-Portierung der API-Implementierung vorgestellt.

Im letzten Jahr habe ich für ein Ruby on Rails Projekt eine Ruby Implementierung geschrieben die ich nun hier vorstellen möchte.

Voraussetzungen

  • Ruby 1.9.x (Abhängigkeit zu XMLRPC/Client)

Installation

Der Quellcode wird auf Github gehostet. Daher gibt es zwei Wege um an den Quellcode zu gelangen:

via git:

git clone git://github.com/halfdan/ruby-inwx-xmlrpc.git

via direktem Download:

.tar.gz, .zip

Benutzung

Die INWX-API stellt eine Reihe an Objekten zur Verfügung auf denen sich Methoden aufrufen lassen. Im folgenden Beispiel wird auf dem Objekt "domain" die Methode "info" mit einem Parameter ":domain" aufgerufen, als Rückgabe liefert die API entsprechend Informationen über die angegebene Domain.

require "INWX/DomainRobot"
require "YAML"

addr = "api.ote.domrobot.com"
# addr = "api.domrobot.com"
user = "your_username"
pass = "your_password"
lang = "en"

domainRobot = INWX::DomainRobot.new(addr, user, pass, lang, true)

object = "domain"
method = "info"

params = { :domain => "software1987.de" }

result = domainRobot.call(object, method, params)

puts YAML::dump(result)

Die Library lässt sich also sehr einfach verwenden. Hier noch einmal eine schrittweise Erklärung:

  1. Einbinden der Library:
    require "INWX/DomainRobot"
  2. Festlegen der Login-Daten und der Login-Addresse (hier: das OTE Testsystem)
  3. Instanziieren des DomainRobots (letzter Parameter gibt an ob eine sichere Verbindung verwendet werden soll):
    domainRobot = INWX::DomainRobot.new(addr,user,pass,lang,true)
  4. Festlegen des Objekts und der Methode (siehe xmlrpc.pdf im INWX Download) mit Parametern.
  5. Ausführen des XMLRPC-Requests:
    domainRobot.call(object, method, params)

Bei Fragen zur Bibliothek stehe ich gerne zur Verfügung!

2Jun/110

PHP 5.4: Short Syntax for Arrays

Als aktiver Leser der PHP internals bekommt man recht frühzeitig Informationen über neue Features oder solche die vorgeschlagen werden. Neben der aktuellen Diskussionen um einen neuen Release Prozess über den die Entwickler in den kommenden Tagen abstimmen werden, gibt es eine Neuauflage einer Diskussion [2] aus dem Jahr 2008.

Um in PHP ein Array zu initialisieren und mit Werten vorzubelegen muss bisher immer das Keyword "array" verwendet werden.

$a = array(1,2,3);
$b = array(
  'domain' => 'software1987',
  'tld' => 'de'
);

In anderen Sprachen gibt es hierfür eine leicht kürzere Syntax (Beispiel: Ruby):

a = [1,2,3]
b = { :domain => 'software1987', :tld => 'de' }

In der aktuellen Diskussion geht es darum, eine vergleichbare Kurzsyntax für PHP einzuführen. Die Idee dazu ist bereits aus dem Jahr 2003 und taucht seitdem immer wieder Mal auf den Mailinglisten auf. Aktuell wird wieder über die Kurzsyntax abgestimmt und es sieht aktuell so aus als könnte einer der beiden Vorschläge tatsächlich Eingang in PHP 5.4 findet.

Vorschlag 1:

$a = [1, 2, 3];
$b = ['foo': 'orange', 'bar': 'apple', 'baz': 'lemon'];

Vorschlag 2:

$a = [1, 2, 3];
$b = ['foo' => 'orange', 'bar' => 'apple', 'baz' => 'lemon'];

Die Abstimmung [1] findet aktuell nur darüber statt, ob eine dieser Vorschläge implementiert werden soll oder nicht (zum Zeitpunkt des schreibens: 17 Ja / 1 Nein).

Links

[1] https://wiki.php.net/rfc/shortsyntaxforarrays/vote - Abstimmung über RFC
[2] https://wiki.php.net/rfc/shortsyntaxforarrays - Request for Comments