Skip to content

Instantly share code, notes, and snippets.

@sirex
Created December 8, 2021 13:56
Show Gist options
  • Save sirex/30f595e58beb0b52cad565a061753f62 to your computer and use it in GitHub Desktop.
Save sirex/30f595e58beb0b52cad565a061753f62 to your computer and use it in GitHub Desktop.
#!zsh
# Inventorizacija
# ###############
#
# Katalogo (Partnerių) API
# ========================
#
# https://httpie.io/
# Diegiame Python 3.9 ar naujasnę versiją, jei reikia
python3 --version
docker run -ti ubuntu:20.04 bash
apt update
apt install locales
update-locale LC_ALL=C.UTF-8
locale-gen
export LC_ALL=C.UTF-8
locale
apt update
apt install python3
python3 --version
apt update
apt install software-properties-common
add-apt-repository ppa:deadsnakes/ppa
apt update
apt install python3.9 python3.9-venv
python3.9 --version
apt install sqlite3
apt install httpie
http --version
apt install jq
jq --version
apt install zsh
zsh
# Katalogo (Partnerių) API
# https://data.gov.lt/partner/api/1
# zsh (https://www.zsh.org/)
# jq (https://stedolan.github.io/jq/)
partner="https://staging.data.gov.lt/partner/api/1"
apikey="39d07f7f-900c-4015-acf7-ad7fdc24136c"
auth="Authorization: ApiKey $apikey"
http GET $partner/datasets $auth
http GET $partner/datasets $auth | jq -r '.[].title'
# Naujo duomenų rinkinio kūrimas
http POST $partner/datasets $auth <<EOF
{
"title": "Darbo užmokesčio duomenys",
"description": "Valstybinių įstaigų darbuotojų darbo užmokesčio duomenys."
}
EOF
#| "id": 2045,
# Patikrinam ar duomenų rinkinys susikūrė?
http GET $partner/datasets $auth | jq '.[] | {id, title} | select(.title | test("^Darbo")) | .id'
# Katalogo viešas API
# https://data.gov.lt/public/api/1
public="https://staging.data.gov.lt/public/api/1"
http GET "$public/action/package_search?q=&fq=organization_id:183"
http GET "$public/action/package_search?q=&fq=organization_id:183" | jq -r '.result.results[] | .title' | sort
# Struktūros aprašo žingsnis
# ##########################
#
# Spinta TUI (struktūros aprašo generavimas)
# ==========================================
# Kuriam duomenų bazę testavimiu.
sqlite3 duomenys.db <<EOF
CREATE TABLE ORGANIZACIJA (
ID INTEGER PRIMARY KEY,
PAVADINIMAS VARCHAR(255),
TRUMPINYS VARCHAR(10),
IKURIMO_METAI INTEGER
);
INSERT INTO ORGANIZACIJA
(ID, PAVADINIMAS, TRUMPINYS, IKURIMO_METAI) VALUES
(1, "Informacinės visuomenės komitetas", "IVPK", 2000),
(2, "Aplinkos apsaugos agentūra", "AAA", 2001),
(3, "Higienos instututas", "HI", 2002),
(4, "Informatikos ir ryšių departamentas", "IRD", 2003);
EOF
# Patikrinam ar duomenys įsirašė
sqlite3 -column duomenys.db <<EOF
SELECT * FROM ORGANIZACIJA;
EOF
# Diegiame Spinta
useradd --system -g www-data --create-home --home-dir /opt/spinta spinta
which zsh
su -l spinta -s /usr/bin/zsh
cd
pwd
python3.9 -m venv env
source env/bin/activate
pip install spinta
spinta --version
# Prieš pradedant darbą su `spinta` komanda aktyvuojame venv
source env/bin/activate
# Generuojam duomenų struktūros aprašą
spinta inspect -r sql sqlite:///duomenys.db
spinta inspect -r sql sqlite:///duomenys.db -o sdsa.xlsx
# Struktūros aprašo lentelė
# =========================
# Paruošiam ŠDSA atvėrimui
libreoffice sdsa.xlsx
# Katalogo Web UI
# ===============
# Generuojam ADSA
spinta copy --access open --no-source sdsa.xlsx -o adsa.csv
# Patikrinama ADSA check komandos pagalba.
spinta check adsa.csv
# Patikrinama ADSA rankiniu būdu.
libreoffice adsa.csv
# Katalogo (Partnerių) API
# ========================
# Susirandam duomenų rinkinio id
http GET $server/datasets $auth | jq '.[] | {id, title}'
dataset=2034
# Įkeliame duomenų struktūros aprašą
http -f POST $server/datasets/$dataset/structure $auth title=ADSA2 [email protected]
# Duomenų atvėrimas
# #################
# Spinta TUI
# ==========
# 1. Kliento kūrimas Saugykloje.
# 2. Struktūros aprašo įkėlimas į Saugyklą.
# 3. Konfigūruojame Saugyklos klientą.
cat >> ~/.config/spinta/credentials.cfg <<EOF
[[email protected]]
client = mokymai
secret = 5SO-DrCWy32BVIUEoIwry8rVb_iK7Yjs
scopes =
spinta_set_meta_fields
spinta_getone
spinta_getall
spinta_search
spinta_changes
spinta_check
spinta_datasets_gov_ivpk_mokymai_insert
spinta_datasets_gov_ivpk_mokymai_upsert
spinta_datasets_gov_ivpk_mokymai_update
spinta_datasets_gov_ivpk_mokymai_patch
spinta_datasets_gov_ivpk_mokymai_delete
EOF
export AUTHLIB_INSECURE_TRANSPORT=1
spinta run --mode external sdsa.xlsx
# 4. Leidžiam push komandą.
spinta push sdsa.xlsx -o https://[email protected]
# Saugyklos API
# =============
# 1. Kliento kūrimas Saugykloje.
# 2. Struktūros aprašo įkėlimas į Saugyklą.
server=https://put-test.data.gov.lt
client=mokymai
secret=5SO-DrCWy32BVIUEoIwry8rVb_iK7Yjs
scopes=(
spinta_set_meta_fields
spinta_getone
spinta_getall
spinta_search
spinta_changes
spinta_check
spinta_datasets_gov_ivpk_mokymai_insert
spinta_datasets_gov_ivpk_mokymai_upsert
spinta_datasets_gov_ivpk_mokymai_update
spinta_datasets_gov_ivpk_mokymai_patch
spinta_datasets_gov_ivpk_mokymai_delete
)
auth="Authorization: Bearer $(http -a $client:$secret -f $server/auth/token grant_type=client_credentials scope="$scopes" | jq -r .access_token)"
http GET $server/datasets/gov/ivpk/mokymai/Organizacija/:format/ascii $auth
http POST $server/datasets/gov/ivpk/mokymai/Organizacija $auth <<EOF
{
"id": 24,
"pavadinimas": "Bandymas 2",
"trumpinys": "BAND2",
"ikurimo_metai": 1998
}
EOF
# Katalogo (Partnerių) API
# ========================
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment