added Support for Jellyfin Media Server

This commit is contained in:
Juan D. Jara
2021-09-27 02:56:02 +02:00
committed by notfakie
parent 5125abdbf0
commit 3661eea8bb
36 changed files with 2862 additions and 86 deletions

50
src/utils/jellyfin.ts Normal file
View File

@@ -0,0 +1,50 @@
import axios, { AxiosError, AxiosResponse } from 'axios';
interface JellyfinAuthenticationResult {
Id: string;
AccessToken: string;
ServerId: string;
}
class JellyAPI {
public login(
Hostname?: string,
Username?: string,
Password?: string
): Promise<JellyfinAuthenticationResult> {
return new Promise(
(
resolve: (result: JellyfinAuthenticationResult) => void,
reject: (e: Error) => void
) => {
axios
.post(
Hostname + '/Users/AuthenticateByName',
{
Username: Username,
Pw: Password,
},
{
headers: {
'X-Emby-Authorization':
'MediaBrowser Client="Jellyfin Web", Device="Firefox", DeviceId="TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NDsgcnY6ODUuMCkgR2Vja28vMjAxMDAxMDEgRmlyZWZveC84NS4wfDE2MTI5MjcyMDM5NzM1", Version="10.8.0"',
},
}
)
.then((resp: AxiosResponse) => {
const response: JellyfinAuthenticationResult = {
Id: resp.data.User.Id,
AccessToken: resp.data.AccessToken,
ServerId: resp.data.ServerId,
};
resolve(response);
})
.catch((e: AxiosError) => {
reject(e);
});
}
);
}
}
export default JellyAPI;