Index: examples/dart/wget.dart |
diff --git a/examples/dart/wget.dart b/examples/dart/wget.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..84c3f4e35c1974f04ed3d98608f8058a4f4faccd |
--- /dev/null |
+++ b/examples/dart/wget.dart |
@@ -0,0 +1,79 @@ |
+#!mojo mojo:dart_content_handler |
+ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+import 'dart:async'; |
+import 'dart:mojo_application'; |
+import 'dart:mojo_bindings'; |
+import 'dart:mojo_core'; |
+import 'dart:typed_data'; |
+ |
+import 'package:mojo/services/network/public/interfaces/network_service.mojom.dart'; |
+import 'package:mojo/services/network/public/interfaces/url_loader.mojom.dart'; |
+ |
+class WGet extends Application { |
+ NetworkServiceClient _networkServiceClient; |
+ UrlLoaderClient _urlLoaderClient; |
+ |
+ WGet.fromHandle(MojoHandle shellHandle) : super.fromHandle(shellHandle); |
+ |
+ void initialize(List<String> args) { |
+ run(args); |
+ } |
+ |
+ run(List<String> args) async { |
+ if (args.length != 2) { |
+ throw "Expected URL argument"; |
+ } |
+ |
+ ByteData bodyData = await _getUrl(args[1]); |
+ print("read ${bodyData.lengthInBytes} bytes"); |
+ |
+ _closeClients(); |
+ close(); |
+ } |
+ |
+ Future<ByteData> _getUrl(String url) async { |
+ _initClientsIfNeeded(); |
+ |
+ var urlRequest = new UrlRequest() |
+ ..url = url |
+ ..autoFollowRedirects = true; |
+ |
+ var urlResponse = await _urlLoaderClient.callStart(urlRequest); |
+ print("url => ${urlResponse.response.url}"); |
+ print("status_line => ${urlResponse.response.statusLine}"); |
+ print("mime_type => ${urlResponse.response.mimeType}"); |
+ |
+ return DataPipeDrainer.drainHandle(urlResponse.response.body); |
+ } |
+ |
+ void _initClientsIfNeeded() { |
+ if (_networkServiceClient == null) { |
+ var networkServiceClientEndpoint = connectToService( |
+ "mojo:network_service", NetworkServiceInterface.name); |
+ _networkServiceClient = |
+ new NetworkServiceClient(networkServiceClientEndpoint); |
+ } |
+ if (_urlLoaderClient == null) { |
+ _urlLoaderClient = new UrlLoaderClient.unbound(); |
+ _networkServiceClient.callCreateUrlLoader(_urlLoaderClient); |
+ } |
+ } |
+ |
+ void _closeClients() { |
+ _urlLoaderClient.close(); |
+ _networkServiceClient.close(); |
+ _urlLoaderClient = null; |
+ _networkServiceClient = null; |
+ } |
+} |
+ |
+main(List args) { |
+ MojoHandle shellHandle = new MojoHandle(args[0]); |
+ String url = args[1]; |
+ var wget = new WGet.fromHandle(shellHandle); |
+ wget.listen(); |
+} |