refactor(http): remove default settings from RequestOptions constructor

The BaseRequestOptions class is responsible for declaring default values,
while the RequestOptions class is merely responsible for setting values
based on values provided in the constructor.
This commit is contained in:
Jeff Cross
2015-06-24 00:27:07 -07:00
parent 146dbf1270
commit b3d98cba77
20 changed files with 333 additions and 194 deletions
+20 -18
View File
@@ -13,18 +13,31 @@ import {BaseException} from 'angular2/src/facade/lang';
import {EventEmitter} from 'angular2/src/facade/async';
import {Request} from './static_request';
/**
* Abstract class from which real backends are derived.
*
* The primary purpose of a `ConnectionBackend` is to create new connections to fulfill a given
* {@link Request}.
*/
export class ConnectionBackend {
constructor() {}
createConnection(request: any): Connection { throw new BaseException('Abstract!'); }
}
/**
* Abstract class from which real connections are derived.
*/
export class Connection {
readyState: ReadyStates;
request: Request;
response: EventEmitter; //<IResponse>;
response: EventEmitter; // TODO: generic of <Response>;
dispose(): void { throw new BaseException('Abstract!'); }
}
/**
* Interface for options to construct a Request, based on
* [RequestInit](https://fetch.spec.whatwg.org/#requestinit) from the Fetch spec.
*/
export interface IRequestOptions {
url?: string;
method?: RequestMethods;
@@ -36,27 +49,16 @@ export interface IRequestOptions {
cache?: RequestCacheOpts;
}
export interface ResponseOptions {
/**
* Interface for options to construct a Response, based on
* [ResponseInit](https://fetch.spec.whatwg.org/#responseinit) from the Fetch spec.
*/
export interface IResponseOptions {
// TODO: Support Blob, ArrayBuffer, JSON
body?: string | Object | FormData;
status?: number;
statusText?: string;
headers?: Headers | Object;
headers?: Headers;
type?: ResponseTypes;
url?: string;
}
export interface IResponse {
headers: Headers;
ok: boolean;
status: number;
statusText: string;
type: ResponseTypes;
url: string;
totalBytes: number;
bytesLoaded: number;
blob(): any; // TODO: Blob
arrayBuffer(): any; // TODO: ArrayBuffer
text(): string;
json(): Object;
}