| 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();
|
| +}
|
|
|