121 lines
34 KiB
HTML
121 lines
34 KiB
HTML
<!DOCTYPE html><html class="default no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>megalodon</title><meta name="description" content="Documentation for megalodon"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script async src="assets/search.js" id="search-script"></script></head><body><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base="."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="index.html" class="title">megalodon</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label><input type="checkbox" id="tsd-filter-externals" checked/><label class="tsd-widget" for="tsd-filter-externals">Externals</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><h1>megalodon</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><div class="tsd-panel tsd-typography">
|
|
<a href="#megalodon" id="megalodon" style="color: inherit; text-decoration: none;">
|
|
<h1>Megalodon</h1>
|
|
</a>
|
|
<p><a href="https://github.com/h3poteto/megalodon/actions?query=branch%3Amaster+workflow%3ATest"><img src="https://github.com/h3poteto/megalodon/workflows/Test/badge.svg" alt="Test"></a>
|
|
<a href="https://www.npmjs.com/package/megalodon"><img src="https://img.shields.io/npm/v/megalodon.svg" alt="NPM Version"></a>
|
|
<a href="https://github.com/h3poteto/megalodon/releases"><img src="https://img.shields.io/github/release/h3poteto/megalodon.svg" alt="GitHub release"></a>
|
|
<a href="https://www.npmjs.com/package/megalodon"><img src="https://img.shields.io/npm/dm/megalodon" alt="npm"></a>
|
|
<a href="/LICENSE.txt"><img src="https://img.shields.io/npm/l/megalodon" alt="NPM"></a></p>
|
|
<p>A Mastodon, Pleroma and Misskey API Client library for node.js and browser. It provides REST API and streaming methods.
|
|
By using this library, you can take Mastodon, Pleroma and Misskey with the same interface.</p>
|
|
|
|
<a href="#migrate-v2x-to-v300" id="migrate-v2x-to-v300" style="color: inherit; text-decoration: none;">
|
|
<h2>!!Migrate v2.x to v3.0.0</h2>
|
|
</a>
|
|
<p>There are some breaking changes, so you can not update megalodon out of the box.
|
|
Please refer <a href="migration_guide.md">migration guide</a> before you update megalodon version.</p>
|
|
|
|
<a href="#features" id="features" style="color: inherit; text-decoration: none;">
|
|
<h2>Features</h2>
|
|
</a>
|
|
<ul>
|
|
<li>REST API</li>
|
|
<li>Streaming with Server-Sent Event</li>
|
|
<li>Streaming with WebSocket</li>
|
|
<li>Promisified methods</li>
|
|
<li>Proxy support</li>
|
|
<li>Support node.js and browser</li>
|
|
<li>Written in typescript</li>
|
|
</ul>
|
|
|
|
<a href="#install" id="install" style="color: inherit; text-decoration: none;">
|
|
<h2>Install</h2>
|
|
</a>
|
|
<pre><code><span class="hl-0">$</span><span class="hl-1"> </span><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-0">install</span><span class="hl-1"> -</span><span class="hl-2">S</span><span class="hl-1"> </span><span class="hl-0">megalodon</span>
|
|
</code></pre>
|
|
<p>or</p>
|
|
<pre><code><span class="hl-0">$</span><span class="hl-1"> </span><span class="hl-0">yarn</span><span class="hl-1"> </span><span class="hl-0">add</span><span class="hl-1"> </span><span class="hl-0">megalodon</span>
|
|
</code></pre>
|
|
|
|
<a href="#build-for-browser" id="build-for-browser" style="color: inherit; text-decoration: none;">
|
|
<h3>Build for browser</h3>
|
|
</a>
|
|
<p><strong>Important</strong>: In browser, you can not use proxy.</p>
|
|
<p>If you want to build for browser, please use Webpack and set empty value for these libraries.</p>
|
|
<ul>
|
|
<li>net</li>
|
|
<li>tls</li>
|
|
<li>dns</li>
|
|
</ul>
|
|
<pre><code class="language-javascript"><span class="hl-1"> </span><span class="hl-3">node</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-3">net</span><span class="hl-1">: </span><span class="hl-4">'empty'</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">tls</span><span class="hl-1">: </span><span class="hl-4">'empty'</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-3">dns</span><span class="hl-1">: </span><span class="hl-4">'empty'</span><br/><span class="hl-1"> }</span>
|
|
</code></pre>
|
|
<p>These libraries are for node.js, so can not use in browser.</p>
|
|
<p><a href="example/browser/webpack.config.js">Here</a> is example Webpack configuration.</p>
|
|
|
|
<a href="#usage" id="usage" style="color: inherit; text-decoration: none;">
|
|
<h2>Usage</h2>
|
|
</a>
|
|
<p>I prepared <a href="example">examples</a>, and please refer <a href="https://h3poteto.github.io/megalodon/">documents</a> about each methods.</p>
|
|
<p>I explain some typical methods.
|
|
At first, please get your access token for a fediverse server.
|
|
If you don't have access token, or you want to register applications and get access token programmably, please refer <a href="#authorization">Authorization section</a>.</p>
|
|
|
|
<a href="#home-timeline" id="home-timeline" style="color: inherit; text-decoration: none;">
|
|
<h3>Home timeline</h3>
|
|
</a>
|
|
<pre><code class="language-typescript"><span class="hl-5">import</span><span class="hl-1"> </span><span class="hl-0">generator</span><span class="hl-1">, { </span><span class="hl-0">Entity</span><span class="hl-1">, </span><span class="hl-0">Response</span><span class="hl-1"> } </span><span class="hl-5">from</span><span class="hl-1"> </span><span class="hl-4">'megalodon'</span><br/><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">BASE_URL</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1"> = </span><span class="hl-4">'https://mastodon.social'</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">access_token</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1"> = </span><span class="hl-4">'...'</span><br/><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">client</span><span class="hl-1"> = </span><span class="hl-8">generator</span><span class="hl-1">(</span><span class="hl-4">'mastodon'</span><span class="hl-1">, </span><span class="hl-2">BASE_URL</span><span class="hl-1">, </span><span class="hl-0">access_token</span><span class="hl-1">)</span><br/><span class="hl-0">client</span><span class="hl-1">.</span><span class="hl-8">getHomeTimeline</span><span class="hl-1">()</span><br/><span class="hl-1"> .</span><span class="hl-8">then</span><span class="hl-1">((</span><span class="hl-0">res</span><span class="hl-1">: </span><span class="hl-7">Response</span><span class="hl-1"><</span><span class="hl-7">Array</span><span class="hl-1"><</span><span class="hl-7">Entity</span><span class="hl-1">.</span><span class="hl-7">Status</span><span class="hl-1">>>) </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">log</span><span class="hl-1">(</span><span class="hl-0">res</span><span class="hl-1">.</span><span class="hl-0">data</span><span class="hl-1">)</span><br/><span class="hl-1"> })</span>
|
|
</code></pre>
|
|
|
|
<a href="#post-toot" id="post-toot" style="color: inherit; text-decoration: none;">
|
|
<h3>Post toot</h3>
|
|
</a>
|
|
<pre><code class="language-typescript"><span class="hl-5">import</span><span class="hl-1"> </span><span class="hl-0">generator</span><span class="hl-1">, { </span><span class="hl-0">Entity</span><span class="hl-1">, </span><span class="hl-0">Response</span><span class="hl-1"> } </span><span class="hl-5">from</span><span class="hl-1"> </span><span class="hl-4">'megalodon'</span><br/><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">BASE_URL</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1"> = </span><span class="hl-4">'https://mastodon.social'</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">access_token</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1"> = </span><span class="hl-4">'...'</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">toot</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1"> = </span><span class="hl-4">'test toot'</span><br/><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">client</span><span class="hl-1"> = </span><span class="hl-8">generator</span><span class="hl-1">(</span><span class="hl-4">'mastodon'</span><span class="hl-1">, </span><span class="hl-2">BASE_URL</span><span class="hl-1">, </span><span class="hl-0">access_token</span><span class="hl-1">)</span><br/><span class="hl-0">client</span><span class="hl-1">.</span><span class="hl-8">postStatus</span><span class="hl-1">(</span><span class="hl-0">toot</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-8">then</span><span class="hl-1">((</span><span class="hl-0">res</span><span class="hl-1">: </span><span class="hl-7">Response</span><span class="hl-1"><</span><span class="hl-7">Entity</span><span class="hl-1">.</span><span class="hl-7">Status</span><span class="hl-1">>) </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">log</span><span class="hl-1">(</span><span class="hl-0">res</span><span class="hl-1">.</span><span class="hl-0">data</span><span class="hl-1">)</span><br/><span class="hl-1"> })</span>
|
|
</code></pre>
|
|
|
|
<a href="#post-medias" id="post-medias" style="color: inherit; text-decoration: none;">
|
|
<h3>Post medias</h3>
|
|
</a>
|
|
<p>Please provide a file to the argument.</p>
|
|
<pre><code class="language-typescript"><span class="hl-5">import</span><span class="hl-1"> </span><span class="hl-0">generator</span><span class="hl-1">, { </span><span class="hl-0">Entity</span><span class="hl-1">, </span><span class="hl-0">Response</span><span class="hl-1"> } </span><span class="hl-5">from</span><span class="hl-1"> </span><span class="hl-4">'megalodon'</span><br/><span class="hl-5">import</span><span class="hl-1"> </span><span class="hl-0">fs</span><span class="hl-1"> </span><span class="hl-5">from</span><span class="hl-1"> </span><span class="hl-4">'fs'</span><br/><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">BASE_URL</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1"> = </span><span class="hl-4">'https://mastodon.social'</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">access_token</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1"> = </span><span class="hl-4">'...'</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">image</span><span class="hl-1"> = </span><span class="hl-0">fs</span><span class="hl-1">.</span><span class="hl-8">readFileSync</span><span class="hl-1">(</span><span class="hl-4">"test.image"</span><span class="hl-1">)</span><br/><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">client</span><span class="hl-1"> = </span><span class="hl-8">generator</span><span class="hl-1">(</span><span class="hl-4">'mastodon'</span><span class="hl-1">, </span><span class="hl-2">BASE_URL</span><span class="hl-1">, </span><span class="hl-0">access_token</span><span class="hl-1">)</span><br/><span class="hl-0">client</span><span class="hl-1">.</span><span class="hl-8">uploadMedia</span><span class="hl-1">(</span><span class="hl-0">image</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-8">then</span><span class="hl-1">((</span><span class="hl-0">res</span><span class="hl-1">: </span><span class="hl-7">Response</span><span class="hl-1"><</span><span class="hl-7">Entity</span><span class="hl-1">.</span><span class="hl-7">Attachment</span><span class="hl-1">>) </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">log</span><span class="hl-1">(</span><span class="hl-0">res</span><span class="hl-1">.</span><span class="hl-0">data</span><span class="hl-1">)</span><br/><span class="hl-1"> })</span>
|
|
</code></pre>
|
|
|
|
<a href="#websocket-streaming" id="websocket-streaming" style="color: inherit; text-decoration: none;">
|
|
<h3>WebSocket streaming</h3>
|
|
</a>
|
|
<p>Mastodon, Pleroma and Misskey provide WebSocket for streaming.</p>
|
|
<pre><code class="language-typescript"><span class="hl-5">import</span><span class="hl-1"> </span><span class="hl-0">generator</span><span class="hl-1">, { </span><span class="hl-0">Entity</span><span class="hl-1">, </span><span class="hl-0">WebSocketInterface</span><span class="hl-1"> } </span><span class="hl-5">from</span><span class="hl-1"> </span><span class="hl-4">'megalodon'</span><br/><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">BASE_URL</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1"> = </span><span class="hl-4">'wss://pleroma.io'</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">access_token</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1"> = </span><span class="hl-4">'...'</span><br/><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">client</span><span class="hl-1"> = </span><span class="hl-8">generator</span><span class="hl-1">(</span><span class="hl-4">'pleroma'</span><span class="hl-1">, </span><span class="hl-2">BASE_URL</span><span class="hl-1">, </span><span class="hl-0">access_token</span><span class="hl-1">)</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">stream</span><span class="hl-1">: </span><span class="hl-7">WebSocketInterface</span><span class="hl-1"> = </span><span class="hl-0">client</span><span class="hl-1">.</span><span class="hl-8">userSocket</span><span class="hl-1">()</span><br/><br/><span class="hl-0">stream</span><span class="hl-1">.</span><span class="hl-8">on</span><span class="hl-1">(</span><span class="hl-4">'connect'</span><span class="hl-1">, () </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">log</span><span class="hl-1">(</span><span class="hl-4">'connect'</span><span class="hl-1">)</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-0">stream</span><span class="hl-1">.</span><span class="hl-8">on</span><span class="hl-1">(</span><span class="hl-4">'update'</span><span class="hl-1">, (</span><span class="hl-0">status</span><span class="hl-1">: </span><span class="hl-7">Entity</span><span class="hl-1">.</span><span class="hl-7">Status</span><span class="hl-1">) </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">log</span><span class="hl-1">(</span><span class="hl-0">status</span><span class="hl-1">)</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-0">stream</span><span class="hl-1">.</span><span class="hl-8">on</span><span class="hl-1">(</span><span class="hl-4">'notification'</span><span class="hl-1">, (</span><span class="hl-0">notification</span><span class="hl-1">: </span><span class="hl-7">Entity</span><span class="hl-1">.</span><span class="hl-7">Notification</span><span class="hl-1">) </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">log</span><span class="hl-1">(</span><span class="hl-0">notification</span><span class="hl-1">)</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-0">stream</span><span class="hl-1">.</span><span class="hl-8">on</span><span class="hl-1">(</span><span class="hl-4">'delete'</span><span class="hl-1">, (</span><span class="hl-0">id</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">) </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">log</span><span class="hl-1">(</span><span class="hl-0">id</span><span class="hl-1">)</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-0">stream</span><span class="hl-1">.</span><span class="hl-8">on</span><span class="hl-1">(</span><span class="hl-4">'error'</span><span class="hl-1">, (</span><span class="hl-0">err</span><span class="hl-1">: </span><span class="hl-7">Error</span><span class="hl-1">) </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">error</span><span class="hl-1">(</span><span class="hl-0">err</span><span class="hl-1">)</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-0">stream</span><span class="hl-1">.</span><span class="hl-8">on</span><span class="hl-1">(</span><span class="hl-4">'heartbeat'</span><span class="hl-1">, () </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">log</span><span class="hl-1">(</span><span class="hl-4">'thump.'</span><span class="hl-1">)</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-0">stream</span><span class="hl-1">.</span><span class="hl-8">on</span><span class="hl-1">(</span><span class="hl-4">'close'</span><span class="hl-1">, () </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">log</span><span class="hl-1">(</span><span class="hl-4">'close'</span><span class="hl-1">)</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-0">stream</span><span class="hl-1">.</span><span class="hl-8">on</span><span class="hl-1">(</span><span class="hl-4">'parser-error'</span><span class="hl-1">, (</span><span class="hl-0">err</span><span class="hl-1">: </span><span class="hl-7">Error</span><span class="hl-1">) </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">error</span><span class="hl-1">(</span><span class="hl-0">err</span><span class="hl-1">)</span><br/><span class="hl-1">})</span>
|
|
</code></pre>
|
|
|
|
<a href="#http-streaming" id="http-streaming" style="color: inherit; text-decoration: none;">
|
|
<h3>HTTP Streaming</h3>
|
|
</a>
|
|
<p>Mastodon provides HTTP streaming.</p>
|
|
<pre><code class="language-typescript"><span class="hl-5">import</span><span class="hl-1"> </span><span class="hl-0">generator</span><span class="hl-1">, { </span><span class="hl-0">Entity</span><span class="hl-1">, </span><span class="hl-0">StreamListenerInterface</span><span class="hl-1"> } </span><span class="hl-5">from</span><span class="hl-1"> </span><span class="hl-4">'megalodon'</span><br/><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">BASE_URL</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1"> = </span><span class="hl-4">'https://mastodon.social'</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">access_token</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1"> = </span><span class="hl-4">'...'</span><br/><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">client</span><span class="hl-1"> = </span><span class="hl-8">generator</span><span class="hl-1">(</span><span class="hl-4">'mastodon'</span><span class="hl-1">, </span><span class="hl-2">BASE_URL</span><span class="hl-1">, </span><span class="hl-0">access_token</span><span class="hl-1">)</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">stream</span><span class="hl-1">: </span><span class="hl-7">StreamListenerInterface</span><br/><br/><span class="hl-0">stream</span><span class="hl-1">.</span><span class="hl-8">on</span><span class="hl-1">(</span><span class="hl-4">'update'</span><span class="hl-1">, (</span><span class="hl-0">status</span><span class="hl-1">: </span><span class="hl-7">Entity</span><span class="hl-1">.</span><span class="hl-7">Status</span><span class="hl-1">) </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">log</span><span class="hl-1">(</span><span class="hl-0">status</span><span class="hl-1">)</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-0">stream</span><span class="hl-1">.</span><span class="hl-8">on</span><span class="hl-1">(</span><span class="hl-4">'notification'</span><span class="hl-1">, (</span><span class="hl-0">notification</span><span class="hl-1">: </span><span class="hl-7">Entity</span><span class="hl-1">.</span><span class="hl-7">Notification</span><span class="hl-1">) </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">log</span><span class="hl-1">(</span><span class="hl-0">notification</span><span class="hl-1">)</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-0">stream</span><span class="hl-1">.</span><span class="hl-8">on</span><span class="hl-1">(</span><span class="hl-4">'delete'</span><span class="hl-1">, (</span><span class="hl-0">id</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">) </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">log</span><span class="hl-1">(</span><span class="hl-0">id</span><span class="hl-1">)</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-0">stream</span><span class="hl-1">.</span><span class="hl-8">on</span><span class="hl-1">(</span><span class="hl-4">'error'</span><span class="hl-1">, (</span><span class="hl-0">err</span><span class="hl-1">: </span><span class="hl-7">Error</span><span class="hl-1">) </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">error</span><span class="hl-1">(</span><span class="hl-0">err</span><span class="hl-1">)</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-0">stream</span><span class="hl-1">.</span><span class="hl-8">on</span><span class="hl-1">(</span><span class="hl-4">'heartbeat'</span><span class="hl-1">, () </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">log</span><span class="hl-1">(</span><span class="hl-4">'thump.'</span><span class="hl-1">)</span><br/><span class="hl-1">})</span>
|
|
</code></pre>
|
|
|
|
<a href="#authorization" id="authorization" style="color: inherit; text-decoration: none;">
|
|
<h3>Authorization</h3>
|
|
</a>
|
|
<p>You can register applications, and get access tokens to use this method.</p>
|
|
<pre><code class="language-typescript"><span class="hl-5">import</span><span class="hl-1"> </span><span class="hl-0">generator</span><span class="hl-1">, { </span><span class="hl-0">OAuth</span><span class="hl-1"> } </span><span class="hl-5">from</span><span class="hl-1"> </span><span class="hl-4">'megalodon'</span><br/><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">BASE_URL</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1"> = </span><span class="hl-4">'https://mastodon.social'</span><br/><br/><span class="hl-6">let</span><span class="hl-1"> </span><span class="hl-0">clientId</span><span class="hl-1">: </span><span class="hl-7">string</span><br/><span class="hl-6">let</span><span class="hl-1"> </span><span class="hl-0">clientSecret</span><span class="hl-1">: </span><span class="hl-7">string</span><br/><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">client</span><span class="hl-1"> = </span><span class="hl-8">generator</span><span class="hl-1">(</span><span class="hl-4">'mastodon'</span><span class="hl-1">, </span><span class="hl-2">BASE_URL</span><span class="hl-1">)</span><br/><br/><span class="hl-0">client</span><span class="hl-1">.</span><span class="hl-8">registerApp</span><span class="hl-1">(</span><span class="hl-4">'Test App'</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-8">then</span><span class="hl-1">(</span><span class="hl-0">appData</span><span class="hl-1"> </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">clientId</span><span class="hl-1"> = </span><span class="hl-0">appData</span><span class="hl-1">.</span><span class="hl-0">clientId</span><br/><span class="hl-1"> </span><span class="hl-0">clientSecret</span><span class="hl-1"> = </span><span class="hl-0">appData</span><span class="hl-1">.</span><span class="hl-0">clientSecret</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">log</span><span class="hl-1">(</span><span class="hl-4">'Authorization URL is generated.'</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">log</span><span class="hl-1">(</span><span class="hl-0">appData</span><span class="hl-1">.</span><span class="hl-0">url</span><span class="hl-1">)</span><br/><span class="hl-1"> })</span>
|
|
</code></pre>
|
|
<p>Please open <code>Autorhization URL</code> in your browser, and authorize this app.
|
|
In this time, you can get authorization code.</p>
|
|
<p>After that, get an access token.</p>
|
|
<pre><code class="language-typescript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">code</span><span class="hl-1"> = </span><span class="hl-4">'...'</span><span class="hl-1"> </span><span class="hl-9">// Authorization code</span><br/><br/><span class="hl-0">client</span><span class="hl-1">.</span><span class="hl-8">fetchAccessToken</span><span class="hl-1">(</span><span class="hl-0">clientId</span><span class="hl-1">, </span><span class="hl-0">clientSecret</span><span class="hl-1">, </span><span class="hl-0">code</span><span class="hl-1">)</span><br/><span class="hl-1">})</span><br/><span class="hl-1"> .</span><span class="hl-8">then</span><span class="hl-1">((</span><span class="hl-0">tokenData</span><span class="hl-1">: </span><span class="hl-7">OAuth</span><span class="hl-1">.</span><span class="hl-7">TokenData</span><span class="hl-1">) </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">log</span><span class="hl-1">(</span><span class="hl-0">tokenData</span><span class="hl-1">.</span><span class="hl-0">accessToken</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">log</span><span class="hl-1">(</span><span class="hl-0">tokenData</span><span class="hl-1">.</span><span class="hl-0">refreshToken</span><span class="hl-1">)</span><br/><span class="hl-1"> })</span><br/><span class="hl-1"> .</span><span class="hl-8">catch</span><span class="hl-1">((</span><span class="hl-0">err</span><span class="hl-1">: </span><span class="hl-7">Error</span><span class="hl-1">) </span><span class="hl-6">=></span><span class="hl-1"> </span><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">error</span><span class="hl-1">(</span><span class="hl-0">err</span><span class="hl-1">))</span>
|
|
</code></pre>
|
|
|
|
<a href="#detect-each-sns" id="detect-each-sns" style="color: inherit; text-decoration: none;">
|
|
<h3>Detect each SNS</h3>
|
|
</a>
|
|
<p>You have to provide SNS name <code>mastodon</code>, <code>pleroma</code> or <code>misskey</code> to <code>generator</code> function.
|
|
But when you only know the URL and not the SNS, <code>detector</code> function can detect the SNS.</p>
|
|
<pre><code class="language-typescript"><span class="hl-5">import</span><span class="hl-1"> { </span><span class="hl-0">detector</span><span class="hl-1"> } </span><span class="hl-5">from</span><span class="hl-1"> </span><span class="hl-4">'megalodon'</span><br/><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">URL</span><span class="hl-1"> = </span><span class="hl-4">'https://misskey.io'</span><br/><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-2">sns</span><span class="hl-1"> = </span><span class="hl-5">await</span><span class="hl-1"> </span><span class="hl-8">detector</span><span class="hl-1">(</span><span class="hl-2">URL</span><span class="hl-1">)</span><br/><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-8">log</span><span class="hl-1">(</span><span class="hl-0">sns</span><span class="hl-1">)</span>
|
|
</code></pre>
|
|
|
|
<a href="#license" id="license" style="color: inherit; text-decoration: none;">
|
|
<h2>License</h2>
|
|
</a>
|
|
<p>The software is available as open source under the terms of the <a href="https://opensource.org/licenses/MIT">MIT License</a>.</p>
|
|
</div></div><div class="col-4 col-menu menu-sticky-wrap menu-highlight"><nav class="tsd-navigation primary"><ul><li class="current"><a href="modules.html">Exports</a></li><li class=" tsd-kind-namespace"><a href="modules/Entity.html">Entity</a></li><li class=" tsd-kind-namespace"><a href="modules/FilterContext.html">Filter<wbr/>Context</a></li><li class=" tsd-kind-namespace"><a href="modules/NotificationType.html">Notification<wbr/>Type</a></li><li class=" tsd-kind-namespace"><a href="modules/OAuth.html">OAuth</a></li></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="tsd-kind-class"><a href="classes/Mastodon.html" class="tsd-kind-icon">Mastodon</a></li><li class="tsd-kind-class"><a href="classes/Misskey.html" class="tsd-kind-icon">Misskey</a></li><li class="tsd-kind-class"><a href="classes/Pleroma.html" class="tsd-kind-icon">Pleroma</a></li><li class="tsd-kind-class"><a href="classes/RequestCanceledError.html" class="tsd-kind-icon">Request<wbr/>Canceled<wbr/>Error</a></li><li class="tsd-kind-interface"><a href="interfaces/MegalodonInterface.html" class="tsd-kind-icon">Megalodon<wbr/>Interface</a></li><li class="tsd-kind-interface"><a href="interfaces/StreamListenerInterface.html" class="tsd-kind-icon">Stream<wbr/>Listener<wbr/>Interface</a></li><li class="tsd-kind-interface"><a href="interfaces/WebSocketInterface.html" class="tsd-kind-icon">Web<wbr/>Socket<wbr/>Interface</a></li><li class="tsd-kind-type-alias"><a href="modules.html#ProxyConfig" class="tsd-kind-icon">Proxy<wbr/>Config</a></li><li class="tsd-kind-type-alias tsd-has-type-parameter"><a href="modules.html#Response" class="tsd-kind-icon">Response</a></li><li class="tsd-kind-function"><a href="modules.html#default" class="tsd-kind-icon">default</a></li><li class="tsd-kind-function"><a href="modules.html#detector" class="tsd-kind-icon">detector</a></li><li class="tsd-kind-function"><a href="modules.html#isCancel" class="tsd-kind-icon">is<wbr/>Cancel</a></li></ul></nav></div></div></div><footer class="with-border-bottom"><div class="container"><h2>Legend</h2><div class="tsd-legend-group"><ul class="tsd-legend"><li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li><li class="tsd-kind-property tsd-parent-kind-class"><span class="tsd-kind-icon">Property</span></li><li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-method tsd-parent-kind-interface"><span class="tsd-kind-icon">Method</span></li></ul></div><h2>Settings</h2><p>Theme <select id="theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></p></div></footer><div class="container tsd-generator"><p>Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></div><div class="overlay"></div><script src="assets/main.js"></script></body></html> |