Rewired 2.0 – RwMedia Backend
Ez a Media beagyazas motor backend-je. Drupal 7.x alapu jelenleg, de RW-tol teljesen fuggetlenul mukodik es tesztelheto kulon is, teljesen szaraz Drupal telepitessel.
A mukodesi elve, hogy get/set/delete es hasonlo API cimeken keresztul analizalni es kezelni tudja, majd feltolteni az adatbazisba a beagyazni valo tartalmakat. Affele REST alapu megoldas. Tovabbi kulonlegessege hogy aszinkron-ban is tudnak futni bizonyos PHP funkciok, hogy minel kevesbe terheljek az eredeti lekero eroforrasokat. Minden API vegzodes csak belogolt administrator vagy rendszer altal (appID-n keresztul) hivhato kizarolag, kiveve a GET es GET_GROUP, amik viszont publikusak.
Dependency lista:
- Rewired: RWHttp
- Rewired: RWData
- Rewired: RWThumbs
Letoltes:
https://www.rewired.hu/sites/default/files/development/rwmedia_backend.zip
Telepiteshez lepesek:
1) Valamilyen PHP kodot es MySQL-t mukodteto rendszer, pl en XAMPP-ot hasznalok.
2) Sima Drupal 7.x telepites
3) Be kell masolni a kicsomagolt “rwmedia_backend” direktorium tartalmat a “{DrupalTelepites}/sites/all/modules” direktorium ala.
4) Drupalban bekapcsolni a “RwMedia Backend“ modult. (menusor: modules->rwmedia_backend bekapcs)
5) Drupalban resetalni a cache-t, hogy aktivizalja magat a friss kod (menusor: configuration->performance->clear all cache gomb)
6) Keszen vagy.
Teszt:
A bongeszoben kiprobalod peldaul a “{DrupalWeboldal}/rwmedia/get” cimet, es vissza kellene jelezzen az API egy OK-val, meg par apro egyeb informacioval:
rwurl=https://imgur.com/DmuFaPK
RwMedia API eleres webpontok:
---------------------------------------------
SET
- Funkcioja hogy analizalja es beagyazza a kivalasztott tartalmat. Nem valaszol vissza semi erdemlegeset egy OKn felul mivel aszinkron modon mukodik a hatterben, igy ahogy a felhasznalo elkuldte a beagyazni valot, azonal felszabadulnak az eroforrasok.
- webcim: “{DrupalWeboldal}/rwmedia/set?{tetszolegesBeagyaznivaloWeboldal}”
- egy pelda: “www.rewired.test/rwmedia/set?youtube.com/watch?v=LczGSoibRe8”
---------------------------------------------
SET_SYNC
- Funkcioja es mukodesi elve ugyanaz mint a SET, csak azzal szemben ez szinkronban csinal mindent, igy amig be nem fejezodik az osszes hatter muvelet addig nem jelez vissza szemmit es nem adja vissza a kontrollt. Ez a muvelet inkabb csak Debug esetekre ajanlott, hogy konnyebben at tudjuk latni hogy hol lehet potencialis gubanc.
- webcim: “{DrupalWeboldal}/rwmedia/set_sync?{tetszolegesBeagyaznivaloWeboldal}”
- egy pelda: “www.rewired.test/rwmedia/set_sync?youtube.com/watch?v=LczGSoibRe8”
---------------------------------------------
GET
- Funkcioja hogy kimutassa a beagyazott tartalmakrol leanalizalt es megertett informaciokat.
- webcim: “{DrupalWeboldal}/rwmedia/get?{id}”
- az {id} a SET altal legeneralt egyedi ismerteto (sima sha256hash az url-bol, modifikalt base64 encoding-gal). Viszont siman hasznalhatjuk ugyanazt a weboldalt is, ha nem tudjuk elozoleg az {id}-t.
- egy pelda: “www.rewired.test/rwmedia/get?6Rie@3mI3Gk4tgwHgHIWsHXvGSm4ezhTA7U9AzfmVPA-”
- vagy peldaul: “www.rewired.test/rwmedia/get?youtube.com/watch?v=LczGSoibRe8”
- Valasz JSON:
Status-code: (pl 200=minden okes, 404=ha nem talalta a bejegyzest)
Status: (1=be van jegyezve az adatbazisba, 2=ellenorizve hogy el a link, 3=feltoltes vagy hasonlo hattermunka, 7=kesz de nem ismert webcim, 8=kesz es okes minden, 9=hibaba utkozott valahol es megszakitott)
Id: beagyazott tartalom egyedi azonositoja
Display_url: kimutatott webcim. Mindig csak a biztonsagosra atragott webcimet mutatjuk ki, mivel az ember barmilyen beagyazni valo munkat indithat, ugye.
Type: a beagyazott anyag tipusa, pl youtube video, vagy sima kep, est.
Data_url: ha barmilyen adatot vagy url-t kell a frontend-nek fenntartani, akkor itt lehet tarolni.
Upload_percentage: A feltoltes szazalekat/statuszat meri, ha epp van valahol hattermunka (pl attoltes masik, stabil direkt linkre) a beagyazni valo anyaggal.
Webm_url: Direktlink videoknak webm webcim, ha van.
Mp4_url: direktlink videoknak mp4 webcim, ha van.
Title: a beagyazasrol rovid leiras/cim
Video_duration: a video idotartalma
Background_url: a bejegyzes hatterkepe, ha van.
Size: a bejegyzes nagysaga MB-ben, ha van.
Width: a bejegyzes szelessege (pl kepnel).
Height: a bejegyzes magassaga (pl kepnel).
rwurl=https://imgur.com/8vEqNvv
---------------------------------------------
LOG
- Funkcioja majdnem megegyezik a GET-evel. De itt az osszes kapcsolatos szerver log informaciot es par azon feluli infot is hozzacsatol a kimutatashoz, igy bazi hasznos fejlesztoi szerszam tud lenni es bugkeresesnel is szintugy. Ha az aszinkronosan futo SET funkciot hasznaljuk a beagyazasnal, itt szintugy vegig tudjuk kovetni hogy mi tortenik epp az adott pillanatban a hatterben, mivel az adatbazisban folyamatosan updatelodnek a log adatok is. Ez utobbi is nagyon hasznos fejlesztoi/debugger szerszam. A Log informaciok az adott log bejegyzes pontos mikroszekundumonkent mert pillanata szerint vannak sorrenben kimutatva.
- webcim: “{DrupalWeboldal}/rwmedia/log?{id}”
- egy pelda: “www.rewired.test/rwmedia/log?6Rie@3mI3Gk4tgwHgHIWsHXvGSm4ezhTA7U9AzfmVPA-”
- vagy peldaul: “www.rewired.test/rwmedia/log?youtube.com/watch?v=LczGSoibRe8”
rwurl=https://imgur.com/9gjizT0
---------------------------------------------
DELETE
- Funkcioja torolni a bejegyzest az adatbazisbol.
- webcim: “{DrupalWeboldal}/rwmedia/delete?{id}”
- egy pelda: “www.rewired.test/rwmedia/delete?6Rie@3mI3Gk4tgwHgHIWsHXvGSm4ezhTA7U9AzfmVPA-”
- vagy peldaul: “www.rewired.test/rwmedia/delete?youtube.com/watch?v=LczGSoibRe8”
---------------------------------------------
GET_GROUP es LOG_GROUP
- Funkcioja, mint ahogy a nevuk is utal ra, hogy egyszerre tobb bejegyzest nyerjunk ki az adatbazisbol.
- Ezek speciel “HTTP POST Request” funkciok, igy klasszikusan bongeszo URL mezobol nem konnyu tesztelni oket. Csak JSON-t fogad el.
- webcim: “{DrupalWeboldal}/rwmedia/get_group”
- illetve: “{DrupalWeboldal}/rwmedia/log_group”
- POST adatok JSON-ban: “{data: [id1, id2, id3…]}”
---------------------------------------------
STEPS
- Ez belso rendszer API vegzodes. Szintugy “POST Request”-es. Normalis esetben se a felhasznalonak, se a fejlesztonek nem kell hogy hozzaferjen. A RWMedia beagyazas hasznalja informaciot adogatni idozitessel sajat maganak, es az aszinkronos funkcionalitasra. Ugymond a beagyazas motor automatizaciojanak a “lelke”.
- webcim: “{DrupalWeboldal}/rwmedia/steps”
---------------------------------------------
RwMedia backend fajlok funkcioja, nagyvonalakban?
Rwmedia_backend.info
csak sima informaciok a Drupal-nak az adott modulrol.
Rwmedia_backend.module
ez gyujti ossze es inditja az osszes szukseges kapcsolatos PHP fajlt, es foglalja le az adott API elerhetoseg cimeket mint ugye {drupalOldal}/api/get,set,delete,log es a tobbi. Itt tudjuk szabalyozni hogy melyik API elerhetoseg publikus, es melyik csak az adminok es/vagy csak a rendszer szamara. Eles helyzetben alapertelmezetten a GET es GET_GROUP API erheto publikusan, ami majd cache-elheto is lesz.
Rwmedia_backend.install
legeneralja az RWMedia adatbazis tablazatot, de csak az elso bekapcsolasnal teszi ezt. Ha ki akarjuk torolni es ujrageneralni ezt az adatbazis tablazatot, akkor ki kell kapcsolni az rwmedia_backend modult, majd “uninstallalni”, majd visszakapcsolni.
access.inc
Itt talalhatok az adott API webcimek biztonsagi elerheteert felelos funkciok. Azaz pl csak az Adminisztratort, es a Rendszert engedik hozzaferni azokhoz, az appID-n vagy login csekken keresztul.
analyze.inc
Itt ertelmezi magukat az adatokat, es tolti tele a megfelelo bejegyzes rublikakat a kesobbi kimutatasra. Ez a fo funkcio, de a reszelemei tovabb vannak valasztva “kiterjesztesekkel” a kulonbozo specifikus oldalakra, hogy konnyebb legyen kezelni es fejleszteni. Pl facebook.inc ertelemszeruen a facebook beagyazas funkcionalitasokat intezi, pl imgur.inc meg az imgur-et, es igy tovabb.
api.inc
az API vegpontok elso funkcioit taroljuk itt. Itt analizaljuk a lekeresi adatokat, majd hivjuk utana a kapcsolatos tovabbi funkciokat. Azaz itt iranyitodnak a helyukre az API vegpontok altal begyujtott adatok a megfelelo alfunkciokba.
crud.inc
A klasszikus (create, read, update, and delete) funkcionalitasok vannak itt.
crypto.inc
Encryptalasert, decryptalasert, encodingert, decodingert, es hashing funkcionalitasokert felelos cuccok vannak mind itt.
database.inc
Kizarolag az adatbazis hozzaferesek es modositasok intezodnek itt.
settings.inc
a user/pass-okat tarolja a third party weboldal API elerhetosegekre (pl imgur vagy streamable). Azonfelul a munkadirektoriumokat a legeneralt belyegkepekre, stb.
steps.inc
A beagyazas motor ugymond lelke. Itt indul meg es szervezodik a beagyazas, lepesrol lepesre tortenik. Minden lepesnek sajat funkcioja es szama van, mint Step1, Step2, stb. Igy konnyu kovetni vizualisan is hogy epp hol van a gubanc, ha debuggol vagy fejleszt az ember. Ami a Steps-ben megtortenik, azt mind logolja is a rendszer azonnal az adatbazisba (akar szinkronos, akar asszinkronos), es a fentebb emlitett LOG API lekeressel konnyen le tudjuk lepesrol lepesre olvasni, kiosztva es elkulonitve kizarolag az adott bejegyzesre, anelkul hogy kenyelmetlenul szerverre jelentkeznenk fel es kulonfele fajlokat bongesznenk.
updatelt altalanos leiras es kod:
- alapertelmezetten csak adminisztrator es a rendszer fer hozza az API vegzodesek zomehez, kiveve a GET es a GET_GROUP.
- minden api vegzodes kozpontilag kezelt es a settings.inc-ben megszabhato hova mutassanak. Igy nem kell mindenhol ahol hivjuk a kodban (es a jovobeli kodokban) oket megvaltoztatni, ha mas nevet akarnank adni nekuk kesobb.
- alapertelmezebben {drupalTeleptites}/api/{apiHivas} helyett {drupalTeleptites}/rwmedia/{apiHivas} a modell. Igy pontosan tudni lehet hogy melyik modul hivta azokat, es nem utkozik potencialisan egyeb third party modulokkal.
- a telepito letrehozza a megfelelo foldereket es fajlokat is maganak
admin mantra: "mindent le lehet kakilni oszt megy az oldal mégis magától."
életfilozófia mantra: "ideológiailag veszélyesen eltévedt kanadai szektás."