ing
This commit is contained in:
parent
a39c130633
commit
851c0f1462
|
@ -9,7 +9,10 @@ import 'rxjs/add/operator/catch';
|
||||||
import 'rxjs/add/operator/timeout';
|
import 'rxjs/add/operator/timeout';
|
||||||
import 'rxjs/add/observable/throw';
|
import 'rxjs/add/observable/throw';
|
||||||
|
|
||||||
import { RESTError } from '../error';
|
import {
|
||||||
|
RESTError,
|
||||||
|
RESTServerError,
|
||||||
|
} from '../error';
|
||||||
|
|
||||||
export class RESTClient {
|
export class RESTClient {
|
||||||
constructor(
|
constructor(
|
||||||
|
@ -39,14 +42,23 @@ export class RESTClient {
|
||||||
.request<T>(method, Location.joinWithSlash(this._baseURL, entry), options)
|
.request<T>(method, Location.joinWithSlash(this._baseURL, entry), options)
|
||||||
.map(response => response)
|
.map(response => response)
|
||||||
.catch((error: HttpErrorResponse) => {
|
.catch((error: HttpErrorResponse) => {
|
||||||
console.error(error);
|
const restError: RESTError = {
|
||||||
const aryMsg = error.error.message.split('|');
|
request: {
|
||||||
const resError: RESTError = {
|
method: method,
|
||||||
code: error.error.code,
|
entry: entry,
|
||||||
message: aryMsg[0],
|
options: options,
|
||||||
data: aryMsg[1] === 'null' ? '' : aryMsg[1],
|
},
|
||||||
|
response: error.error,
|
||||||
};
|
};
|
||||||
return Observable.throw(resError);
|
|
||||||
|
console.error(restError);
|
||||||
|
// const aryMsg = error.error.message.split('|');
|
||||||
|
// const resError: RESTError = {
|
||||||
|
// code: error.error.code,
|
||||||
|
// message: aryMsg[0],
|
||||||
|
// data: aryMsg[1] === 'null' ? '' : aryMsg[1],
|
||||||
|
// };
|
||||||
|
return Observable.throw(restError);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,13 @@
|
||||||
export interface RESTError {
|
export interface RESTError {
|
||||||
|
request: {
|
||||||
|
method: string;
|
||||||
|
entry: string;
|
||||||
|
options?: any;
|
||||||
|
};
|
||||||
|
response: RESTServerError;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface RESTServerError {
|
||||||
code: number;
|
code: number;
|
||||||
message: string;
|
message: string;
|
||||||
data?: any;
|
data?: any;
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
import { Observable } from 'rxjs/Observable';
|
import { Observable } from 'rxjs/Observable';
|
||||||
import { Subject } from 'rxjs/Subject';
|
import { Subject } from 'rxjs/Subject';
|
||||||
|
|
||||||
|
|
||||||
|
import { RPCError } from '../error';
|
||||||
import { RPCClientRWC } from './rwc/RPCClientRWC';
|
import { RPCClientRWC } from './rwc/RPCClientRWC';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
@ -11,14 +13,17 @@ import {
|
||||||
|
|
||||||
export interface RPCRequestState {
|
export interface RPCRequestState {
|
||||||
subject: Subject<any>;
|
subject: Subject<any>;
|
||||||
request: any;
|
request: {
|
||||||
|
method: string;
|
||||||
|
params: any[];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export abstract class RPCClient {
|
export abstract class RPCClient {
|
||||||
private _requestID: number;
|
private _requestID: number;
|
||||||
|
|
||||||
private _pendingRequestsCount: number;
|
private _pendingRequestsCount: number;
|
||||||
private _pendingRequests: Map<number, Subject<any>>;
|
private _pendingRequests: Map<number, RPCRequestState>;
|
||||||
|
|
||||||
public constructor(
|
public constructor(
|
||||||
private _codec: RPCClientCodec,
|
private _codec: RPCClientCodec,
|
||||||
|
@ -85,7 +90,14 @@ export abstract class RPCClient {
|
||||||
if (hasResponse) {
|
if (hasResponse) {
|
||||||
id = this.getRequestID();
|
id = this.getRequestID();
|
||||||
resSubject = new Subject<T>();
|
resSubject = new Subject<T>();
|
||||||
this._pendingRequests.set(id, resSubject);
|
const reqState: RPCRequestState = {
|
||||||
|
subject: resSubject,
|
||||||
|
request: {
|
||||||
|
method: method,
|
||||||
|
params: args,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
this._pendingRequests.set(id, reqState);
|
||||||
this._pendingRequestsCount++;
|
this._pendingRequestsCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,15 +126,20 @@ export abstract class RPCClient {
|
||||||
const result = resCodec.result();
|
const result = resCodec.result();
|
||||||
const error = resCodec.error();
|
const error = resCodec.error();
|
||||||
|
|
||||||
const resSubject: Subject<any> = this._pendingRequests.get(id);
|
const reqState: RPCRequestState = this._pendingRequests.get(id);
|
||||||
|
|
||||||
this._pendingRequests.delete(id);
|
this._pendingRequests.delete(id);
|
||||||
this._pendingRequestsCount--;
|
this._pendingRequestsCount--;
|
||||||
|
|
||||||
if (undefined !== result) {
|
if (undefined !== result) {
|
||||||
resSubject.next(result);
|
reqState.subject.next(result);
|
||||||
} else if (undefined !== error) {
|
} else if (undefined !== error) {
|
||||||
console.error(error);
|
const rpcError: RPCError = {
|
||||||
resSubject.error(error);
|
request: reqState.request,
|
||||||
|
response: error,
|
||||||
|
};
|
||||||
|
console.error(rpcError);
|
||||||
|
reqState.subject.error(rpcError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,15 @@
|
||||||
|
export interface RPCError {
|
||||||
|
request: {
|
||||||
|
method: string,
|
||||||
|
params: any[],
|
||||||
|
};
|
||||||
|
response: RPCServerError;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Error object representation when a method invocation fails.
|
* Error object representation when a method invocation fails.
|
||||||
*/
|
*/
|
||||||
export interface RPCError {
|
export interface RPCServerError {
|
||||||
/** Indicates the error type that occurred. */
|
/** Indicates the error type that occurred. */
|
||||||
code: ErrorCode;
|
code: ErrorCode;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { RPCError } from '../error';
|
import { RPCServerError } from '../error';
|
||||||
|
|
||||||
export abstract class RPCClientCodec {
|
export abstract class RPCClientCodec {
|
||||||
abstract request(method: string, args: any[], id: number): any;
|
abstract request(method: string, args: any[], id: number): any;
|
||||||
|
@ -7,7 +7,7 @@ export abstract class RPCClientCodec {
|
||||||
|
|
||||||
export abstract class RPCClientResponseCodec {
|
export abstract class RPCClientResponseCodec {
|
||||||
abstract id(): number | undefined;
|
abstract id(): number | undefined;
|
||||||
abstract error(): RPCError | undefined;
|
abstract error(): RPCServerError | undefined;
|
||||||
abstract result(): any | undefined;
|
abstract result(): any | undefined;
|
||||||
|
|
||||||
abstract isNotification(): boolean;
|
abstract isNotification(): boolean;
|
||||||
|
|
|
@ -5,7 +5,7 @@ import {
|
||||||
} from '../RPCClientCodec';
|
} from '../RPCClientCodec';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
RPCError,
|
RPCServerError,
|
||||||
} from '../../error';
|
} from '../../error';
|
||||||
|
|
||||||
export interface ClientNotification {
|
export interface ClientNotification {
|
||||||
|
@ -23,7 +23,7 @@ export interface ClientRequest {
|
||||||
export interface ClientResponse {
|
export interface ClientResponse {
|
||||||
jsonrpc: string;
|
jsonrpc: string;
|
||||||
result?: any;
|
result?: any;
|
||||||
error?: RPCError;
|
error?: RPCServerError;
|
||||||
id?: number;
|
id?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ export class RPCClientJSONResponseCodec extends RPCClientResponseCodec {
|
||||||
public id(): number | undefined {
|
public id(): number | undefined {
|
||||||
return this._res.id;
|
return this._res.id;
|
||||||
}
|
}
|
||||||
public error(): RPCError | undefined {
|
public error(): RPCServerError | undefined {
|
||||||
return this._res.error;
|
return this._res.error;
|
||||||
}
|
}
|
||||||
public result(): any | undefined {
|
public result(): any | undefined {
|
||||||
|
|
|
@ -44,7 +44,7 @@ export class Effects {
|
||||||
return new SettingSuccess(discoveryStartInfo);
|
return new SettingSuccess(discoveryStartInfo);
|
||||||
})
|
})
|
||||||
.catch((error: RPCError) => {
|
.catch((error: RPCError) => {
|
||||||
console.log(error.message);
|
console.log(error.response.message);
|
||||||
return of(new SettingFailure(error));
|
return of(new SettingFailure(error));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ export class MapComponent implements OnInit, AfterContentInit {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
(error: RPCError) => {
|
(error: RPCError) => {
|
||||||
console.log(error.message);
|
console.log(error.response.message);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,13 +45,13 @@ export class ListComponent implements OnInit, AfterContentInit {
|
||||||
this.dataSource.sort = this.sort;
|
this.dataSource.sort = this.sort;
|
||||||
},
|
},
|
||||||
(error: RPCError) => {
|
(error: RPCError) => {
|
||||||
console.log(error.message);
|
console.log(error.response.message);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ export class ListComponent implements OnInit, AfterContentInit {
|
||||||
this.dataSource.sort = this.sort;
|
this.dataSource.sort = this.sort;
|
||||||
},
|
},
|
||||||
(error: RPCError) => {
|
(error: RPCError) => {
|
||||||
console.log(error.message);
|
console.log(error.response.message);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
console.log(this.selected.id + ' accept');
|
console.log(this.selected.id + ' accept');
|
||||||
|
@ -81,9 +81,9 @@ export class ListComponent implements OnInit, AfterContentInit {
|
||||||
this.dataSource.sort = this.sort;
|
this.dataSource.sort = this.sort;
|
||||||
},
|
},
|
||||||
(error: RPCError) => {
|
(error: RPCError) => {
|
||||||
console.log(error.message);
|
console.log(error.response.message);
|
||||||
}
|
}
|
||||||
)
|
);
|
||||||
console.log(this.selected.id + ' deny');
|
console.log(this.selected.id + ' deny');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ export class NotificationBadgeComponent implements OnInit, AfterContentInit {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
(error: RPCError) => {
|
(error: RPCError) => {
|
||||||
console.log(error.message);
|
console.log(error.response.message);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
this.mark$.subscribe(
|
this.mark$.subscribe(
|
||||||
|
@ -48,7 +48,7 @@ export class NotificationBadgeComponent implements OnInit, AfterContentInit {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
(error: RPCError) => {
|
(error: RPCError) => {
|
||||||
console.log(error.message);
|
console.log(error.response.message);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ export class NotificationComponent implements OnInit, AfterContentInit {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
(error: RPCError) => {
|
(error: RPCError) => {
|
||||||
console.log(error.message);
|
console.log(error.response.message);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ export class Effects {
|
||||||
return new MarkAsReadSuccess(notification);
|
return new MarkAsReadSuccess(notification);
|
||||||
})
|
})
|
||||||
.catch((error: RPCError) => {
|
.catch((error: RPCError) => {
|
||||||
console.log(error.message);
|
console.log(error.response.message);
|
||||||
return of(new MarkAsReadFailure(error));
|
return of(new MarkAsReadFailure(error));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,7 +58,7 @@ export class Effects {
|
||||||
return new MarkAllAsReadSuccess(page);
|
return new MarkAllAsReadSuccess(page);
|
||||||
})
|
})
|
||||||
.catch((error: RPCError) => {
|
.catch((error: RPCError) => {
|
||||||
console.log('errrrrrrrrrrrrrr : ' + error.message);
|
console.log('errrrrrrrrrrrrrr : ' + error.response.message);
|
||||||
return of(new MarkAllAsReadFailure(error));
|
return of(new MarkAllAsReadFailure(error));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ export class DetailComponent implements OnInit, AfterContentInit {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
(error: RPCError) => {
|
(error: RPCError) => {
|
||||||
console.log(error.message);
|
console.log(error.response.message);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,7 @@ export class ListComponent implements OnInit, AfterContentInit {
|
||||||
this.dataSource.sort = this.sort;
|
this.dataSource.sort = this.sort;
|
||||||
},
|
},
|
||||||
(error: RPCError) => {
|
(error: RPCError) => {
|
||||||
console.log(error.message);
|
console.log(error.response.message);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,7 @@ export class ListComponent implements OnInit, AfterContentInit {
|
||||||
this.dataSource.sort = this.sort;
|
this.dataSource.sort = this.sort;
|
||||||
},
|
},
|
||||||
(error: RPCError) => {
|
(error: RPCError) => {
|
||||||
console.log(error.message);
|
console.log(error.response.message);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user