@@ -4,8 +4,10 @@ import { Agent } from 'http';
44import OpenidConfigurationGetter from '../misc/openidConfigurationGetter.js' ;
55
66import {
7+ WeaviateInsufficientPermissionsError ,
78 WeaviateInvalidInputError ,
89 WeaviateRequestTimeoutError ,
10+ WeaviateUnauthenticatedError ,
911 WeaviateUnexpectedStatusCodeError ,
1012} from '../errors.js' ;
1113import {
@@ -155,11 +157,11 @@ export default class ConnectionREST {
155157 return this . http . head ( path , payload ) ;
156158 } ;
157159
158- get = ( path : string , expectReturnContent = true ) => {
160+ get = < T > ( path : string , expectReturnContent = true ) => {
159161 if ( this . authEnabled ) {
160- return this . login ( ) . then ( ( token ) => this . http . get ( path , expectReturnContent , token ) ) ;
162+ return this . login ( ) . then ( ( token ) => this . http . get < T > ( path , expectReturnContent , token ) ) ;
161163 }
162- return this . http . get ( path , expectReturnContent ) ;
164+ return this . http . get < T > ( path , expectReturnContent ) ;
163165 } ;
164166
165167 login = async ( ) => {
@@ -197,7 +199,7 @@ export interface HttpClient {
197199 expectReturnContent : boolean ,
198200 bearerToken : string
199201 ) => Promise < T | undefined > ;
200- get : ( path : string , expectReturnContent ?: boolean , bearerToken ?: string ) => any ;
202+ get : < T > ( path : string , expectReturnContent ?: boolean , bearerToken ?: string ) => Promise < T > ;
201203 externalPost : ( externalUrl : string , body : any , contentType : any ) => any ;
202204 getRaw : ( path : string , bearerToken ?: string ) => any ;
203205 delete : ( path : string , payload : any , expectReturnContent ?: boolean , bearerToken ?: string ) => any ;
@@ -313,7 +315,7 @@ export const httpClient = (config: InternalConnectionParams): HttpClient => {
313315 handleHeadResponse < undefined > ( false )
314316 ) ;
315317 } ,
316- get : < T > ( path : string , expectReturnContent = true , bearerToken = '' ) : Promise < T | undefined > => {
318+ get : < T > ( path : string , expectReturnContent = true , bearerToken = '' ) : Promise < T > => {
317319 const request = {
318320 method : 'GET' ,
319321 headers : {
@@ -323,7 +325,7 @@ export const httpClient = (config: InternalConnectionParams): HttpClient => {
323325 } ;
324326 addAuthHeaderIfNeeded ( request , bearerToken ) ;
325327 return fetchWithTimeout ( url ( path ) , config . timeout ?. query || 30 , request ) . then (
326- checkStatus < T > ( expectReturnContent )
328+ checkStatus < any > ( expectReturnContent )
327329 ) ;
328330 } ,
329331 getRaw : ( path : string , bearerToken = '' ) => {
@@ -380,7 +382,13 @@ const checkStatus =
380382 } catch ( e ) {
381383 err = errText ;
382384 }
383- return Promise . reject ( new WeaviateUnexpectedStatusCodeError ( res . status , err ) ) ;
385+ if ( res . status === 401 ) {
386+ return Promise . reject ( new WeaviateUnauthenticatedError ( err ) ) ;
387+ } else if ( res . status === 403 ) {
388+ return Promise . reject ( new WeaviateInsufficientPermissionsError ( 403 , err ) ) ;
389+ } else {
390+ return Promise . reject ( new WeaviateUnexpectedStatusCodeError ( res . status , err ) ) ;
391+ }
384392 } ) ;
385393 }
386394 if ( expectResponseBody ) {
0 commit comments