Skip to content
This repository was archived by the owner on Apr 16, 2020. It is now read-only.

Terminaalin API v2

jukkah edited this page May 26, 2012 · 21 revisions

Terminaalin ainoa kutsukelpoinen skripti on terminal/index.php, joka vaatii HTTPS-protokollan. Mikäli protokolla ei ole HTTPS, palautetaan HTTP:n tilakoodi 400.

Terminaalin sisäinen suoritusjärjestys

  1. index.php vastaanottaa Ajaxilla tehdyn pyynnön ja ohjaa sen CommandSwitcherille.
  2. CommandSwitcher päättelee, mikä komento on kyseessä ja suorittaa sen. Jos komentoa ei voitu tunnistaa, se ei ollut kelvollinen tai sen aikana tapahtui odottamaton virhe, CommandSwitcher käsittelee virheen.
  3. AbstractCommand tarkistaa, että komentoa pyydetään tuetulla HTTP:n metodilla ja suorittaa varsinaisen komennon. Mikäli komentoa kutsutaan kielletyllä metodilla, AbstractCommand keskeyttää suorituksen virheeseen. AbstractCommand osaa myös ilmoittaa pyydettäessä, mitä metodeja komento tukee.
  4. Varsinainen komento tekee esitarkistuksia, tekee tehtävänsä ja palauttaa sen tulokset.

Kaikille komennoille yhteiset vaatimukset

  • Komennon tiedoston pitää olla terminal/commands-hakemistossa.
  • Tiedoston nimen pitää olla kokonaan kirjoitettu pienillä kirjaimilla ja sananvaihdot korvattu tavuviivoilla (-). Esim. login.php tai login-test.php.
  • Tiedoston sisällä pitää olla PHP:n luokka, jonka nimi on sama kuin tiedoston nimi (ilman tiedostopäätettä). Siinä kaikkien sanojen ensimmäiset kirjaimet pitää olla kirjoitettuna isoilla kirjaimilla ja sananvaihdot poistettu. Esim. Login tai LoginTest.
  • Luokan pitää toteuttaa Command-rajapinta. Joitakin mahdollisia poikkeuksia lukuun ottamatta tämä tapahtuu perimällä AbstractCommand-luokka, joka toteuttaa vaaditun rajapinnan. Eli ilman erikoista syytä komennon luokan pitää periä AbstractCommand-luokka.

Tässä on komennon vaatimukset täyttävä malli: terminal/commands/malli-komento.php

<?php

// Varmistetaan tarvittavien tiedostojen saanti.
require_once 'abstract-command.php';

/**
 * Tässä kerrotaan, mitä komento tekee. (Poista tämä rivi.)
 * 
 * @author [tähän pilkulla erotettu lista tiedoston päämuokkaajista]
 */
class MalliKomento extends AbstractCommand {

    /**
     * Luo ilmentymän komennosta sallituilla komennoilla.
     */
    public function __construct() {
        // Tämä komento sallii käytettävän HEAD- ja GET-metodeja. (Poista tämä rivi.)
        parent::__construct(array("HEAD", "GET"));
    }

    /**
     * Suorittaa komennon.
     * 
     * @return void 
     */
    protected function execute_command() {
        // Tässä kohdassa suoritetaan komento. (Poista tämä rivi.)
    }

}

Vinkki lisäosien komennoille

Lisäosien komennot sijaitsevat hakemistossa plugins/pluginin-nimi/commands, eivät terminal/commands-hakemistossa, kuten edellä vaadittiin. Ongelma saadaan poistettua laittamalla terminal/commands-hakemistoon vaadittu tiedosto, mutta sen sisällöksi seuraava:

<?php

// Varmistetaan tarvittavien tiedostojen saanti.
require_once '../../plugins/pluginin-nimi/commands/komennon-nimi.php';

Testaus

Terminaalin API:n jokaisesta komennosta tehdään yksikkötestit, samoin kuin useamman komennon kutsusarjoista. Kaikki testit löytyvät hakemistosta test/unit/terminal/commands. Testeissä käytetään QUnit-testityökalua.

Clone this wiki locally