Mastodon の API を叩くには以下の手順を踏む必要がある:
- OAuth2 クライアントを登録する
- アクセストークンを取得する
- アクセストークンを
Authorization
ヘッダに指定して API にアクセスする
Mastodon の Apps API に登録情報を送ってクライアントを払い出してもらう(一度だけやれば OK).
Mastodon が他のインスタンスと情報交換をする OStatus API の使い方。使ってるだけのユーザは知る必要がない裏側の話。
Mastodon インスタンスに対して、RFC6415 が規定する /.well-known/host-meta
というパスを要求すると以下の XML が返ってくる.
<?xml version="1.0"?>
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
<Link rel="lrdd" type="application/xrd+xml" template="https://[MASTODON_HOST]/.well-known/webfinger?resource={uri}"/>
</XRD>
using System; | |
struct ChainingComparable<T> | |
where T : IComparable<T> | |
{ | |
private T _value; | |
public ChainingComparable(T value) => _value = value; | |
public static implicit operator ChainingComparable<T>(T x) => new ChainingComparable<T>(x); | |
public static implicit operator T(ChainingComparable<T> x) => x._value; | |
public override string ToString() => _value.ToString(); |
Estimated time: 10 minutes
/* | |
This snippet is esssentially the same as being in the Twitter longer tweets test, for tweetdeck. | |
The Tweet length counter is fixed by tricking TweetDeck into counting up to 140 characters, twice, so you'll see 140 | |
instead of 280 in the counter but going over 140 will give you another set of 140 charactrs. | |
*/ | |
TD.services.TwitterClient.prototype.makeTwitterCall=function(b,e,f,g,c,d,h){c=c||function(){};d=d||function(){};b=this.request(b,{method:f,params:Object.assign(e,{weighted_character_count:!0}),processor:g,feedType:h});return b.addCallbacks(function(a){c(a.data)},function(a){d(a.req,"",a.msg,a.req.errors)}),b}; | |
twttrTxt=Object.assign({},twttr.txt,{isInvalidTweet:function(){return!1},getTweetLength:function(x){return x=twttr.txt.getTweetLength.apply(this,arguments),x<140||x/140>2?x:x%140}}); |
-----BEGIN PGP PUBLIC KEY BLOCK----- | |
mQINBFZwSl0BEADMMpK3813g3DEY8A6aEVlhp9XMfVYUelF5gLVsp/f0G8QUplLp | |
SdKktGmbQS7g1Jaagl6tKLiTgE5lms8QetfUiZii9S2rI55ZLJ8fXSa7mNMehFkl | |
0FsBBLvoB6rccYBE2SrAd6FfdDmDui043hebXCokvis9sPH2yn8OUuTtpMkAMMz9 | |
gdWOFPKD+dERNXIPy867YCse22mUhqz4W6ndO7CTVS/ZGfxQJLVqgbMQptYj8A2R | |
6wJmODE4dLDcguXfm32J5iwLpJ1Aj0RTK04XP0Tj2W7Agv9st2je7ri50R8PsLMr | |
6Q3SSE1RQIFLB52Bx3fwwYE1xVYCQ4y5hQlGhG6DlnsDpleETBcN29GjBazrzYqz | |
M2cSqoDCzScAhMMcNS7ea/Z9z/irst2gcVdwsuXKheDmzR1rhi/MD1xADokfphuB | |
3kioRxGtAhDD011bJukEI2yi+yVf3jKom6M012WZ5mFOCaj53UYIwByPbCh1hGRl |
#include <mach/mach_init.h> | |
#include <mach/port.h> | |
#include <sys/wait.h> | |
#include <unistd.h> | |
#include <stdio.h> | |
int main() { | |
for (;;) { | |
pid_t pid = fork(); | |
if (pid == 0) execv("/usr/bin/true", NULL); |
nodedef>name VARCHAR,label VARCHAR | |
1,social.touha.me | |
2,gs.jonkman.ca | |
3,m.bonzoesc.net | |
4,social.consumium.org | |
5,occitanie.social | |
6,redwombat.social | |
7,community.highlandarrow.com | |
8,mastodon.daiko.fr | |
9,mastodon.noraworld.jp |