From 0aa115f8f821f079d3cf3c85f08a4f2c037069be Mon Sep 17 00:00:00 2001 From: cutls Date: Sun, 5 Feb 2023 00:06:00 +0900 Subject: [PATCH] 5.1.9 --- example/typescript/package.json | 1 + example/typescript/src/misskey/timeline.ts | 10 ++-- megalodon/src/converter.ts | 3 ++ megalodon/src/index.ts | 4 +- megalodon/src/misskey.ts | 1 + megalodon/src/misskey/api_client.ts | 56 ++++++++++++++++------ yarn.lock | 19 ++++++++ 7 files changed, 74 insertions(+), 20 deletions(-) create mode 100644 megalodon/src/converter.ts diff --git a/example/typescript/package.json b/example/typescript/package.json index 08c6f0e..5b24cc0 100644 --- a/example/typescript/package.json +++ b/example/typescript/package.json @@ -8,6 +8,7 @@ "author": "h3poteto", "license": "MIT", "dependencies": { + "@cutls/megalodon": "5.1.6", "megalodon": "*", "typescript": "4.9.4" }, diff --git a/example/typescript/src/misskey/timeline.ts b/example/typescript/src/misskey/timeline.ts index 7d3103b..fe37ac2 100644 --- a/example/typescript/src/misskey/timeline.ts +++ b/example/typescript/src/misskey/timeline.ts @@ -1,4 +1,4 @@ -import generator, { MegalodonInterface, Entity, Response } from 'megalodon' +import generator, { MegalodonInterface, Entity, Response, Converter } from '@cutls/megalodon' declare var process: { env: { @@ -6,15 +6,15 @@ declare var process: { } } -const BASE_URL: string = 'https://misskey.io' +const BASE_URL: string = 'https://chkukfsatpl3.cutls.dev' -const access_token: string = process.env.MISSKEY_ACCESS_TOKEN +const access_token: string = process.env.MISSKEY_ACCESS_TOKEN || '8zrWrxUIBNQ0kWUw' const client: MegalodonInterface = generator('misskey', BASE_URL, access_token) client - .getHomeTimeline() + .getLocalTimeline() .then((resp: Response>) => { - console.log(resp.data) + console.log(resp.data.map((t) => t.emojis)) }) .catch(err => console.error(err)) diff --git a/megalodon/src/converter.ts b/megalodon/src/converter.ts new file mode 100644 index 0000000..113be82 --- /dev/null +++ b/megalodon/src/converter.ts @@ -0,0 +1,3 @@ +import MisskeyAPI from "./misskey/api_client"; + +export default MisskeyAPI.Converter \ No newline at end of file diff --git a/megalodon/src/index.ts b/megalodon/src/index.ts index 246b773..d6fd9b6 100644 --- a/megalodon/src/index.ts +++ b/megalodon/src/index.ts @@ -9,6 +9,7 @@ import Misskey from './misskey' import Entity from './entity' import NotificationType from './notification' import FilterContext from './filter_context' +import Converter from './converter' export { Response, @@ -24,7 +25,8 @@ export { Mastodon, Pleroma, Misskey, - Entity + Entity, + Converter } export default generator diff --git a/megalodon/src/misskey.ts b/megalodon/src/misskey.ts index c3288e1..5dbb7a8 100644 --- a/megalodon/src/misskey.ts +++ b/megalodon/src/misskey.ts @@ -57,6 +57,7 @@ export default class Misskey implements MegalodonInterface { }) } + /** * POST /api/app/create * diff --git a/megalodon/src/misskey/api_client.ts b/megalodon/src/misskey/api_client.ts index 5213e38..dc4e830 100644 --- a/megalodon/src/misskey/api_client.ts +++ b/megalodon/src/misskey/api_client.ts @@ -52,13 +52,13 @@ namespace MisskeyAPI { } export const emojiConverter = (e: MisskeyEntity.EmojiKeyValue | MisskeyEntity.Emoji[]) => { + if (!e) return [] if (isEmojiArr(e)) return e - const emojiKeys = Object.keys(e) - const emojiArr: MisskeyEntity.Emoji[] = emojiKeys.map((emoji, i) => { + const emojiArr: MisskeyEntity.Emoji[] = Object.entries(e).map(([key, value], i) => { return { - name: emojiKeys[i], + name: key, host: null, - url: emoji, + url: value, aliases: [] } }) @@ -67,8 +67,10 @@ namespace MisskeyAPI { export const user = (u: Entity.User): MegalodonEntity.Account => { let acct = u.username + let acctUrl = `https://${u.host || 'example.com'}/@${u.username}` if (u.host) { acct = `${u.username}@${u.host}` + acctUrl = `https://${u.host}/@${u.username}` } return { id: u.id, @@ -76,27 +78,29 @@ namespace MisskeyAPI { acct: acct, display_name: u.name, locked: false, - created_at: '', + created_at: new Date().toISOString(), followers_count: 0, following_count: 0, statuses_count: 0, note: '', - url: acct, + url: acctUrl, avatar: u.avatarUrl, - avatar_static: u.avatarColor, + avatar_static: u.avatarUrl, header: '', header_static: '', emojis: emojiConverter(u.emojis).map(e => emoji(e)), moved: null, fields: [], - bot: null + bot: false } } export const userDetail = (u: Entity.UserDetail): MegalodonEntity.Account => { let acct = u.username + let acctUrl = `https://${u.host || 'example.com'}/@${u.username}` if (u.host) { acct = `${u.username}@${u.host}` + acctUrl = `https://${u.host}/@${u.username}` } return { id: u.id, @@ -109,15 +113,15 @@ namespace MisskeyAPI { following_count: u.followingCount, statuses_count: u.notesCount, note: u.description, - url: acct, + url: acctUrl, avatar: u.avatarUrl, - avatar_static: u.avatarColor, + avatar_static: u.avatarUrl, header: u.bannerUrl, - header_static: u.bannerColor, + header_static: u.bannerUrl, emojis: emojiConverter(u.emojis).map(e => emoji(e)), moved: null, fields: [], - bot: u.isBot + bot: u.isBot || false } } @@ -248,7 +252,7 @@ namespace MisskeyAPI { : '', plain_content: n.text ? n.text : null, created_at: n.createdAt, - emojis: n.emojis.map(e => emoji(e)), + emojis: emojiConverter(n.emojis).map(e => emoji(e)), replies_count: n.repliesCount, reblogs_count: n.renoteCount, favourites_count: 0, @@ -366,11 +370,35 @@ namespace MisskeyAPI { return e } } + const modelOfAcct = { + id: "1", + username: 'none', + acct: 'none', + display_name: 'none', + locked: true, + bot: true, + discoverable: false, + group: false, + created_at: '1971-01-01T00:00:00.000Z', + note: '', + url: 'https://example.com', + avatar: '/missing', + avatar_static: '/missing', + header: '/missing', + header_static: '/missing', + followers_count: -1, + following_count: 0, + statuses_count: 0, + last_status_at: '1971-01-01T00:00:00.000Z', + noindex: true, + emojis: [], + fields: [] + } export const notification = (n: Entity.Notification): MegalodonEntity.Notification => { let notification = { id: n.id, - account: user(n.user), + account: n.user ? user(n.user) : modelOfAcct, created_at: n.createdAt, type: decodeNotificationType(n.type) } diff --git a/yarn.lock b/yarn.lock index 9962ae2..2ce9121 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3927,6 +3927,25 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" +megalodon@*: + version "5.1.1" + resolved "https://registry.yarnpkg.com/megalodon/-/megalodon-5.1.1.tgz#291050f335da302689b46ad47155971a84c6ca58" + integrity sha512-zsYzzmogmk9lnXzGk3kKv58LUmZVFMebiya/1CZqZYnBVxq18Ep8l1AU41o+INANMqYxG+hAQvJhE+Z5dcUabQ== + dependencies: + "@types/oauth" "^0.9.0" + "@types/ws" "^8.5.4" + axios "1.2.2" + dayjs "^1.11.7" + form-data "^4.0.0" + https-proxy-agent "^5.0.1" + oauth "^0.10.0" + object-assign-deep "^0.4.0" + parse-link-header "^2.0.0" + socks-proxy-agent "^7.0.0" + typescript "4.9.4" + uuid "^9.0.0" + ws "8.12.0" + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"