Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
7ef1df4d
Commit
7ef1df4d
authored
Apr 27, 2016
by
Adam Barth
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove fetch.dart (#3584)
These uses cases are now address by http.dart via http.readDataPipe.
parent
256adfcd
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
63 additions
and
67 deletions
+63
-67
media_service.dart
examples/layers/services/media_service.dart
+2
-3
services.dart
packages/flutter/lib/services.dart
+0
-1
http.dart
packages/flutter/lib/src/http/http.dart
+16
-0
mojo_client.dart
packages/flutter/lib/src/http/mojo_client.dart
+30
-1
asset_bundle.dart
packages/flutter/lib/src/services/asset_bundle.dart
+2
-3
fetch.dart
packages/flutter/lib/src/services/fetch.dart
+0
-53
image_cache.dart
packages/flutter/lib/src/services/image_cache.dart
+13
-6
No files found.
examples/layers/services/media_service.dart
View file @
7ef1df4d
...
...
@@ -4,11 +4,11 @@
import
'dart:async'
;
import
'package:mojo/mojo/url_response.mojom.dart'
;
import
'package:sky_services/media/media.mojom.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/rendering.dart'
;
import
'package:flutter/services.dart'
;
import
'package:flutter/http.dart'
as
http
;
// All of these sounds are marked as public domain at soundbible.
const
String
chimes
=
"http://soundbible.com/grab.php?id=2030&type=wav"
;
...
...
@@ -42,8 +42,7 @@ class PianoKey {
Future
<
Null
>
load
(
MediaServiceProxy
mediaService
)
async
{
try
{
mediaService
.
ptr
.
createPlayer
(
player
);
UrlResponse
response
=
await
fetchUrl
(
soundUrl
);
await
player
.
ptr
.
prepare
(
response
.
body
);
await
player
.
ptr
.
prepare
(
await
http
.
readDataPipe
(
soundUrl
));
}
catch
(
e
)
{
print
(
"Error: failed to load sound file
$soundUrl
"
);
player
.
close
();
...
...
packages/flutter/lib/services.dart
View file @
7ef1df4d
...
...
@@ -18,7 +18,6 @@ export 'src/services/activity.dart';
export
'src/services/app_messages.dart'
;
export
'src/services/asset_bundle.dart'
;
export
'src/services/binding.dart'
;
export
'src/services/fetch.dart'
;
export
'src/services/image_cache.dart'
;
export
'src/services/image_decoder.dart'
;
export
'src/services/image_resource.dart'
;
...
...
packages/flutter/lib/src/http/http.dart
View file @
7ef1df4d
...
...
@@ -6,6 +6,8 @@ import 'dart:async';
import
'dart:convert'
;
import
'dart:typed_data'
;
import
'package:mojo/core.dart'
as
mojo
;
import
'mojo_client.dart'
;
import
'response.dart'
;
...
...
@@ -145,6 +147,20 @@ Future<Uint8List> readBytes(dynamic url, { Map<String, String> headers }) {
return
_withClient
/*<Uint8List>*/
((
MojoClient
client
)
=>
client
.
readBytes
(
url
,
headers:
headers
));
}
/// Sends an HTTP GET request with the given headers to the given URL, which can
/// be a [Uri] or a [String], and returns a Future that completes to a data pipe
/// containing the response bytes.
///
/// The Future will emit a [ClientException] if the response doesn't have a
/// success status code.
///
/// This automatically initializes a new [MojoClient] and closes that client once
/// the request is complete. If you're planning on making multiple requests to
/// the same server, you should use a single [MojoClient] for all of those requests.
Future
<
mojo
.
MojoDataPipeConsumer
>
readDataPipe
(
dynamic
url
,
{
Map
<
String
,
String
>
headers
})
{
return
_withClient
/*<mojo.MojoDataPipeConsumer>*/
((
MojoClient
client
)
=>
client
.
readDataPipe
(
url
,
headers:
headers
));
}
Future
<
dynamic
/*=T*/
>
_withClient
/*<T>*/
(
Future
<
dynamic
/*=T*/
>
fn
(
MojoClient
client
))
{
return
fn
(
new
MojoClient
());
}
packages/flutter/lib/src/http/mojo_client.dart
View file @
7ef1df4d
...
...
@@ -124,8 +124,31 @@ class MojoClient {
});
}
Future
<
Response
>
_send
(
String
method
,
dynamic
url
,
Map
<
String
,
String
>
headers
,
[
dynamic
body
,
Encoding
encoding
=
UTF8
]
)
async
{
Future
<
mojo
.
MojoDataPipeConsumer
>
readDataPipe
(
dynamic
url
,
{
Map
<
String
,
String
>
headers
}
)
async
{
mojom
.
UrlLoaderProxy
loader
=
new
mojom
.
UrlLoaderProxy
.
unbound
();
mojom
.
UrlRequest
request
=
_prepareRequest
(
'get'
,
url
,
headers
);
mojom
.
UrlResponse
response
;
try
{
networkService
.
ptr
.
createUrlLoader
(
loader
);
response
=
(
await
loader
.
ptr
.
start
(
request
)).
response
;
}
catch
(
exception
,
stack
)
{
FlutterError
.
reportError
(
new
FlutterErrorDetails
(
exception:
exception
,
stack:
stack
,
library
:
'networking HTTP library'
,
context:
'while sending bytes to the Mojo network library'
,
silent:
true
));
return
null
;
}
finally
{
loader
.
close
();
}
if
(
response
.
statusCode
<
400
)
return
response
.
body
;
throw
new
Exception
(
"Request to
$url
failed with status
${response.statusCode}
."
);
}
mojom
.
UrlRequest
_prepareRequest
(
String
method
,
dynamic
url
,
Map
<
String
,
String
>
headers
,
[
dynamic
body
,
Encoding
encoding
=
UTF8
])
{
List
<
mojom
.
HttpHeader
>
mojoHeaders
=
<
mojom
.
HttpHeader
>[];
headers
?.
forEach
((
String
name
,
String
value
)
{
mojom
.
HttpHeader
header
=
new
mojom
.
HttpHeader
()
...
...
@@ -144,6 +167,12 @@ class MojoClient {
ByteData
data
=
new
ByteData
.
view
(
encodedBody
.
buffer
);
mojo
.
DataPipeFiller
.
fillHandle
(
pipe
.
producer
,
data
);
}
return
request
;
}
Future
<
Response
>
_send
(
String
method
,
dynamic
url
,
Map
<
String
,
String
>
headers
,
[
dynamic
body
,
Encoding
encoding
=
UTF8
])
async
{
mojom
.
UrlLoaderProxy
loader
=
new
mojom
.
UrlLoaderProxy
.
unbound
();
mojom
.
UrlRequest
request
=
_prepareRequest
(
method
,
url
,
headers
,
body
,
encoding
);
try
{
networkService
.
ptr
.
createUrlLoader
(
loader
);
mojom
.
UrlResponse
response
=
(
await
loader
.
ptr
.
start
(
request
)).
response
;
...
...
packages/flutter/lib/src/services/asset_bundle.dart
View file @
7ef1df4d
...
...
@@ -10,7 +10,6 @@ import 'package:flutter/http.dart' as http;
import
'package:mojo/core.dart'
as
core
;
import
'package:mojo_services/mojo/asset_bundle/asset_bundle.mojom.dart'
;
import
'fetch.dart'
;
import
'image_cache.dart'
;
import
'image_decoder.dart'
;
import
'image_resource.dart'
;
...
...
@@ -34,7 +33,7 @@ class NetworkAssetBundle extends AssetBundle {
@override
Future
<
core
.
MojoDataPipeConsumer
>
load
(
String
key
)
async
{
return
(
await
fetchUrl
(
_urlFromKey
(
key
))).
body
;
return
await
http
.
readDataPipe
(
_urlFromKey
(
key
))
;
}
@override
...
...
@@ -88,7 +87,7 @@ class MojoAssetBundle extends CachingAssetBundle {
}
static
Future
<
Null
>
_fetchAndUnpackBundle
(
String
relativeUrl
,
AssetBundleProxy
bundle
)
async
{
core
.
MojoDataPipeConsumer
bundleData
=
(
await
fetchUrl
(
relativeUrl
)).
body
;
core
.
MojoDataPipeConsumer
bundleData
=
await
http
.
readDataPipe
(
Uri
.
base
.
resolve
(
relativeUrl
))
;
AssetUnpackerProxy
unpacker
=
new
AssetUnpackerProxy
.
unbound
();
shell
.
connectToService
(
"mojo:asset_bundle"
,
unpacker
);
unpacker
.
ptr
.
unpackZipStream
(
bundleData
,
bundle
);
...
...
packages/flutter/lib/src/services/fetch.dart
deleted
100644 → 0
View file @
256adfcd
// 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
'dart:async'
;
import
'package:flutter/foundation.dart'
;
import
'package:mojo/mojo/url_request.mojom.dart'
as
mojom
;
import
'package:mojo/mojo/url_response.mojom.dart'
as
mojom
;
import
'package:mojo_services/mojo/url_loader.mojom.dart'
as
mojom
;
import
'../http/mojo_client.dart'
;
// TODO(ianh): clean this up, see https://github.com/flutter/flutter/issues/2889
export
'package:mojo/mojo/url_response.mojom.dart'
show
UrlResponse
;
Future
<
mojom
.
UrlResponse
>
fetch
(
mojom
.
UrlRequest
request
,
{
bool
require200:
false
})
async
{
mojom
.
UrlLoaderProxy
loader
=
new
mojom
.
UrlLoaderProxy
.
unbound
();
try
{
MojoClient
.
networkService
.
ptr
.
createUrlLoader
(
loader
);
mojom
.
UrlResponse
response
=
(
await
loader
.
ptr
.
start
(
request
)).
response
;
if
(
require200
&&
(
response
.
error
!=
null
||
response
.
statusCode
!=
200
))
{
StringBuffer
message
=
new
StringBuffer
();
message
.
writeln
(
'Could not
${request.method ?? "fetch"}
${request.url ?? "resource"}
'
);
if
(
response
.
error
!=
null
)
message
.
writeln
(
'Network error:
${response.error.code}
${response.error.description ?? "<unknown network error>"}
'
);
if
(
response
.
statusCode
!=
200
)
message
.
writeln
(
'Protocol error:
${response.statusCode}
${response.statusLine ?? "<no server message>"}
'
);
if
(
response
.
url
!=
request
.
url
)
message
.
writeln
(
'Final URL after redirects was:
${response.url}
'
);
throw
message
;
// this is not a FlutterError, because it's a real error, not an assertion
}
return
response
;
}
catch
(
exception
,
stack
)
{
FlutterError
.
reportError
(
new
FlutterErrorDetails
(
exception:
exception
,
stack:
stack
,
library
:
'fetch service'
,
context:
'while sending bytes to the Mojo network library'
,
silent:
true
));
return
null
;
}
finally
{
loader
.
close
();
}
}
Future
<
mojom
.
UrlResponse
>
fetchUrl
(
String
relativeUrl
,
{
bool
require200:
false
})
{
String
url
=
Uri
.
base
.
resolve
(
relativeUrl
).
toString
();
mojom
.
UrlRequest
request
=
new
mojom
.
UrlRequest
()
..
url
=
url
..
autoFollowRedirects
=
true
;
return
fetch
(
request
,
require200:
require200
);
}
packages/flutter/lib/src/services/image_cache.dart
View file @
7ef1df4d
...
...
@@ -6,9 +6,9 @@ import 'dart:async';
import
'dart:collection'
;
import
'dart:ui'
show
hashValues
;
import
'package:mojo/mojo/url_response.mojom.dart'
;
import
'package:flutter/foundation.dart'
;
import
'package:flutter/http.dart'
as
http
;
import
'fetch.dart'
;
import
'image_decoder.dart'
;
import
'image_resource.dart'
;
...
...
@@ -52,15 +52,22 @@ class _UrlFetcher implements ImageProvider {
@override
Future
<
ImageInfo
>
loadImage
()
async
{
UrlResponse
response
=
await
fetchUrl
(
_url
,
require200:
true
);
if
(
response
!=
null
)
{
try
{
return
new
ImageInfo
(
image:
await
decodeImageFromDataPipe
(
response
.
body
),
image:
await
decodeImageFromDataPipe
(
await
http
.
readDataPipe
(
Uri
.
base
.
resolve
(
_url
))
),
scale:
_scale
);
}
}
catch
(
exception
,
stack
)
{
FlutterError
.
reportError
(
new
FlutterErrorDetails
(
exception:
exception
,
stack:
stack
,
library
:
'services library'
,
context:
'while fetching an image for the image cache'
,
silent:
true
));
return
null
;
}
}
@override
bool
operator
==(
dynamic
other
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment