blob: e4e51b4c902fc8cad459a1014211f9eecd1d6127 [file] [log] [blame]
#!mojo mojo:js_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.
// Demonstrate use of the Mojo network service to load a URL. To run this
// application with mojo_shell, set DIR to be the absolute path for this
// directory, then:
// mojo_shell "file://$DIR/wget.js http://www.google.com"
// Substitute any URL for google.com. To keep the noise down, this app
// only displays the number of bytes read and a little http header info.
define("main", [
"console",
"mojo/services/public/js/application",
"mojo/public/js/core",
"mojo/services/network/interfaces/network_service.mojom",
"mojo/public/interfaces/network/url_request.mojom",
], function(console, application, core, network, request) {
const Application = application.Application;
const NetworkService = network.NetworkService;
const URLRequest = request.URLRequest;
class WGet extends Application {
initialize(args) {
if (args.length != 2) {
console.log("Expected URL argument");
return;
}
var netService = this.shell.connectToService(
"mojo:network_service", NetworkService);
var urlLoader;
netService.createURLLoader(function(urlLoaderProxy) {
urlLoader = urlLoaderProxy;
});
var urlRequest = new URLRequest({
url: args[1],
method: "GET",
auto_follow_redirects: true
});
var app = this;
urlLoader.start(urlRequest).then(function(result) {
console.log("url => " + result.response["url"]);
console.log("status_line => " + result.response["status_line"]);
console.log("mime_type => " + result.response["mime_type"]);
core.drainData(result.response.body).then(
function(result) {
console.log("read " + result.buffer.byteLength + " bytes");
})
.then(function() {
app.quit();
});
}).catch(function(e) {
console.log("URLLoader start() failed: " + e.stack);
});
}
}
return WGet;
});