This repository was archived by the owner on Apr 16, 2020. It is now read-only.
Repository navigation
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.
- index.php vastaanottaa Ajaxilla tehdyn pyynnön ja ohjaa sen CommandSwitcherille.
- 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.
- 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.
- Varsinainen komento tekee esitarkistuksia, tekee tehtävänsä ja palauttaa sen tulokset.
- Komennon tiedoston pitää olla
terminal/commands-hakemistossa. - Tiedoston nimen pitää olla kokonaan kirjoitettu pienillä kirjaimilla ja sananvaihdot korvattu tavuviivoilla (-). Esim.
login.phptailogin-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.
LogintaiLoginTest. - 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.)
}
}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';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.