Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze | ||
| navody:vps:api [2021/12/09 12:08] – fix arch install instructions Aither | navody:vps:api [2026/11/01 19:49] (aktuální) – Přehled klientů a příklady pro PHP, Python, JavaScript, TypeScript, Go a Rust aither | ||
|---|---|---|---|
| Řádek 8: | Řádek 8: | ||
| ===== Dokumentace API ===== | ===== Dokumentace API ===== | ||
| Dokumentace API, tzn. seznam zdrojů, možných akcí, vstupních a výstupních | Dokumentace API, tzn. seznam zdrojů, možných akcí, vstupních a výstupních | ||
| - | parametrů je k vidění na https:// | + | parametrů je k vidění na https:// |
| Bez přihlášení se zobrazuje seznam všech zdrojů, tj. i těch, se kterými můžou | Bez přihlášení se zobrazuje seznam všech zdrojů, tj. i těch, se kterými můžou | ||
| Řádek 16: | Řádek 16: | ||
| ===== Práce s API ===== | ===== Práce s API ===== | ||
| - | API je postaveno na námi vyvinutém frameworku | + | API používá framework |
| - | [[https:// | + | Jeho [[https:// |
| - | [[https:// | + | obsahuje dostupné zdroje, akce a parametry. |
| - | se API, což znamená, že lze využít předpřipravené generické | + | |
| - | klienty: | + | |
| - | * Ruby - https:// | + | Pro práci s API můžeš použít tyto klienty: |
| - | * PHP - https:// | + | |
| - | * JavaScript - https:// | + | |
| - | * Go - https:// | + | |
| - | * Webové rozhraní z HaveAPI - https:// | + | |
| - | * Souborový systém založený na FUSE - https:// | + | |
| - | Ukázka použití je vždy v '' | + | * [[# |
| - | předá URL k API, poté si sám stáhne dokumentaci | + | * [[# |
| + | * [[# | ||
| + | * [[# | ||
| + | * [[# | ||
| + | * [[# | ||
| + | * [[# | ||
| API je [[wp> | API je [[wp> | ||
| Řádek 38: | Řádek 36: | ||
| ===== Autentizace ===== | ===== Autentizace ===== | ||
| - | Lze využívat dvě autentizační metody. Tou první a jednodušší z nich je HTTP | + | API podporuje dva způsoby autentizace: |
| - | basic. S každým požadavkem na API se musí zaslat jméno a heslo. Je to dobrá | + | |
| - | volba pro jednorázové akce, pokud je ale potřeba API volat vícekrát nebo | + | |
| - | automatizovaně, | + | |
| - | Druhou metodou je autentizace přes tokeny. | + | * [[# |
| - | požádá o vytvoření tokenu, k tomu potřebuje jméno, heslo a připadně i TOTP. | + | * [[#tokeny|Pomocí tokenů]] |
| + | |||
| + | Ukázky autentizace pro podporované programovací jazyky a CLI najdeš | ||
| + | v [[https:// | ||
| + | |||
| + | ==== HTTP Basic ==== | ||
| + | S každým požadavkem na API se musí zaslat jméno a heslo v HTTP hlavičce " | ||
| + | Je to dobrá volba pro jednorázové akce, pokud je ale potřeba API volat vícekrát nebo | ||
| + | automatizovaně, | ||
| + | nelze použít, pokud máte aktivované dvoufaktorové ověřování. | ||
| + | |||
| + | ==== Tokeny ==== | ||
| + | Klient nejprve | ||
| Jakmile klient dostane token, může jméno a heslo zapomenout a dále se autentizuje | Jakmile klient dostane token, může jméno a heslo zapomenout a dále se autentizuje | ||
| získaným tokenem. | získaným tokenem. | ||
| Řádek 50: | Řádek 57: | ||
| Tokeny mohou být několika typů s různě dlouhou životností: | Tokeny mohou být několika typů s různě dlouhou životností: | ||
| - | * fixed - platnost tokenu je pevně dána | + | * //fixed// - platnost tokenu je pevně dána |
| - | * renewable_manual - platnost tokenu lze manuálně prodloužit | + | * //renewable_manual// - platnost tokenu lze manuálně prodloužit |
| - | * renewable_auto - platnost tokenu je prodloužena při každém požadavku | + | * //renewable_auto// - platnost tokenu je prodloužena při každém požadavku |
| - | * permament | + | * // |
| Typ tokenu a časový interval, o který se prodlužuje, | Typ tokenu a časový interval, o který se prodlužuje, | ||
| - | ===== CLI ===== | + | Autentizace tokenem musí být pro tvůj účet povolená. Ukázky níže se přihlašují |
| - | [[https:// | + | uživatelským jménem a heslem. Pokud přihlášení |
| - | Pro správnou funkci | + | hesla, použij |
| - | Ruby, OpenSSL a ncurses (většinou balíčky s příponou '' | + | |
| - | ==== Linux ==== | + | ===== Scopes |
| + | U autentizačních tokenů si můžeme zvolit, jaké akce bude token mít k dispozici. | ||
| + | To se může hodit u tokenů s dlouhou nebo permanentní platností. Každá akce | ||
| + | má svůj //scope//, jehož název najdeme v dokumentaci. Dostupné scope se nastavuje, | ||
| + | když žádáme o nový token, tj. zasílá se společně s přihlašovacími údaji. | ||
| - | ==== Ubuntu 20.04 ==== | + | Ukázky možných scopes: |
| - | === Instalace závislostí === | + | * '' |
| + | * prázdný scope, přístup je povolen jen k akci '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| - | <code bash> | + | Scope může obsahovat globy pro název resource a akce. Akce je od resource oddělena křížkem (''#'' |
| - | sudo apt-get install ruby ruby-dev make g++ libssl-dev libncurses-dev | + | |
| - | </ | + | |
| - | === Instalace | + | ===== Instalace |
| + | Balíček [[https:// | ||
| + | příkaz '' | ||
| + | Potřebuješ Ruby, jeho hlavičkové soubory a ncurses (většinou balíčky s příponou | ||
| + | '' | ||
| + | [[https:// | ||
| + | Poté klienta nainstalujeme pomocí Ruby gems: | ||
| <code bash> | <code bash> | ||
| - | sudo gem install vpsfree-client | + | gem install vpsfree-client |
| </ | </ | ||
| + | Konkrétní postupy instalace podle platformy: | ||
| - | ====Instalace na Centos 7==== | + | * Linux |
| - | + | | |
| - | Zdrojový kod klienta lze najít | + | |
| - | + | | |
| - | vpsfree-client vyžaduje ruby > | + | |
| - | + | | |
| - | Ruby ve verzi nižší než [[https:// | + | |
| - | + | ||
| - | Aktuální Ruby je možné nainstalovat pomocí | + | |
| - | + | ||
| - | Například: | + | |
| - | < | + | |
| - | yum install -y openssl-devel readline-devel zlib-devel | + | |
| - | / | + | |
| - | # následně je zapotřebí přidat rbenv do PATH a provést trochu magie(snippet z .bashrc): | + | |
| - | export PATH=" | + | |
| - | if [ -d '/ | + | |
| - | | + | |
| - | fi | + | |
| - | / | + | |
| - | / | + | |
| - | #projistotu spustte nový bash který uvidí novou verzi ruby | + | |
| - | / | + | |
| - | #proveďte instalaci | + | |
| - | / | + | |
| - | # | + | |
| - | / | + | |
| - | / | + | |
| - | / | + | |
| - | Usage: / | + | |
| - | ... | + | |
| - | </ | + | |
| - | =============== | + | |
| - | ====Instalace CLI na Linux distribucích založených na Arch Linux==== | + | |
| - | Testováno na [[https:// | + | |
| - | + | ||
| - | <code bash> | + | |
| - | sudo pacman -Syu ruby make gcc | + | |
| - | gem install vpsfree-client # nainstalujeme vpsfree-client (nepoužívejte tady SUDO install!) | + | |
| - | </ | + | |
| - | + | ||
| - | Přidáme PATH k nainstalovaným gems do '' | + | |
| - | + | ||
| - | <code bash> | + | |
| - | sudo nano ~/.bashrc | + | |
| - | </ | + | |
| - | + | ||
| - | Na konec souboru přidáme: | + | |
| - | + | ||
| - | <code bash> | + | |
| - | if command -v ruby &>/ | + | |
| - | PATH=" | + | |
| - | fi | + | |
| - | </ | + | |
| - | + | ||
| - | Restartujeme shell '' | + | |
| - | <code bash> | + | |
| - | vpsfreectl ip_traffic top | + | |
| - | </ | + | |
| - | + | ||
| - | Výše uvedené příkazy nefungují na distribucích založených na Debian/ | + | |
| - | + | ||
| - | ==== macOS ==== | + | |
| - | + | ||
| - | Na OS X je nutné nainstalovat OpenSSL přes [[http:// | + | |
| - | poté se dá nainstalovat EventMachine (gem, jenž klient vyžaduje). | + | |
| - | + | ||
| - | <code bash> | + | |
| - | $ brew install openssl | + | |
| - | $ sudo gem install eventmachine -- --with-opt-include="/ | + | |
| - | </ | + | |
| - | + | ||
| - | Nainstalovat jej lze pomocí ruby gems: | + | |
| - | + | ||
| - | <code bash> | + | |
| - | $ sudo gem install vpsfree-client | + | |
| - | </ | + | |
| - | + | ||
| - | < | + | |
| - | gem vypíše PATH pod kterým lze najít nainstalovaný balíček | + | |
| - | <code bash> | + | |
| - | WARNING: | + | |
| - | gem executables will not run. | + | |
| - | + | ||
| - | </ | + | |
| - | </ | + | |
| - | + | ||
| - | ==== Windows ==== | + | |
| - | Instalace ve Windows 10 využitím Ubuntu Linux subsystem: | + | |
| - | + | ||
| - | - ve Windows 10 povolit developer mode, nechat nainstalovat | + | |
| - | - přes Programy a funkce otevřít přidání součástí Windows, úplně dole zvolit Linux subsystem, nechat nainstalovat a restartovat počítač | + | |
| - | - po restartu jako admin spustit v nabídce Start bash | + | |
| - | - vytvořit Unix username a heslo | + | |
| - | - stisknout y a nechat nainstalovat základ Ubuntu | + | |
| - | + | ||
| - | === Instalace závislostí === | + | |
| - | + | ||
| - | <code bash> | + | |
| - | sudo apt-get install ruby2.1 ruby2.1-dev libssl-dev make g++ | + | |
| - | </ | + | |
| - | + | ||
| - | === Quick & Dirty fix pro nastavení ruby2.1 jako výchozího namísto 1.9 === | + | |
| - | + | ||
| - | <code bash> | + | |
| - | sudo rm / | + | |
| - | sudo ln -s / | + | |
| - | sudo ln -s / | + | |
| - | sudo ln -s / | + | |
| - | sudo ln -s / | + | |
| - | sudo ln -s / | + | |
| - | sudo gem update --system | + | |
| - | sudo gem pristine --all | + | |
| - | </ | + | |
| - | + | ||
| - | Zdroj: http:// | + | |
| - | + | ||
| - | === Instalace vpsfree-client === | + | |
| - | + | ||
| - | <code bash> | + | |
| - | sudo gem install vpsfree-client | + | |
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | ---- | + | |
| Po instalaci by v '' | Po instalaci by v '' | ||
| Řádek 217: | Řádek 118: | ||
| <code bash> | <code bash> | ||
| - | $ PATH=" | + | $ export |
| </ | </ | ||
| - | ==== Použití CLI ==== | + | ===== Použití CLI ===== |
| < | < | ||
| Řádek 375: | Řádek 276: | ||
| --user USER User name | --user USER User name | ||
| --password PASSWORD | --password PASSWORD | ||
| + | --scope [SCOPE] | ||
| --token TOKEN Token | --token TOKEN Token | ||
| --token-lifetime LIFETIME | --token-lifetime LIFETIME | ||
| Řádek 419: | Řádek 321: | ||
| přístupem k '' | přístupem k '' | ||
| </ | </ | ||
| + | |||
| + | Při vytváření tokenu můžeme specifikovat scope: | ||
| + | <code bash> | ||
| + | $ vpsfreectl --auth token --scope ' | ||
| + | </ | ||
| + | |||
| + | Příkaz výše vytvoří autentizační token, který bude omezen na volání akcí nad resource '' | ||
| ==== Akce a parametry ==== | ==== Akce a parametry ==== | ||
| Řádek 576: | Řádek 485: | ||
| se hned ukončit a nečekat. Informace o dokončení akce je však důležitá, | se hned ukončit a nečekat. Informace o dokončení akce je však důležitá, | ||
| nad jedním objektem (tedy třeba VPS) lze vykonávat v jednom čase jen jednu | nad jedním objektem (tedy třeba VPS) lze vykonávat v jednom čase jen jednu | ||
| - | akci, ostatní skončí s chybou | + | akci, ostatní skončí s chybou |
| Ve výchozím stavu '' | Ve výchozím stavu '' | ||
| Řádek 640: | Řádek 549: | ||
| </ | </ | ||
| - | ===== Souborový systém | + | ===== Klient pro Ruby ===== |
| - | '' | + | |
| - | API jako souborový systém z userspace. Objekty, akce a jejich parametry můžeme | + | |
| - | procházet jako adresáře a soubory v libovolném programu. Instaluje se stejným způsobem | + | |
| - | jako CLI, má jen jiný název: | + | |
| - | <code bash> | + | Knihovnu ze stejného balíčku '' |
| - | $ gem install haveapi-fs | + | Ukázka získá [[# |
| - | </ | + | a pak vypíše tvé VPS. Místo '' |
| + | údaje. Pokud už token máš, nahraď přihlašovací kód zakomentovanou alternativou | ||
| + | a doplň ho místo '' | ||
| - | ==== Použití ==== | + | <code ruby> |
| - | Použití | + | require |
| - | [[https:// | + | |
| - | zkratce. | + | |
| - | < | + | api = VpsFree:: |
| - | $ haveapi-fs https://api.vpsfree.cz /mnt/api.vpsfree.cz | + | api.authenticate(: |
| - | Username: mujlogin | + | lifetime: ' |
| - | Password: | + | # Nebo předchozí přihlášení nahraď existujícím tokenem: |
| + | # api.authenticate(: | ||
| - | $ cd /mnt/api.vpsfree.cz | + | api.vps.list.each do |vps| |
| - | $ ls -1 | + | puts "#{vps.id}: #{vps.hostname}" |
| - | auth_token | + | end |
| - | cluster | + | |
| - | cluster_resource | + | |
| - | dataset | + | |
| - | dataset_plan | + | |
| - | dns_resolver | + | |
| - | environment | + | |
| - | help.html | + | |
| - | help.man | + | |
| - | help.md | + | |
| - | help.txt | + | |
| - | ip_address | + | |
| - | language | + | |
| - | location | + | |
| - | mail_template | + | |
| - | migration_plan | + | |
| - | node | + | |
| - | object_history | + | |
| - | os_template | + | |
| - | snapshot_download | + | |
| - | transaction | + | |
| - | transaction_chain | + | |
| - | user | + | |
| - | user_session | + | |
| - | vps | + | |
| - | vps_config | + | |
| </ | </ | ||
| - | V každém adresáři se nachází soubory '' | + | Další možnosti knihovny popisuje |
| - | aktuální adresář obsahuje. | + | [[https:// |
| - | + | ||
| - | < | + | |
| - | $ cat vps/5685/hostname | + | |
| - | moje-vps | + | |
| - | + | ||
| - | $ echo lepsi-hostname > vps/ | + | |
| - | $ echo 1 > vps/ | + | |
| - | $ cat vps/ | + | |
| - | 1 | + | |
| - | $ cat vps/ | + | |
| - | lepsi-hostname | + | |
| - | </ | + | |
| - | + | ||
| - | Z ukázky výše lze vidět, že jednotlivé atributy objektů lze měnit jednoduše | + | |
| - | zapsáním do souboru. Akce uložení se vyvolá zapsáním jedničky, případně je to | + | |
| - | i spustitelný soubor, takže jej můžeme spustit. | + | |
| - | + | ||
| - | Pro přehlednější vytváření/ | + | |
| - | '' | + | |
| - | hash a po uložení a uzavření souboru se příslušná akce provede. | + | |
| - | + | ||
| - | Tímto způsobem lze provést jakoukoli operaci v API. | + | |
| - | ===== Ukázky použití | + | ==== Ukázky použití ==== |
| Následují skripty demonstrují možnosti využití API. Tyto skripty lze | Následují skripty demonstrují možnosti využití API. Tyto skripty lze | ||
| spouštět odkudkoli -- manuálně, z cronu, apod. | spouštět odkudkoli -- manuálně, z cronu, apod. | ||
| Řádek 725: | Řádek 584: | ||
| </ | </ | ||
| - | ==== Každodenní stahování záloh VPS ==== | + | === Každodenní stahování záloh VPS === |
| <code ruby> | <code ruby> | ||
| # | # | ||
| Řádek 732: | Řádek 591: | ||
| api = VpsFree:: | api = VpsFree:: | ||
| - | api.authenticate(: | + | api.authenticate(: |
| + | | ||
| + | # Nebo předchozí přihlášení nahraď existujícím tokenem: | ||
| + | # api.authenticate(: | ||
| api.dataset.list(role: | api.dataset.list(role: | ||
| Řádek 756: | Řádek 618: | ||
| </ | </ | ||
| - | ==== Denní zálohování NASu s týdenní historií | + | === Denní zálohování NASu s týdenní historií === |
| <code ruby> | <code ruby> | ||
| # | # | ||
| Řádek 763: | Řádek 625: | ||
| api = VpsFree:: | api = VpsFree:: | ||
| - | api.authenticate(: | + | api.authenticate(: |
| + | | ||
| + | # Nebo předchozí přihlášení nahraď existujícím tokenem: | ||
| + | # api.authenticate(: | ||
| api.dataset.list(role: | api.dataset.list(role: | ||
| Řádek 787: | Řádek 652: | ||
| end | end | ||
| </ | </ | ||
| + | |||
| + | ===== Další klienti ===== | ||
| + | |||
| + | Každá ukázka získá [[# | ||
| + | vpsAdminu a pak vypíše ID a hostname nejvýše 10 VPS. Místo '' | ||
| + | a '' | ||
| + | přihlašovací kód zakomentovanou alternativou a doplň ho místo '' | ||
| + | |||
| + | ==== Klient pro PHP ==== | ||
| + | |||
| + | [[https:// | ||
| + | nainstaluj pomocí Composeru: | ||
| + | |||
| + | <code bash> | ||
| + | composer require haveapi/ | ||
| + | </ | ||
| + | |||
| + | Ukázku ulož jako '' | ||
| + | '' | ||
| + | |||
| + | <code php> | ||
| + | <?php | ||
| + | require __DIR__ . '/ | ||
| + | |||
| + | $api = new \HaveAPI\Client(' | ||
| + | $api-> | ||
| + | // Nebo předchozí přihlášení nahraď existujícím tokenem: | ||
| + | // $api-> | ||
| + | |||
| + | foreach ($api-> | ||
| + | echo $vps->id . ': ' . $vps-> | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Další akce a zpracování chyb popisuje | ||
| + | [[https:// | ||
| + | |||
| + | ==== Klient pro Python ==== | ||
| + | |||
| + | Balíček [[https:// | ||
| + | |||
| + | <code bash> | ||
| + | python -m pip install haveapi-client | ||
| + | </ | ||
| + | |||
| + | Ukázku ulož jako '' | ||
| + | |||
| + | <code python> | ||
| + | from haveapi_client import Authenticated, | ||
| + | |||
| + | with Client(" | ||
| + | login = api.begin_token_login({ | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }) | ||
| + | if not isinstance(login, | ||
| + | raise RuntimeError(" | ||
| + | # Nebo předchozí blok přihlášení nahraď existujícím tokenem: | ||
| + | # api.set_auth(TokenAuth(" | ||
| + | |||
| + | result = api.vps.list(limit=10) | ||
| + | for vps in result.data: | ||
| + | print(vps[" | ||
| + | </ | ||
| + | |||
| + | [[https:// | ||
| + | popisuje také asynchronní volání s '' | ||
| + | |||
| + | ==== Dynamický klient HaveAPI pro JavaScript a TypeScript ==== | ||
| + | |||
| + | Oba jazyky používají stejný balíček z npm, který obsahuje i deklarace typů pro TypeScript: | ||
| + | |||
| + | <code bash> | ||
| + | npm install haveapi-client | ||
| + | </ | ||
| + | |||
| + | Ukázka funguje v JavaScriptu i TypeScriptu. Pro spuštění v Node.js ji ulož jako | ||
| + | '' | ||
| + | |||
| + | <code javascript> | ||
| + | import { AsyncClient } from " | ||
| + | |||
| + | async function main() { | ||
| + | const api = new AsyncClient(" | ||
| + | await api.authenticate(" | ||
| + | // Nebo předchozí přihlášení nahraď existujícím tokenem: | ||
| + | // await api.authenticate(" | ||
| + | const result = await api.resource(" | ||
| + | params: { limit: 10 }, | ||
| + | }); | ||
| + | const vpses = result.response.data; | ||
| + | if (Array.isArray(vpses)) { | ||
| + | for (const vps of vpses) { | ||
| + | console.log(vps.id, | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | main().catch(() => console.error(" | ||
| + | </ | ||
| + | |||
| + | Další akce a použití v prohlížeči najdeš v | ||
| + | [[https:// | ||
| + | |||
| + | ==== Klient pro Go ==== | ||
| + | |||
| + | [[https:// | ||
| + | přidej do svého Go modulu: | ||
| + | |||
| + | <code bash> | ||
| + | go get github.com/ | ||
| + | </ | ||
| + | |||
| + | Ukázku ulož jako '' | ||
| + | |||
| + | <code go> | ||
| + | package main | ||
| + | |||
| + | import ( | ||
| + | " | ||
| + | " | ||
| + | |||
| + | " | ||
| + | ) | ||
| + | |||
| + | func main() { | ||
| + | api := client.New(" | ||
| + | if err := api.SetNewTokenAuth(& | ||
| + | User: | ||
| + | Password: " | ||
| + | }); err != nil { | ||
| + | log.Fatal(err) | ||
| + | } | ||
| + | // Nebo předchozí blok přihlášení nahraď existujícím tokenem: | ||
| + | // api.SetExistingTokenAuth(" | ||
| + | |||
| + | action := api.Vps.Index.Prepare() | ||
| + | action.NewInput().SetLimit(10) | ||
| + | response, err := action.Call() | ||
| + | if err != nil { | ||
| + | log.Fatal(err) | ||
| + | } | ||
| + | if !response.Status { | ||
| + | log.Fatalf(" | ||
| + | } | ||
| + | |||
| + | for _, vps := range response.Output { | ||
| + | fmt.Println(vps.Id, | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Další akce a parametry najdeš v | ||
| + | [[https:// | ||
| + | |||
| + | ==== Generovaný klient pro vpsAdmin v TypeScriptu ==== | ||
| + | |||
| + | [[https:// | ||
| + | poskytuje typované metody pro zdroje a akce vpsAdminu. Nainstaluj ho pomocí npm, | ||
| + | které přidá i jeho závislost '' | ||
| + | |||
| + | <code bash> | ||
| + | npm install vpsadmin-typescript-client | ||
| + | </ | ||
| + | |||
| + | Ukázka funguje v JavaScriptu i TypeScriptu. Pro spuštění v Node.js ji ulož jako | ||
| + | '' | ||
| + | U tohoto klienta použij základní adresu '' | ||
| + | |||
| + | <code javascript> | ||
| + | import { AsyncClient } from " | ||
| + | import { createHaveApiExecutor, | ||
| + | |||
| + | async function main() { | ||
| + | const runtime = new AsyncClient(" | ||
| + | await runtime.authenticate(" | ||
| + | // Nebo předchozí přihlášení nahraď existujícím tokenem: | ||
| + | // await runtime.authenticate(" | ||
| + | const api = createVpsAdminClient({ execute: createHaveApiExecutor(runtime) }); | ||
| + | const page = await api.vps.index({ params: { limit: 10 } }); | ||
| + | for (const vps of page.data) { | ||
| + | console.log(vps.id, | ||
| + | } | ||
| + | } | ||
| + | |||
| + | main().catch(() => console.error(" | ||
| + | </ | ||
| + | |||
| + | Další akce a typy popisuje | ||
| + | [[https:// | ||
| + | |||
| + | ==== Klient pro Rust ==== | ||
| + | |||
| + | Do svého projektu v Rustu přidej balíček | ||
| + | [[https:// | ||
| + | synchronní volání, proto zapni podporu '' | ||
| + | |||
| + | <code bash> | ||
| + | cargo add vpsadmin-client --features blocking | ||
| + | </ | ||
| + | |||
| + | Ukázku ulož jako '' | ||
| + | |||
| + | <code rust> | ||
| + | use vpsadmin_client:: | ||
| + | |||
| + | fn main() -> Result< | ||
| + | let login = Client:: | ||
| + | let response = login.authentication__token__token().request() | ||
| + | .user(" | ||
| + | .password(" | ||
| + | .lifetime(" | ||
| + | .send()?; | ||
| + | let TokenStep:: | ||
| + | return Err(" | ||
| + | }; | ||
| + | let api = Client:: | ||
| + | .token(token.expose_secret()) | ||
| + | .build()?; | ||
| + | // Nebo předchozí přihlášení a vytvoření klienta nahraď existujícím tokenem: | ||
| + | // let api = Client:: | ||
| + | |||
| + | let response = api.vps().index().limit(10).send()?; | ||
| + | for vps in response.output { | ||
| + | if let (Some(id), Some(hostname)) = (vps.id, vps.hostname) { | ||
| + | println!(" | ||
| + | } | ||
| + | } | ||
| + | Ok(()) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Další akce, asynchronní volání a požadavky na Rust najdeš v | ||
| + | [[https:// | ||
| < | < | ||