mirror of
https://github.com/iLay1678/i-tools.git
synced 2025-07-06 22:42:15 +08:00
nuxt版
This commit is contained in:
49
server/routes/check_status/[sid].ts
Normal file
49
server/routes/check_status/[sid].ts
Normal file
@ -0,0 +1,49 @@
|
||||
import { decrypt, getParams } from '../../../utils/decode';
|
||||
import { defineEventHandler, getRouterParams } from 'h3'
|
||||
|
||||
export const runtime = 'edge'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
try {
|
||||
const { sid } = getRouterParams(event);
|
||||
const response = await fetch(`https://openapi.alipan.com/oauth/qrcode/${sid}/status`);
|
||||
const statusData:any = await response.json();
|
||||
|
||||
if (statusData.status === 'LoginSuccess') {
|
||||
try {
|
||||
const authCode = statusData.authCode;
|
||||
const t = Math.floor(Date.now() / 1000);
|
||||
const sendData = { ...getParams(t), code: authCode, "Content-Type": "application/json"};
|
||||
const headers = Object.fromEntries(
|
||||
Object.entries(sendData).map(([k, v]) => [k, String(v)])
|
||||
);
|
||||
|
||||
const tokenResponse = await fetch('http://api.extscreen.com/aliyundrive/v3/token', {
|
||||
method: 'POST',
|
||||
headers: headers,
|
||||
body: JSON.stringify(sendData)
|
||||
});
|
||||
|
||||
const tokenData:any = await tokenResponse.json();
|
||||
const jsonp = tokenData.data;
|
||||
const plainData = decrypt(jsonp.ciphertext, jsonp.iv, t);
|
||||
const tokenInfo = JSON.parse(plainData);
|
||||
|
||||
return {
|
||||
status: 'LoginSuccess',
|
||||
refresh_token: tokenInfo.refresh_token,
|
||||
access_token: tokenInfo.access_token
|
||||
};
|
||||
} catch (error) {
|
||||
return { status: 'LoginFailed' };
|
||||
}
|
||||
} else {
|
||||
return { status: statusData.status };
|
||||
}
|
||||
} catch (error:any) {
|
||||
throw createError({
|
||||
statusCode: 500,
|
||||
message: error.message
|
||||
});
|
||||
}
|
||||
});
|
25
server/routes/generate_qr.ts
Normal file
25
server/routes/generate_qr.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import { defineEventHandler } from 'h3'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
try {
|
||||
const response = await fetch('http://api.extscreen.com/aliyundrive/qrcode', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
scopes: ["user:base", "file:all:read", "file:all:write"].join(','),
|
||||
width: 500,
|
||||
height: 500,
|
||||
})
|
||||
})
|
||||
const data:any = await response.json()
|
||||
return {
|
||||
qr_link: data.data.qrCodeUrl,
|
||||
sid: data.data.sid
|
||||
}
|
||||
} catch (error: any) {
|
||||
throw createError({
|
||||
statusCode: 500,
|
||||
message: error.message
|
||||
})
|
||||
}
|
||||
})
|
43
server/routes/refresh.ts
Normal file
43
server/routes/refresh.ts
Normal file
@ -0,0 +1,43 @@
|
||||
import { decrypt, getParams } from '../../utils/decode';
|
||||
import { defineEventHandler } from 'h3'
|
||||
|
||||
export const runtime = 'edge'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
try {
|
||||
const { refresh_token } = await readBody(event);
|
||||
const t = Math.floor(Date.now() / 1000);
|
||||
const sendData = {
|
||||
...getParams(t),
|
||||
refresh_token: refresh_token,
|
||||
"Content-Type": "application/json"
|
||||
};
|
||||
|
||||
const headers = Object.fromEntries(
|
||||
Object.entries(sendData).map(([k, v]) => [k, String(v)])
|
||||
);
|
||||
|
||||
const response = await fetch('http://api.extscreen.com/aliyundrive/v3/token', {
|
||||
method: 'POST',
|
||||
headers: headers,
|
||||
body: JSON.stringify(sendData)
|
||||
});
|
||||
|
||||
const tokenData :any = await response.json();
|
||||
const jsonp = tokenData.data;
|
||||
const plainData = decrypt(jsonp.ciphertext, jsonp.iv, t);
|
||||
const tokenInfo = JSON.parse(plainData);
|
||||
|
||||
return {
|
||||
token_type: 'Bearer',
|
||||
access_token: tokenInfo.access_token,
|
||||
refresh_token: tokenInfo.refresh_token,
|
||||
expires_in: tokenInfo.expires_in
|
||||
};
|
||||
} catch (error:any) {
|
||||
return {
|
||||
error: error.message,
|
||||
statusCode: 500
|
||||
}
|
||||
}
|
||||
})
|
3
server/tsconfig.json
Normal file
3
server/tsconfig.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": "../.nuxt/tsconfig.server.json"
|
||||
}
|
Reference in New Issue
Block a user