Add converter for pleroma

This commit is contained in:
AkiraFukushima 2020-02-21 19:21:39 +09:00
parent 6333115c9d
commit 3bd3e6df5b
3 changed files with 68 additions and 39 deletions

View file

@ -381,39 +381,39 @@ namespace MastodonAPI {
}
export namespace Converter {
export const account = (a: MastodonEntity.Account): MegalodonEntity.Account => a
export const activity = (a: MastodonEntity.Activity): MegalodonEntity.Activity => a
export const application = (a: MastodonEntity.Application): MegalodonEntity.Application => a
export const attachment = (a: MastodonEntity.Attachment): MegalodonEntity.Attachment => a
export const card = (c: MastodonEntity.Card): MegalodonEntity.Card => c
export const context = (c: MastodonEntity.Context): MegalodonEntity.Context => c
export const conversation = (c: MastodonEntity.Conversation): MegalodonEntity.Conversation => c
export const emoji = (e: MastodonEntity.Emoji): MegalodonEntity.Emoji => e
export const featured_tag = (e: MastodonEntity.FeaturedTag): MegalodonEntity.FeaturedTag => e
export const field = (f: MastodonEntity.Field): MegalodonEntity.Field => f
export const filter = (f: MastodonEntity.Filter): MegalodonEntity.Filter => f
export const history = (h: MastodonEntity.History): MegalodonEntity.History => h
export const identity_proof = (i: MastodonEntity.IdentityProof): MegalodonEntity.IdentityProof => i
export const instance = (i: MastodonEntity.Instance): MegalodonEntity.Instance => i
export const list = (l: MastodonEntity.List): MegalodonEntity.List => l
export const marker = (m: MastodonEntity.Marker): MegalodonEntity.Marker => m
export const mention = (m: MastodonEntity.Mention): MegalodonEntity.Mention => m
export const notification = (n: MastodonEntity.Notification): MegalodonEntity.Notification => n
export const poll = (p: MastodonEntity.Poll): MegalodonEntity.Poll => p
export const poll_option = (p: MastodonEntity.PollOption): MegalodonEntity.PollOption => p
export const preferences = (p: MastodonEntity.Preferences): MegalodonEntity.Preferences => p
export const push_subscription = (p: MastodonEntity.PushSubscription): MegalodonEntity.PushSubscription => p
export const relationship = (r: MastodonEntity.Relationship): MegalodonEntity.Relationship => r
export const report = (r: MastodonEntity.Report): MegalodonEntity.Report => r
export const results = (r: MastodonEntity.Results): MegalodonEntity.Results => r
export const scheduled_status = (s: MastodonEntity.ScheduledStatus): MegalodonEntity.ScheduledStatus => s
export const source = (s: MastodonEntity.Source): MegalodonEntity.Source => s
export const stats = (s: MastodonEntity.Stats): MegalodonEntity.Stats => s
export const status = (s: MastodonEntity.Status): MegalodonEntity.Status => s
export const status_params = (s: MastodonEntity.StatusParams): MegalodonEntity.StatusParams => s
export const tag = (t: MastodonEntity.Tag): MegalodonEntity.Tag => t
export const token = (t: MastodonEntity.Token): MegalodonEntity.Token => t
export const urls = (u: MastodonEntity.URLs): MegalodonEntity.URLs => u
export const account = (a: Entity.Account): MegalodonEntity.Account => a
export const activity = (a: Entity.Activity): MegalodonEntity.Activity => a
export const application = (a: Entity.Application): MegalodonEntity.Application => a
export const attachment = (a: Entity.Attachment): MegalodonEntity.Attachment => a
export const card = (c: Entity.Card): MegalodonEntity.Card => c
export const context = (c: Entity.Context): MegalodonEntity.Context => c
export const conversation = (c: Entity.Conversation): MegalodonEntity.Conversation => c
export const emoji = (e: Entity.Emoji): MegalodonEntity.Emoji => e
export const featured_tag = (e: Entity.FeaturedTag): MegalodonEntity.FeaturedTag => e
export const field = (f: Entity.Field): MegalodonEntity.Field => f
export const filter = (f: Entity.Filter): MegalodonEntity.Filter => f
export const history = (h: Entity.History): MegalodonEntity.History => h
export const identity_proof = (i: Entity.IdentityProof): MegalodonEntity.IdentityProof => i
export const instance = (i: Entity.Instance): MegalodonEntity.Instance => i
export const list = (l: Entity.List): MegalodonEntity.List => l
export const marker = (m: Entity.Marker): MegalodonEntity.Marker => m
export const mention = (m: Entity.Mention): MegalodonEntity.Mention => m
export const notification = (n: Entity.Notification): MegalodonEntity.Notification => n
export const poll = (p: Entity.Poll): MegalodonEntity.Poll => p
export const poll_option = (p: Entity.PollOption): MegalodonEntity.PollOption => p
export const preferences = (p: Entity.Preferences): MegalodonEntity.Preferences => p
export const push_subscription = (p: Entity.PushSubscription): MegalodonEntity.PushSubscription => p
export const relationship = (r: Entity.Relationship): MegalodonEntity.Relationship => r
export const report = (r: Entity.Report): MegalodonEntity.Report => r
export const results = (r: Entity.Results): MegalodonEntity.Results => r
export const scheduled_status = (s: Entity.ScheduledStatus): MegalodonEntity.ScheduledStatus => s
export const source = (s: Entity.Source): MegalodonEntity.Source => s
export const stats = (s: Entity.Stats): MegalodonEntity.Stats => s
export const status = (s: Entity.Status): MegalodonEntity.Status => s
export const status_params = (s: Entity.StatusParams): MegalodonEntity.StatusParams => s
export const tag = (t: Entity.Tag): MegalodonEntity.Tag => t
export const token = (t: Entity.Token): MegalodonEntity.Token => t
export const urls = (u: Entity.URLs): MegalodonEntity.URLs => u
}
}
export default MastodonAPI

View file

@ -3,12 +3,13 @@ import Mastodon from './mastodon'
import StreamListener from './stream_listener'
import Response from './response'
import Entity from './entity'
import PleromaAPI from './pleroma/api_client'
export default class Pleroma extends Mastodon implements MegalodonInterface {
// ======================================
// accounts
// ======================================
public getAccountFavourites(
public async getAccountFavourites(
id: string,
limit?: number | null,
max_id?: string | null,
@ -30,15 +31,27 @@ export default class Pleroma extends Mastodon implements MegalodonInterface {
since_id: since_id
})
}
return this.client.get<Array<Entity.Status>>(`/api/v1/pleroma/accounts/${id}/favourites`, params)
return this.client.get<Array<PleromaAPI.Entity.Status>>(`/api/v1/pleroma/accounts/${id}/favourites`, params).then(res => {
return Object.assign(res, {
data: res.data.map(s => PleromaAPI.Converter.status(s))
})
})
}
public subscribeAccount(id: string): Promise<Response<Entity.Relationship>> {
return this.client.post<Entity.Relationship>(`/api/v1/pleroma/accounts/${id}/subscribe`)
public async subscribeAccount(id: string): Promise<Response<Entity.Relationship>> {
return this.client.post<PleromaAPI.Entity.Relationship>(`/api/v1/pleroma/accounts/${id}/subscribe`).then(res => {
return Object.assign(res, {
data: PleromaAPI.Converter.relationship(res.data)
})
})
}
public unsubscribeAccount(id: string): Promise<Response<Entity.Relationship>> {
return this.client.post<Entity.Relationship>(`/api/v1/pleroma/accounts/${id}/unsubscribe`)
public async unsubscribeAccount(id: string): Promise<Response<Entity.Relationship>> {
return this.client.post<PleromaAPI.Entity.Relationship>(`/api/v1/pleroma/accounts/${id}/unsubscribe`).then(res => {
return Object.assign(res, {
data: PleromaAPI.Converter.relationship(res.data)
})
})
}
// ======================================

16
src/pleroma/api_client.ts Normal file
View file

@ -0,0 +1,16 @@
import MastodonAPI from '../mastodon/api_client'
import MegalodonEntity from '../entity'
namespace PleromaAPI {
export namespace Entity {
export type Status = MastodonAPI.Entity.Status
export type Relationship = MastodonAPI.Entity.Relationship
}
export namespace Converter {
export const status = (s: Entity.Status): MegalodonEntity.Status => s
export const relationship = (r: Entity.Relationship): MegalodonEntity.Relationship => r
}
}
export default PleromaAPI