Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(963)

Side by Side Diff: examples/dart/wget.dart

Issue 816113004: Dart: Adds a content handler and a test. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | mojo/BUILD.gn » ('j') | mojo/public/dart/src/application.dart » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!mojo mojo:dart_content_handler
2
3 // Copyright 2014 The Chromium Authors. All rights reserved.
4 // Use of this source code is governed by a BSD-style license that can be
5 // found in the LICENSE file.
6
7 import 'dart:async';
8 import 'dart:mojo_bindings';
9 import 'dart:mojo_core';
10 import 'dart:typed_data';
11
12 import 'package:mojo/services/network/public/interfaces/network_service.mojom.da rt';
13 import 'package:mojo/services/network/public/interfaces/url_loader.mojom.dart';
14
15 class WGet extends ClientApplication {
16 NetworkServiceClient _networkServiceClient;
17 URLLoaderClient _urlLoaderClient;
18
19 WGet(MojoMessagePipeEndpoint endpoint) : super(endpoint);
20
21 WGet.fromHandle(int shellHandle) : super.fromHandle(shellHandle);
22
23 run(List<String> args) async {
24 if (args.length != 2) {
25 throw "Expected URL argument";
26 }
27
28 ByteData bodyData = await _getUrl(args[1]);
29 print("read ${bodyData.lengthInBytes} bytes");
30
31 _closeClients();
32 close();
33 }
34
35 Future<ByteData> _getUrl(String url) async {
36 _initClientsIfNeeded();
37
38 var urlRequest = new URLRequest()
39 ..url = url
40 ..auto_follow_redirects = true;
41
42 var urlResponse = await _urlLoaderClient.callStart(urlRequest);
43 print("url => ${urlResponse.response.url}");
44 print("status_line => ${urlResponse.response.status_line}");
45 print("mime_type => ${urlResponse.response.mime_type}");
46
47 return DataPipeDrainer.drainHandle(urlResponse.response.body);
48 }
49
50 void _initClientsIfNeeded() {
51 if (_networkServiceClient == null) {
52 var networkServiceClientEndpoint = connectToService(
53 "mojo:network_service", NetworkServiceInterface.name);
54 _networkServiceClient =
55 new NetworkServiceClient(networkServiceClientEndpoint)..open();
56 }
57 if (_urlLoaderClient == null) {
58 var urlLoaderPipe = new MojoMessagePipe();
59 _networkServiceClient.callCreateURLLoader(
60 urlLoaderPipe.endpoints[1].handle);
61 _urlLoaderClient =
62 new URLLoaderClient(urlLoaderPipe.endpoints[0])..open();
63 }
64 }
65
66 void _closeClients() {
67 _urlLoaderClient.close();
68 _networkServiceClient.close();
69 _urlLoaderClient = null;
70 _networkServiceClient = null;
71 }
72 }
73
74 main(List args) {
75 int shellHandle = args[0];
76 String url = args[1];
77 var wget = new WGet.fromHandle(shellHandle);
78 wget.listen();
79 }
OLDNEW
« no previous file with comments | « no previous file | mojo/BUILD.gn » ('j') | mojo/public/dart/src/application.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698