mirror of
https://git.joinsharkey.org/Sharkey/Sharkey.git
synced 2024-11-30 03:13:10 +02:00
upd: attempt to accept file during update
This commit is contained in:
parent
8b55fc7917
commit
0fe5e8738c
3 changed files with 72 additions and 36 deletions
|
@ -236,14 +236,20 @@ export class MastodonApiServerService {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
fastify.patch('/v1/accounts/update_credentials', { preHandler: upload.none() }, async (_request, reply) => {
|
fastify.patch('/v1/accounts/update_credentials', { preHandler: upload.single('file') }, async (_request, reply) => {
|
||||||
const BASE_URL = `${_request.protocol}://${_request.hostname}`;
|
const BASE_URL = `${_request.protocol}://${_request.hostname}`;
|
||||||
const accessTokens = _request.headers.authorization;
|
const accessTokens = _request.headers.authorization;
|
||||||
const client = getClient(BASE_URL, accessTokens); // we are using this here, because in private mode some info isnt
|
const client = getClient(BASE_URL, accessTokens); // we are using this here, because in private mode some info isnt
|
||||||
// displayed without being logged in
|
// displayed without being logged in
|
||||||
try {
|
try {
|
||||||
const data = await client.updateCredentials(_request.body!);
|
const multipartData = await _request.file;
|
||||||
reply.send(convertAccount(data.data));
|
if (!multipartData) {
|
||||||
|
const data = await client.updateCredentials(_request.body!);
|
||||||
|
reply.send(convertAccount(data.data));
|
||||||
|
} else {
|
||||||
|
const data = await client.updateCredentials(_request.body!, multipartData);
|
||||||
|
reply.send(convertAccount(data.data));
|
||||||
|
}
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
/* console.error(e); */
|
/* console.error(e); */
|
||||||
reply.code(401).send(e.response.data);
|
reply.code(401).send(e.response.data);
|
||||||
|
|
|
@ -149,7 +149,7 @@ export interface MegalodonInterface {
|
||||||
language?: string
|
language?: string
|
||||||
}
|
}
|
||||||
fields_attributes?: Array<{ name: string; value: string }>
|
fields_attributes?: Array<{ name: string; value: string }>
|
||||||
}): Promise<Response<Entity.Account>>
|
}, file?: any): Promise<Response<Entity.Account>>
|
||||||
/**
|
/**
|
||||||
* View information about a profile.
|
* View information about a profile.
|
||||||
*
|
*
|
||||||
|
|
|
@ -220,47 +220,77 @@ export default class Misskey implements MegalodonInterface {
|
||||||
language?: string
|
language?: string
|
||||||
} | null
|
} | null
|
||||||
fields_attributes?: Array<{ name: string; value: string }>
|
fields_attributes?: Array<{ name: string; value: string }>
|
||||||
}): Promise<Response<Entity.Account>> {
|
}, file?: any): Promise<Response<Entity.Account>> {
|
||||||
let params = {}
|
let params = {}
|
||||||
if (options) {
|
if (!file) {
|
||||||
if (options.bot !== undefined) {
|
if (options) {
|
||||||
params = Object.assign(params, {
|
if (options.bot !== undefined) {
|
||||||
isBot: options.bot
|
|
||||||
})
|
|
||||||
}
|
|
||||||
if (options.display_name) {
|
|
||||||
params = Object.assign(params, {
|
|
||||||
name: options.display_name
|
|
||||||
})
|
|
||||||
}
|
|
||||||
if (options.note) {
|
|
||||||
params = Object.assign(params, {
|
|
||||||
description: options.note
|
|
||||||
})
|
|
||||||
}
|
|
||||||
if (options.locked !== undefined) {
|
|
||||||
params = Object.assign(params, {
|
|
||||||
isLocked: options.locked
|
|
||||||
})
|
|
||||||
}
|
|
||||||
if (options.source) {
|
|
||||||
if (options.source.language) {
|
|
||||||
params = Object.assign(params, {
|
params = Object.assign(params, {
|
||||||
lang: options.source.language
|
isBot: options.bot
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if (options.source.sensitive) {
|
if (options.display_name) {
|
||||||
params = Object.assign(params, {
|
params = Object.assign(params, {
|
||||||
alwaysMarkNsfw: options.source.sensitive
|
name: options.display_name
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
if (options.note) {
|
||||||
|
params = Object.assign(params, {
|
||||||
|
description: options.note
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (options.locked !== undefined) {
|
||||||
|
params = Object.assign(params, {
|
||||||
|
isLocked: options.locked
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (options.source) {
|
||||||
|
if (options.source.language) {
|
||||||
|
params = Object.assign(params, {
|
||||||
|
lang: options.source.language
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (options.source.sensitive) {
|
||||||
|
params = Object.assign(params, {
|
||||||
|
alwaysMarkNsfw: options.source.sensitive
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
return this.client.post<MisskeyAPI.Entity.UserDetail>('/api/i/update', params).then(res => {
|
||||||
return this.client.post<MisskeyAPI.Entity.UserDetail>('/api/i/update', params).then(res => {
|
return Object.assign(res, {
|
||||||
return Object.assign(res, {
|
data: MisskeyAPI.Converter.userDetail(res.data)
|
||||||
data: MisskeyAPI.Converter.userDetail(res.data)
|
})
|
||||||
})
|
})
|
||||||
})
|
} else {
|
||||||
|
const formData = new FormData()
|
||||||
|
formData.append('file', fs.createReadStream(file.path), {
|
||||||
|
contentType: file.mimetype,
|
||||||
|
});
|
||||||
|
if (file.originalname != null && file.originalname !== "file") formData.append("name", file.originalname);
|
||||||
|
let headers: { [key: string]: string } = {}
|
||||||
|
if (typeof formData.getHeaders === 'function') {
|
||||||
|
headers = formData.getHeaders()
|
||||||
|
}
|
||||||
|
await this.client
|
||||||
|
.post<MisskeyAPI.Entity.File>('/api/drive/files/create', formData, headers)
|
||||||
|
.then(res => {
|
||||||
|
if (file.name === "header") {
|
||||||
|
params = Object.assign(params, {
|
||||||
|
bannerId: res.data.id
|
||||||
|
})
|
||||||
|
} else if (file.name === "avatar") {
|
||||||
|
params = Object.assign(params, {
|
||||||
|
avatarId: res.data.id
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return this.client.post<MisskeyAPI.Entity.UserDetail>('/api/i/update', params).then(res => {
|
||||||
|
return Object.assign(res, {
|
||||||
|
data: MisskeyAPI.Converter.userDetail(res.data)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue