1- import { DateTime } from " luxon"
1+ import { DateTime } from ' luxon'
22import fetch from 'node-fetch'
3- import { actionsExported } from " ../App/EventHandler"
4- import { IClipboardItemEncrypted } from " ../DataModels/DataTypes"
5- import { BulkRes , CommonRes , LoginRes , RefreshRes , RegisterRes } from " ../DataModels/RequestTypes"
6- import { ClipsEndpoints , UserEndpoints } from " ./RequestUtils"
3+ import { actionsExported } from ' ../App/EventHandler'
4+ import { IClipboardItemEncrypted } from ' ../DataModels/DataTypes'
5+ import { BulkRes , CommonRes , LoginRes , RefreshRes , RegisterRes } from ' ../DataModels/RequestTypes'
6+ import { ClipsEndpoints , UserEndpoints } from ' ./RequestUtils'
77
88export const userTokens : Tokens = {
99 access_expires : DateTime . now ( )
@@ -15,12 +15,12 @@ type Tokens = {
1515 access_expires : DateTime < true >
1616}
1717
18- function request ( url : string , method : string = " GET" , body ?: object , headers ?: Record < string , string > ) {
18+ function request ( url : string , method : string = ' GET' , body ?: object , headers ?: Record < string , string > ) {
1919 if ( ! headers ) {
2020 headers = { }
2121 }
2222 if ( body ) {
23- headers [ " content-type" ] = " application/json"
23+ headers [ ' content-type' ] = ' application/json'
2424 }
2525
2626 const opts = {
@@ -33,20 +33,25 @@ function request(url: string, method: string = "GET", body?: object, headers?: R
3333}
3434
3535type ResWrapped < T > = {
36- ok : boolean ,
37- data ?: T ,
36+ ok : boolean
37+ data ?: T
3838 err ?: string
3939 code : number
4040}
4141
42- async function requestWithResponseBody < T > ( url : string , method : string = "GET" , body ?: object , headers ?: Record < string , string > ) : Promise < ResWrapped < T > > {
42+ async function requestWithResponseBody < T > (
43+ url : string ,
44+ method : string = 'GET' ,
45+ body ?: object ,
46+ headers ?: Record < string , string >
47+ ) : Promise < ResWrapped < T > > {
4348 const res = await request ( url , method , body , headers )
4449 const result : ResWrapped < T > = {
4550 ok : res . ok ,
4651 code : res . status
4752 }
4853 if ( res . ok ) {
49- result . data = await res . json ( ) as T
54+ result . data = ( await res . json ( ) ) as T
5055 } else {
5156 result . err = await res . text ( )
5257 }
@@ -56,7 +61,7 @@ async function requestWithResponseBody<T>(url: string, method: string = "GET", b
5661
5762async function getAccessToken ( ) : Promise < string > {
5863 if ( DateTime . now ( ) . plus ( { minute : 1 } ) > userTokens . access_expires ) {
59- console . log ( " access token needs a refresh!" )
64+ console . log ( ' access token needs a refresh!' )
6065 const refreshRes = await RequestService . account . refresh ( )
6166 if ( refreshRes . ok && refreshRes . data ) {
6267 userTokens . access_expires = DateTime . now ( ) . plus ( { minutes : 55 } )
@@ -66,25 +71,30 @@ async function getAccessToken(): Promise<string> {
6671 }
6772 }
6873 if ( ! userTokens . access ) {
69- actionsExported . logFrontend ( " Tried to call using an empty token!" )
70- throw new Error ( " token not set" )
74+ actionsExported . logFrontend ( ' Tried to call using an empty token!' )
75+ throw new Error ( ' token not set' )
7176 }
7277 return userTokens . access
7378}
7479
75- async function requestToken ( url : string , method : string = " GET" , body ?: object ) {
76- return await request ( url , method , body , { ' authorization' : `Bearer ${ await getAccessToken ( ) } ` } )
80+ async function requestToken ( url : string , method : string = ' GET' , body ?: object ) {
81+ return await request ( url , method , body , { authorization : `Bearer ${ await getAccessToken ( ) } ` } )
7782}
7883
79- async function requestTokenBody < T > ( url : string , method : string = " GET" , body ?: object ) {
80- return requestWithResponseBody < T > ( url , method , body , { ' authorization' : `Bearer ${ await getAccessToken ( ) } ` } )
84+ async function requestTokenBody < T > ( url : string , method : string = ' GET' , body ?: object ) {
85+ return requestWithResponseBody < T > ( url , method , body , { authorization : `Bearer ${ await getAccessToken ( ) } ` } )
8186}
8287
8388export const RequestService = {
8489 account : {
85- register : ( username : string , remotePass : string ) => requestWithResponseBody < RegisterRes > ( UserEndpoints . Register , "POST" , { username, password : remotePass } ) ,
86- login : ( username : string , remotePass : string , code2fa : string ) => requestWithResponseBody < LoginRes > ( UserEndpoints . Login , "POST" , { username, password : remotePass , code : code2fa } ) ,
87- refresh : ( ) => requestWithResponseBody < RefreshRes > ( UserEndpoints . RefreshToken , "POST" , undefined , { "authorization" : `Bearer ${ userTokens . refresh } ` } ) ,
90+ register : ( username : string , remotePass : string ) =>
91+ requestWithResponseBody < RegisterRes > ( UserEndpoints . Register , 'POST' , { username, password : remotePass } ) ,
92+ login : ( username : string , remotePass : string , code2fa : string ) =>
93+ requestWithResponseBody < LoginRes > ( UserEndpoints . Login , 'POST' , { username, password : remotePass , code : code2fa } ) ,
94+ refresh : ( ) =>
95+ requestWithResponseBody < RefreshRes > ( UserEndpoints . RefreshToken , 'POST' , undefined , {
96+ authorization : `Bearer ${ userTokens . refresh } `
97+ } ) ,
8898 logout ( ) {
8999 userTokens . refresh = undefined
90100 userTokens . access = undefined
@@ -95,18 +105,24 @@ export const RequestService = {
95105 const url = ClipsEndpoints . GetDatabaseFile ( ) + `?token=${ await getAccessToken ( ) } `
96106 return url
97107 } ,
98- confirm2fa : ( code : string , token : string ) => requestWithResponseBody < CommonRes > ( UserEndpoints . Confirm2FA , "POST" , {
99- code
100- } , { "authorization" : `Bearer ${ token } ` } )
108+ confirm2fa : ( code : string , token : string ) =>
109+ requestWithResponseBody < CommonRes > (
110+ UserEndpoints . Confirm2FA ,
111+ 'POST' ,
112+ {
113+ code
114+ } ,
115+ { authorization : `Bearer ${ token } ` }
116+ )
101117 } ,
102118 clips : {
103- add : ( clip : IClipboardItemEncrypted ) => requestToken ( ClipsEndpoints . CreateUpdate , " POST" , clip ) ,
104- upsert : ( clip : IClipboardItemEncrypted ) => requestToken ( ClipsEndpoints . CreateUpdate , " PUT" , clip ) ,
105- update : ( clip : { isFavorite : boolean , hash : string } ) => requestToken ( ClipsEndpoints . CreateUpdate , " PATCH" , clip ) ,
106- delete : ( hash : string ) => requestToken ( ClipsEndpoints . Delete ( hash ) , " DELETE" ) ,
107- getSince : ( time : DateTime ) => requestTokenBody < BulkRes > ( ClipsEndpoints . GetAllSince ( time ) , " GET" ) ,
108- getBetween : ( start : DateTime , end : DateTime ) => requestTokenBody < BulkRes > ( ClipsEndpoints . GetInBetween ( start , end ) , " GET" ) ,
109- getNBefore : ( time : DateTime , limit : number ) => requestTokenBody < BulkRes > ( ClipsEndpoints . GetNBefore ( time , limit ) , " GET" ) ,
110- deleteAll : ( ) => requestTokenBody < CommonRes > ( ClipsEndpoints . DeletAllData ( ) , " DELETE" ) ,
119+ add : ( clip : IClipboardItemEncrypted ) => requestToken ( ClipsEndpoints . CreateUpdate , ' POST' , clip ) ,
120+ upsert : ( clip : IClipboardItemEncrypted ) => requestToken ( ClipsEndpoints . CreateUpdate , ' PUT' , clip ) ,
121+ update : ( clip : { isFavorite : boolean ; hash : string } ) => requestToken ( ClipsEndpoints . CreateUpdate , ' PATCH' , clip ) ,
122+ delete : ( hash : string ) => requestToken ( ClipsEndpoints . Delete ( hash ) , ' DELETE' ) ,
123+ getSince : ( time : DateTime ) => requestTokenBody < BulkRes > ( ClipsEndpoints . GetAllSince ( time ) , ' GET' ) ,
124+ getBetween : ( start : DateTime , end : DateTime ) => requestTokenBody < BulkRes > ( ClipsEndpoints . GetInBetween ( start , end ) , ' GET' ) ,
125+ getNBefore : ( time : DateTime , limit : number ) => requestTokenBody < BulkRes > ( ClipsEndpoints . GetNBefore ( time , limit ) , ' GET' ) ,
126+ deleteAll : ( ) => requestTokenBody < CommonRes > ( ClipsEndpoints . DeletAllData ( ) , ' DELETE' )
111127 }
112- }
128+ }
0 commit comments