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