forked from NativeScript/nativescript-angular
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathns-http.ts
More file actions
72 lines (64 loc) · 1.95 KB
/
Copy pathns-http.ts
File metadata and controls
72 lines (64 loc) · 1.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import { Injectable } from "@angular/core";
import {
Http,
ConnectionBackend,
Request,
RequestOptions,
RequestOptionsArgs,
ResponseOptions,
ResponseType,
Response
} from "@angular/http";
import { Observable } from "rxjs/Observable";
import "rxjs/add/observable/fromPromise";
import { isLocalRequest, processLocalFileRequest } from "../http-client/http-utils";
import { NSFileSystem } from "../file-system/ns-file-system";
export class NSXSRFStrategy {
public configureRequest(_req: any) {
// noop
}
}
@Injectable()
export class NSHttp extends Http {
constructor(backend: ConnectionBackend, defaultOptions: RequestOptions, private nsFileSystem: NSFileSystem) {
super(backend, defaultOptions);
}
/**
* Performs a request with `request` http method.
*/
request(req: string | Request, options?: RequestOptionsArgs): Observable<Response> {
const urlString = typeof req === "string" ? req : req.url;
if (isLocalRequest(urlString)) {
return this.requestLocalFile(urlString);
} else {
return super.request(req, options);
}
}
/**
* Performs a request with `get` http method.
*/
get(url: string, options?: RequestOptionsArgs): Observable<Response> {
if (isLocalRequest(url)) {
return this.requestLocalFile(url);
} else {
return super.get(url, options);
}
}
private requestLocalFile(url: string): Observable<Response> {
return processLocalFileRequest(
url,
this.nsFileSystem,
createResponse,
createResponse
);
}
}
function createResponse(url: string, body: string | Object, status: number): Response {
return new Response(new ResponseOptions({
body: body,
status: status,
statusText: "OK",
type: status === 200 ? ResponseType.Default : ResponseType.Error,
url: url
}));
}