<!doctype html>

<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <title>corobel: RSS for Cohost</title>
  <meta name="description" content="A simple stateless tool to translate Cohost to RSS feeds.">
  <meta name="author" content="Leonora Tindall">

  <meta property="og:title" content="corobel: RSS for Cohost">
  <meta property="og:type" content="website">
  <meta property="og:description" content="A simple stateless tool to translate Cohost to RSS feeds.">
  <style type="text/css">
    html {
      max-width: 70ch;
      padding: 3em 1em;
      margin: auto;
      line-height: 1.75;
      font-size: 1.25em;
    }
    h1,h2,h3,h4,h5,h6 {
      font-family: sans-serif;
    }
    h1 {
      text-align: center;
    } 

    code {
      font-family: monospace;
      background-color: black;
      color: white;
      display: inline-block;
      padding: 0px 4px;
      border-radius: 4px;
    }
    a code {
      color: white;
      background-color: darkblue;
    }
    a:hover code {
      color: darkblue;
      background-color: white;
    }
    
  </style>
</head>

<body>
    <h1>corobel</h1> 
    <h2>Standard Data from Cohost Posts and Projects</h2>
    <p>
        <h3>Project RSS Feeds</h3>
        Go to <code>/project_name/feed.rss</code> to get a feed for a project, or <code>/project_name/originals.rss</code> for just original posts (including shared posts with commentary).
        For example, <a href="/noracodes/feed.rss"><code>/noracodes/feed.rss</code></a> will give you the feed for my page,
        or <a href="/noracodes/original.rss"><code>/noracodes/feed.rss</code></a> for just my original posts.
    </p>
    <p>
        <h3>Markdown Extraction</h3>
        You can also get a particular post's original plain-text body at <code>/project_name/post_id/</code>, such as
        <a href="/noracodes/169186/"><code>/noracodes/169186/</code></a>. (In a Cohost post URL, the ID is the numerical part after <code>/post/</code>.
        For instance, in <code>https://cohost.org/noracodes/post/169186-october-update</code>, the ID is "169186".)

        Or, drag this bookmarklet: <a href="javascript:(function(){const regex = /^https:\/\/cohost.org\/([a-zA-Z_\-0-9]*)\/post\/([0-9]*)-.*/;const new_loc = window.location.href.replace(regex, 'https://corobel.nora.codes/$1/$2');window.open(new_loc);})()">
          Cohost: Extract Source
        </a> to your bookmarks bar and then click on it when you're on a Cohost individual post page to download that post's source.
    </p>
    <p>
        <h3>Webfinger Resources</h3>
        Webfinger resources for accounts are provided at the Webfinger well-known URL <code>/.well-known/webfinger?project_name</code>.
    </p>
    <p>
      <h3>Technical Details</h3>
        Since 0.5.0, Corobel caches various responses to provide better service.
        <ul>
          <li>Project/account data for <b>60 seconds</b></li>
          <li>Individual posts for <b>60 seconds</b></li>
          <li>Whole RSS feeds for <b>120 seconds</b></li>
          <li>Internal HTTP responses <b>according to Cohost's settings</b></li>
        </ul>
        This means that if you update a post and then immediately request its source, you might get the old source. Just wait a few seconds.
    </p>
    <p>
        Brought to you by <a href="https://nora.codes">Leonora Tindall</a>, written in Rust with Rocket. Code is <a href="https://git.nora.codes/nora/corobel">online</a>, bug reports should go to my email nora@nora.codes.
    </p>
</body>
</html>