OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 import '../shell.dart' as shell; | 5 // TODO(abarth): Remove this file once clients migrate to the new location. |
6 import 'dart:async'; | 6 export '../../mojo/net/fetch.dart'; |
7 import 'dart:typed_data'; | |
8 import 'package:mojo/core.dart' as core; | |
9 import 'package:mojom/mojo/network_service.mojom.dart'; | |
10 import 'package:mojom/mojo/url_loader.mojom.dart'; | |
11 import 'package:mojom/mojo/url_request.mojom.dart'; | |
12 import 'package:mojom/mojo/url_response.mojom.dart'; | |
13 | |
14 class Response { | |
15 ByteData body; | |
16 | |
17 Response(this.body); | |
18 | |
19 String bodyAsString() { | |
20 return new String.fromCharCodes(new Uint8List.view(body.buffer)); | |
21 } | |
22 } | |
23 | |
24 Future<UrlResponse> fetch(UrlRequest request) async { | |
25 NetworkServiceProxy net = new NetworkServiceProxy.unbound(); | |
26 shell.requestService("mojo:authenticated_network_service", net); | |
27 | |
28 UrlLoaderProxy loader = new UrlLoaderProxy.unbound(); | |
29 net.ptr.createUrlLoader(loader); | |
30 | |
31 UrlResponse response = (await loader.ptr.start(request)).response; | |
32 | |
33 loader.close(); | |
34 net.close(); | |
35 return response; | |
36 } | |
37 | |
38 Future<UrlResponse> fetchUrl(String relativeUrl) async { | |
39 String url = Uri.base.resolve(relativeUrl).toString(); | |
40 UrlRequest request = new UrlRequest() | |
41 ..url = url | |
42 ..autoFollowRedirects = true; | |
43 return fetch(request); | |
44 } | |
45 | |
46 Future<Response> fetchBody(String relativeUrl) async { | |
47 UrlResponse response = await fetchUrl(relativeUrl); | |
48 if (response.body == null) return new Response(null); | |
49 | |
50 ByteData data = await core.DataPipeDrainer.drainHandle(response.body); | |
51 return new Response(data); | |
52 } | |
OLD | NEW |