blob: edb981b45b3f181411e9ae61e3e740d25201cac8 [file] [log] [blame] [edit]
// Copyright 2015 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 '../shell.dart' as shell;
import 'dart:async';
import 'dart:sky' as sky;
import 'dart:typed_data';
import 'package:mojo/public/dart/core.dart' as core;
import 'package:mojo/services/network/public/interfaces/network_service.mojom.dart';
import 'package:mojo/services/network/public/interfaces/url_loader.mojom.dart';
class Response {
ByteData body;
Response(this.body);
String bodyAsString() {
return new String.fromCharCodes(new Uint8List.view(body.buffer));
}
}
Future<Response> fetch(String relativeUrl) async {
String url = new sky.URL(relativeUrl, sky.document.baseURI).href;
var net = new NetworkServiceProxy.unbound();
shell.requestService(net);
var loader = new UrlLoaderProxy.unbound();
net.ptr.createUrlLoader(loader);
var request = new UrlRequest()
..url = url
..autoFollowRedirects = true;
var response = (await loader.ptr.start(request)).response;
loader.close();
net.close();
if (response.body == null)
return new Response(null);
ByteData data = await core.DataPipeDrainer.drainHandle(response.body);
return new Response(data);
}