Salmon

Salmon je protokol pro výměnu zpráv skrze HTTP navržený tak, že umožňuje decentralizované komentáře a oznámení k článkům z newsfeed jako jsou příspěvky na blogu. Umožňuje vznik jednoho společného diskusního vlákna, pro zprávu z původního zdroje a jakéhokoli agregátoru, který zprávy odebírá. Tedy, pokud se článek objevil na 3 stránkách A (zdroj), B a C (agregátory), tak uživatelé na všech 3 stránkách mohou číst a přispívat do jediného diskusního vlákna bez ohledu na to, z jaké stránky se dívají.

Příklad

Zdroj poskytuje koncový bod protokolu Salmon - URL v metadatech RSS odběru. Agregující stránka si zaznamená tento koncový bod.

<link rel="salmon" href="http://example.org/salmon-endpoint"/>

Pokud uživatel agregátoru napíše komentář, agregátor vytvoří komentář v původním zdroji.

<?xml version='1.0' encoding='UTF-8'?>
<entry xmlns='http://www.w3.org/2005/Atom'>
  <id>tag:example.com,2009:cmt-0.44775718</id>
  <author><name>test@example.com</name><uri>bob@example.com</uri></author>
  <thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0'
    ref='tag:blogger.com,1999:blog-893591374313312737.post-3861663258538857954'>
    tag:blogger.com,1999:blog-893591374313312737.post-3861663258538857954
  </thr:in-reply-to>
  <content>Salmon swim upstream!</content>
  <title>Salmon swim upstream!</title>
  <updated>2009-12-18T20:04:03Z</updated>
</entry>

Komentář bude kódován pomocí Base64, digitálně podepsán, a odeslán pomocí POST na koncový bod původního zdroje.

POST /salmon-endpoint HTTP/1.1
Host: example.org
Content-Type: application/atom+xml

<?xml version='1.0' encoding='UTF-8'?>
<me:env xmlns:me="http://salmon-protocol.org/ns/magic-env">
    <me:data type='application/atom+xml'>
    PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxlbnRyeSB4bWxucz0naHR0
    cDovL3d3dy53My5vcmcvMjAwNS9BdG9tJz4NCiAgPGlkPnRhZzpleGFtcGxlLmNvbSwyMDA5OmNt
    dC0wLjQ0Nzc1NzE4PC9pZD4NCiAgPGF1dGhvcj48bmFtZT50ZXN0QGV4YW1wbGUuY29tPC9uYW1l
    Pjx1cmk+Ym9iQGV4YW1wbGUuY29tPC91cmk+PC9hdXRob3I+DQogIDx0aHI6aW4tcmVwbHktdG8g
    eG1sbnM6dGhyPSdodHRwOi8vcHVybC5vcmcvc3luZGljYXRpb24vdGhyZWFkLzEuMCcNCiAgICBy
    ZWY9J3RhZzpibG9nZ2VyLmNvbSwxOTk5OmJsb2ctODkzNTkxMzc0MzEzMzEyNzM3LnBvc3QtMzg2
    MTY2MzI1ODUzODg1Nzk1NCc+DQogICAgdGFnOmJsb2dnZXIuY29tLDE5OTk6YmxvZy04OTM1OTEz
    NzQzMTMzMTI3MzcucG9zdC0zODYxNjYzMjU4NTM4ODU3OTU0DQogIDwvdGhyOmluLXJlcGx5LXRv
    Pg0KICA8Y29udGVudD5TYWxtb24gc3dpbSB1cHN0cmVhbSE8L2NvbnRlbnQ+DQogIDx0aXRsZT5T
    YWxtb24gc3dpbSB1cHN0cmVhbSE8L3RpdGxlPg0KICA8dXBkYXRlZD4yMDA5LTEyLTE4VDIwOjA0
    OjAzWjwvdXBkYXRlZD4NCjwvZW50cnk+
    </me:data>
    <me:encoding>base64url</me:encoding>
    <me:alg>RSA-SHA256</me:alg>
    <me:sig>
    EvGSD2vi8qYcveHnb-rrlok07qnCXjn8YSeCDDXlbhILSabgvNsPpbe76up8w63i2f
    WHvLKJzeGLKfyHg8ZomQ
    </me:sig>
</me:env>

Komentář je poté zveřejněn původním zdrojem, takže odběratelé mohou aktualizovat stav konverzace. Protokol je zabezpečen tak, že každý agregátor a odběratel je jednoznačně identifikován, takže zdroj může použít filtry nebo ban na nepřátelské servery nebo uživatele dle svého uvážení.

Použití

Distribuované sociální sítě jako GNU social a Diaspora používají Salmon tak, jak je definováno ve specifikaci OStatus ke koordinaci diskuse mezi uživateli na různých serverech. Člen jednoho serveru může publikovat příspěvek, který je šířen ostatním uživatelům v síti pomocí protokolu Salmon, kteří na příspěvek mohou obdobným způsobem reagovat.

Související články

Reference

V tomto článku byl použit překlad textu z článku Salmon (protocol) na anglické Wikipedii.

Externí odkazy