Služba Linkeru umožňuje vytvořit odkazy na předpisy do vašeho HTML kódu. Pošlete kus svého html kódu a vrátí se vám prolinkovaný.
Umí
Proces prolinkování může být časově náročný, proto služba kromě přímého zpracování implementuje také zpracování ve frontě. Přímé zpracování jednoho html je časově limitované na 60s. Zpracování ve frontě s pozdějším vyzvednutím časově limitované není.
Odkazy
Výsledným odkazům je nastaven href s url na předpis a případnou kotvou na odstavec, class podle typu odkazu, title s kompletní citací, případně další vaše attributy.
např: § 3 odst. 2 písm. a)
výsledek <a class="link-part" href="https://www.zakonyprolidi.cz/cs/2012-89#p3-2-a" title="§ 3 odst. 2 písm. a) zákona č. 89/2012 Sb." target="_blank">§ 3 odst. 2 písm. a)</a> zákona č. <a class="link-rule" href="https://www.zakonyprolidi.cz/cs/2012-89" title="zákon č. 89/2012 Sb." target="_blank">89/2012 Sb.</a>
Class
Typ odkazu lze rozlišit pomocí class.
- "link-rule" odkaz na předpis.
- "link-part" odkaz na část předpisu.
- "link-amended" ve znění.
Omezení na HTML
Používáme parser s pravidly HTML5.
Služba se snaží dodržet váš formát html. Zachová odsazení, pořadí attributů, poznámky, atd...
Ale převádí všechny html značky na malé písmena. např: <P CLASS="abc">Odstavec.</P>
převede na <p class="abc">Odstavec.</p>
Provádí opravy rozpadlých a nevalidních zápisů. např: <p class=abc id='1' č. 40/1964 Sb.
převede na <p class="abc" id="1">č. 40/1964 Sb.</p>
Neukončené značky ukončí. např: <input type="text">
převede na <input type="text"/>
V HTML je povolené neukončovat <p>, pokud následuje další <p>. např: <div><p>Odstavec 1<p>Odstavec 2</div>
převede na <div><p>Odstavec 1</p><p>Odstavec 2</p></div>
Křížené formátování rozplete. např: <b>aaa<i>bbb</b>ccc</i>
převede na <b>aaa<i>bbb</i></b><i>ccc</i>
JSON
https://linker.zakonyprolidi.cz/api/json/{method}
Request
Přijímá pouze POST. Content-Type: application/json; charset=UTF-8
POST /api/json/Hello HTTP/1.1
Host: linker.zakonyprolidi.cz
Content-Type: application/json; charset=UTF-8
Content-Length: 34
Accept: application/json
{"Message":"Ping"}
Response
Http Status
200 - OK. Content obsahuje návratový objekt dané funkce v JSON.
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 98
{"Message":"Pong"}
500 - Error. Content obsahuje Error object v JSON. { "Message": "popis chyby" }
HTTP/1.1 500 Internal Server Error
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 98
{"Message":"Timeout."}
LinkerService
interface ILinkerService
Metody
- Hello - Pozdrav, ping/pong, test spojení.
- Process - Okamžité zpracování.
- Add - Přidání úlohy na zpracování.
- Get - Dotaz na stav konkrétní úlohy.
- List - Dotaz na seznam úloh.
- Delete - Smazání konkrétní úlohy.
Všechny requesty jsou zděděné z třídy RequestMessage, která má jediný parametr ApiKey.
Metoda Hello
Něco jako ping/pong na test spojení. Nevyžaduje ApiKey.
Request
class HelloRequest
{
"Message": string // Cokoliv
}
Response
class HelloResponse
{
"Message": string // Náhodná hláška
}
Metoda Process
Okamžité zpracování.
Request
class ProcessRequest
{
"ApiKey": string,
"id": string,
"EffectDate": date,
"Attributes": string,
"RemoveExisting": bool,
"SourceHtml": string
}
Response
class ProcessResponse
{
"id": string,
"ResultHtml": string
}
Metoda Add
Přidání úlohy na zpracování. Pokud pošlete "id" a takové id už existuje, tak se stará úloha přepíše, ale vygeneruje se nové guid.
Request
class AddRequest
{
"ApiKey": string,
"id": string,
"EffectDate": date,
"Attributes": string,
"RemoveExisting": bool,
"SourceHtml": string,
"ReturnUrl": string
}
Response
class AddResponse
{
"id": string,
"Guid": string
}
Metoda Get
Dotaz na stav konkrétní úlohy. Úloha se vyhledá nejdřív pomocí Guid, pokud není tak pomocí id. Vrací
class TaskObject.
Request
class GetRequest
{
"ApiKey": string,
"id": string,
"Guid": string
}
Response
class TaskObject
{
"id": string,
"Guid": string,
"State": string,
"EffectDate": date,
"Attributes": string,
"RemoveExisting": bool,
"SourceHtml": string,
"ResultHtml": string,
}
Metoda List
Dotaz na seznam úloh. Je možné filtrovat na id hvězdičkovou konvencí, nebo na konkrétní TaskState. Vrací pole TaskObject.
Request
class ListRequest
{
"ApiKey": string,
"IdFilter": string,
"StateFilter": string
}
Response
array of class TaskObject
[
{
"id": string,
"Guid": string,
"State": string,
"EffectDate": date,
"Attributes": string,
"RemoveExisting": bool,
"SourceHtml": string,
"ResultHtml": string,
},
{
// ...
}
// ...
]
Metoda Delete
Smazání konkrétní úlohy. Úloha se vyhledá nejdřív pomocí Guid, pokud není tak pomocí id.
Request
class DeleteRequest
{
"ApiKey": string,
"id": string,
"Guid": string
}
Response
class DeleteResponse
{
"id": string,
"Guid": string,
"State": string // ='Deleted'
}
FORM
https://linker.zakonyprolidi.cz/api/form/process
Request
Přijímá pouze POST. Content-Type: application/x-www-form-urlencoded
POST /api/form/process HTTP/1.1
Host: linker.zakonyprolidi.cz
Content-Type: application/x-www-form-urlencoded
Content-Length: 106
SourceHtml=z%C3%A1kon+%C4%8D.+89%2F2012+Sb.&RemoveExisting=on&EffectDate=&Attributes=target%3D%22_blank%22
Response
Http Status
200 - OK. Content obsahuje přímo výsledné HTML.
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 150
zákon č. <a class="link-rule" href="https://www.zakonyprolidi.cz/cs/2012-89" title="zákon č. 89/2012 Sb." target="_blank">89/2012 Sb.</a>
500 - Error. Content obsahuje text chyby.
HTTP/1.1 500 Internal Server Error
Cache-Control: private
Content-Type: text/plane; charset=utf-8
Content-Length: 13
Chybný ApiKey