The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Quiq::Confluence::Client - Confluence-Wiki Client

BASE CLASS

Quiq::Hash

DESCRIPTION

Ein Objekt der Klasse repräsentiert einen Client, der über die Confluence REST API mit einem Confluence-Server kommunizieren kann.

Die Implementierung der Klasse stellt die maßgeblichen Mechnismen zur Kommunikation mit dem Server zur Verfügung, realisiert z.Zt. jedoch nur einen kleinen Ausschnitt der Funktionalität der Confluence REST API. Die Implementierung wird nach Bedarf erweitert.

METHODS

Konstruktor

new() - Instantiiere Confluence-Client

Synopsis

    $cli = $class->new(@keyVal);

Arguments

url => $url

Basis-URL des Confluence Wiki, z.B. "https://<name>.atlassian.net".

user => $user

Name des Confluence-Benutzers, z.B. "admin".

password => $password

Passwort des Confluence-Benutzers.

verbose => $bool (Default: 0)

Gib Laufzeit-Informationen auf STDERR aus.

Returns

Client-Objekt (Typ Quiq::Confluence::Client)

Description

Instantiiere einen Client für Confluence mit den Eigenschaften @keyval und liefere eine Referenz auf dieses Objekt zurück.

Example

Client für Atlassian Demo-Instanz:

    $cli = Quiq::Confluence::Client->new(
        url => 'https://<name>.atlassian.net',
        user => 'admin',
        password => '<password>',
        verbose => 1,
    );

Confluence Operationen

createPage() - Erzeuge Confluence Seite

Synopsis

    $pag = $cli->createPage($parentId,$title,$markup,@opts);

Arguments

parentId => $pageId

Die Page-Id der übergeordneten Seite.

$title

Der Titel der Seite.

$markup

Seiteninhalt in Confluence Wiki Markup.

Options

-warning => $bool (Default: 0)

Setze eine Warnung an den Anfang der Seite, dass die Seite automatisch generiert wurde.

Returns

nichts

Description

Erzeuge eine Confluence-Seite mit Titel $title und Inhalt $markup (= Wiki Code) als Unterseite von der Seite mit der Seiten-Id $parentId und liefere das Seiten-Objekt der der erzeugten Seite zurück.

Die erzeugte Seite ist (notwendigerweise) demselben Space wie die übergeordnete Seite zugeordnet.

deletePage() - Lösche Confluence Seite

Synopsis

    $pag = $cli->deletePage($pageId);

Arguments

$pageId

Seiten-Id

Returns

Nichts

Description

Lösche die Confluence-Seite mit der Seiten-Id $pageId.

getPage() - Liefere Confluence Seite

Synopsis

    $pag = $cli->getPage($pageId);

Arguments

$pageId

Seiten-Id

Returns

Seiten-Objekt (Typ Quiq::Confluence::Page)

Description

Rufe die Confluence-Seite mit der Seiten-Id $pageId ab und liefere ein Seiten-Objekt vom Typ Quiq::Confluence::Page zurück.

updatePage() - Aktualisiere Confluence Seite

Synopsis

    $cli->updatePage($pageId,$markup,@opts);

Arguments

$pageId

Seiten-Id

$markup

Seiteninhalt in Confluence Wiki Markup

Options

-warning => $bool (Default: 0)

Setze eine Warnung an den Anfang der Seite, dass die Seite automatisch erzeugt wurde.

-title => $title

Setze den Seitentitel.

Returns

nichts

Description

Ersetze den Inhalt der Confluence-Seite $pageId durch den neuen Inhalt $markup. Für die Aktualisierung sind vier Angaben erforderlich:

  • die PageId der Seite

  • der Inhalt der Seite

  • der Titel der Seite

  • die neue Versionsnummer der Seite

Um die neue Versionsnummer der Seite vergeben zu können, wird intern zunächst der aktuelle Stand der Seite abgerufen, der u.a. die bestehende Versionsnummer enthält. Die Versionsnummer ist eine ganze Zahl, die mit jeder Aktualisierung um 1 erhöht werden muss.

Der Titel der Seite wird aus dem aktuellen Stand der Seite übernommen, sofern er nicht mit der Option -title überschrieben wird.

createAttachment() - Füge Attachment zu Confluence-Seite hinzu

Synopsis

    $pag = $cli->createAttachment($parentId,$file);

Arguments

parentId => $pageId

Die Page-Id der übergeordneten Seite.

$file

Pfad zur Attchment-Datei.

Returns

nichts

Description

Füge Datei $file als Attachment zur Confluence-Seite mit der Seiten-Id $pageId hinzu.

Hilfsmethoden

Die folgenden Methoden bilden die Grundlage für die Kommunikation mit dem Confluence-Server. Sie werden normalerweise nicht direkt gerufen.

send() - Sende HTTP-Request an Confluence

Synopsis

    $res = $cli->send($method,$path);
    $res = $cli->send($method,$path,$contentType,$content);

Arguments

$method

Die HTTP-Methode, z.B. 'PUT'.

$path

Der REST-Pfad, z.B. 'rest/api/content/32788'.

$contentType

Der Content-Type des HTTP-Body, z.B. 'application/json'.

$content

Der Inhalt des HTTP-Body, z.B. (auf die Toplevel-Attribute umbrochen)

    {"version":{"number":24},
    "body":{"storage":{"representation":"wiki","value":"{cheese}"}},
    "title":"Testseite",
    "type":"page"}

Returns

HTTP-Antwort (Typ HTTP::Response)

Description

Sende einen HTTP-Request vom Typ $method mit dem REST-Pfad $path und dem Body $content vom Typ $contentType an den Confluence-Server und liefere die resultierende HTTP-Anwort zurück. Im Fehlerfall wirft die Methode eine Exception.

url() - Erzeuge Request URL

Synopsis

    $url = $cli->url;
    $url = $cli->url($path);

Arguments

$path

REST-API Pfad ohne führenden Slash, z.B. 'wiki/rest/api/content/32788'.

Returns

URL (String)

Description

Erzeuge einen REST-API URL bestehend aus dem beim Konstruktor-Aufruf angegebenen Server-URL und dem Pfad $path und liefere diesen zurück. Ohne Argument wird der Server-URL geliefert.

Example

Der Code

    $cli = Quiq::Confluence::Client->new(
        url => 'https://<name>.atlassian.net',
        ...
    );
    $url = $cli->url('wiki/rest/api/content/32788');

liefert

    https://<name>.atlassian.net/wiki/rest/api/content/32788

VERSION

1.149

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2019 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.