mirror of https://github.com/Squidex/squidex.git
160 changed files with 18894 additions and 1656 deletions
@ -1,85 +0,0 @@ |
|||
/* |
|||
* Squidex Headless CMS |
|||
* |
|||
* @license |
|||
* Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. |
|||
*/ |
|||
|
|||
import { HttpClient, HttpErrorResponse, HttpHeaders, HttpResponse } from '@angular/common/http'; |
|||
import { Observable } from 'rxjs'; |
|||
|
|||
import { ErrorDto } from './../../utils/error'; |
|||
import { Types} from './../../utils/types'; |
|||
import { Version, Versioned } from './../../utils/version'; |
|||
|
|||
export module HTTP { |
|||
export function getVersioned<T>(http: HttpClient, url: string, version?: Version): Observable<Versioned<HttpResponse<T>>> { |
|||
const headers = createHeaders(version); |
|||
|
|||
return handleVersion(http.get<T>(url, { observe: 'response', headers }), version); |
|||
} |
|||
|
|||
export function postVersioned<T>(http: HttpClient, url: string, body: any, version?: Version): Observable<Versioned<HttpResponse<T>>> { |
|||
const headers = createHeaders(version); |
|||
|
|||
return handleVersion(http.post<T>(url, body, { observe: 'response', headers }), version); |
|||
} |
|||
|
|||
export function putVersioned<T>(http: HttpClient, url: string, body: any, version?: Version): Observable<Versioned<HttpResponse<T>>> { |
|||
const headers = createHeaders(version); |
|||
|
|||
return handleVersion(http.put<T>(url, body, { observe: 'response', headers }), version); |
|||
} |
|||
|
|||
export function patchVersioned<T>(http: HttpClient, url: string, body: any, version?: Version): Observable<Versioned<HttpResponse<T>>> { |
|||
const headers = createHeaders(version); |
|||
|
|||
return handleVersion(http.request<T>('PATCH', url, { body, observe: 'response', headers }), version); |
|||
} |
|||
|
|||
export function deleteVersioned<T>(http: HttpClient, url: string, version?: Version): Observable<Versioned<HttpResponse<T>>> { |
|||
const headers = createHeaders(version); |
|||
|
|||
return handleVersion(http.delete<T>(url, { observe: 'response', headers }), version); |
|||
} |
|||
|
|||
function createHeaders(version?: Version): HttpHeaders { |
|||
if (version && version.value && version.value.length > 0) { |
|||
return new HttpHeaders().set('If-Match', version.value); |
|||
} else { |
|||
return new HttpHeaders(); |
|||
} |
|||
} |
|||
|
|||
function handleVersion<T>(httpRequest: Observable<HttpResponse<T>>, version?: Version): Observable<Versioned<HttpResponse<T>>> { |
|||
return httpRequest.map((response: HttpResponse<T>) => { |
|||
const etag = response.headers.get('etag') || ''; |
|||
|
|||
return new Versioned(new Version(etag), response); |
|||
}); |
|||
} |
|||
} |
|||
|
|||
export function pretifyError(message: string): Observable<any> { |
|||
return this.catch((response: HttpErrorResponse) => { |
|||
let result: ErrorDto | null = null; |
|||
|
|||
if (!Types.is(response.error, Error)) { |
|||
try { |
|||
const errorDto = Types.isObject(response.error) ? response.error : JSON.parse(response.error); |
|||
|
|||
if (response.status === 412) { |
|||
result = new ErrorDto(response.status, 'Failed to make the update. Another user has made a change. Please reload.'); |
|||
} else if (response.status !== 500) { |
|||
result = new ErrorDto(response.status, errorDto.message, errorDto.details); |
|||
} |
|||
} catch (e) { |
|||
result = new ErrorDto(500, 'Failed to make the request.'); |
|||
} |
|||
} |
|||
|
|||
result = result || new ErrorDto(500, message); |
|||
|
|||
return Observable.throw(result); |
|||
}); |
|||
} |
|||
@ -1,22 +0,0 @@ |
|||
/* |
|||
* Squidex Headless CMS |
|||
* |
|||
* @license |
|||
* Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. |
|||
*/ |
|||
|
|||
import { Observable } from 'rxjs'; |
|||
|
|||
import { DialogService } from './../services/dialog.service'; |
|||
|
|||
export function nextBy<T>(updater: (value: T) => T): void { |
|||
return this.next(updater(this.value)); |
|||
} |
|||
|
|||
export function notify(dialogs: DialogService) { |
|||
return this.catch((error: any) => { |
|||
dialogs.notifyError(error); |
|||
|
|||
return Observable.throw(error); |
|||
}); |
|||
} |
|||
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue