Toggle navigation
Toggle navigation
This project
Loading...
Sign in
flutter_package
/
fluttertpc_get
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Jonny Borges
2021-05-18 10:02:09 -0300
Browse Files
Options
Browse Files
Download
Plain Diff
Committed by
GitHub
2021-05-18 10:02:09 -0300
Commit
8b51b47ca9e120ef8d5938acc96630b565803035
8b51b47c
2 parents
8e39d90c
41c5726e
Merge pull request #1438 from KevinZhang19870314/master
fix: #1428
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
62 additions
and
18 deletions
lib/get_connect/http/src/http.dart
lib/get_connect/http/src/interceptors/get_modifiers.dart
lib/get_connect/http/src/request/request.dart
lib/get_connect/http/src/http.dart
View file @
8b51b47
...
...
@@ -192,38 +192,39 @@ class GetHttpClient {
});
if
(
authenticate
)
await
_modifier
.
authenticator
!(
request
);
await
_modifier
.
modifyRequest
(
request
);
final
newRequest
=
await
_modifier
.
modifyRequest
<
T
>
(
request
);
var
response
=
await
_httpClient
.
send
<
T
>(
r
equest
);
var
response
=
await
_httpClient
.
send
<
T
>(
newR
equest
);
await
_modifier
.
modifyResponse
(
request
,
response
);
final
newResponse
=
await
_modifier
.
modifyResponse
<
T
>(
newRequest
,
response
);
if
(
HttpStatus
.
unauthorized
==
r
esponse
.
statusCode
&&
if
(
HttpStatus
.
unauthorized
==
newR
esponse
.
statusCode
&&
_modifier
.
authenticator
!=
null
&&
requestNumber
<=
maxAuthRetries
)
{
return
_performRequest
<
T
>(
handler
,
authenticate:
true
,
requestNumber:
requestNumber
+
1
,
headers:
r
equest
.
headers
,
headers:
newR
equest
.
headers
,
);
}
else
if
(
HttpStatus
.
unauthorized
==
r
esponse
.
statusCode
)
{
}
else
if
(
HttpStatus
.
unauthorized
==
newR
esponse
.
statusCode
)
{
if
(!
errorSafety
)
{
throw
UnauthorizedException
();
}
else
{
return
Response
<
T
>(
request:
request
,
headers:
response
.
headers
,
statusCode:
response
.
statusCode
,
body:
response
.
body
,
bodyBytes:
response
.
bodyBytes
,
bodyString:
response
.
bodyString
,
statusText:
response
.
statusText
,
request:
newRequest
,
headers:
newResponse
.
headers
,
statusCode:
newResponse
.
statusCode
,
body:
newResponse
.
body
,
bodyBytes:
newResponse
.
bodyBytes
,
bodyString:
newResponse
.
bodyString
,
statusText:
newResponse
.
statusText
,
);
}
}
return
r
esponse
;
return
newR
esponse
;
}
on
Exception
catch
(
err
)
{
if
(!
errorSafety
)
{
throw
GetHttpException
(
err
.
toString
());
...
...
lib/get_connect/http/src/interceptors/get_modifiers.dart
View file @
8b51b47
...
...
@@ -31,19 +31,26 @@ class GetModifier<T> {
_requestModifiers
.
remove
(
interceptor
);
}
Future
<
void
>
modifyRequest
(
Request
request
)
async
{
Future
<
Request
<
T
>>
modifyRequest
<
T
>(
Request
<
T
>
request
)
async
{
var
newRequest
=
request
;
if
(
_requestModifiers
.
isNotEmpty
)
{
for
(
var
interceptor
in
_requestModifiers
)
{
await
interceptor
(
request
)
;
newRequest
=
await
interceptor
(
newRequest
)
as
Request
<
T
>
;
}
}
return
newRequest
;
}
Future
<
void
>
modifyResponse
(
Request
request
,
Response
response
)
async
{
Future
<
Response
<
T
>>
modifyResponse
<
T
>(
Request
<
T
>
request
,
Response
<
T
>
response
)
async
{
var
newResponse
=
response
;
if
(
_responseModifiers
.
isNotEmpty
)
{
for
(
var
interceptor
in
_responseModifiers
)
{
await
interceptor
(
request
,
response
)
;
newResponse
=
await
interceptor
(
request
,
response
)
as
Response
<
T
>
;
}
}
return
newResponse
;
}
}
...
...
lib/get_connect/http/src/request/request.dart
View file @
8b51b47
...
...
@@ -74,6 +74,42 @@ class Request<T> {
decoder:
decoder
,
);
}
Request
copyWith
({
Uri
?
url
,
String
?
method
,
Map
<
String
,
String
>?
headers
,
Stream
<
List
<
int
>>?
bodyBytes
,
bool
followRedirects
=
true
,
int
maxRedirects
=
4
,
int
?
contentLength
,
FormData
?
files
,
bool
persistentConnection
=
true
,
Decoder
<
T
>?
decoder
,
bool
appendHeader
=
true
,
})
{
if
(
followRedirects
)
{
assert
(
maxRedirects
>
0
);
}
// If appendHeader is set to true, we will merge origin headers with that
if
(
appendHeader
&&
headers
!=
null
)
{
headers
.
addAll
(
this
.
headers
);
}
return
Request
.
_
(
url:
url
??
this
.
url
,
method:
method
??
this
.
method
,
bodyBytes:
bodyBytes
??=
BodyBytesStream
.
fromBytes
(
const
[]),
headers:
headers
==
null
?
this
.
headers
:
Map
.
from
(
headers
),
followRedirects:
followRedirects
,
maxRedirects:
maxRedirects
,
contentLength:
contentLength
,
files:
files
,
persistentConnection:
persistentConnection
,
decoder:
decoder
,
);
}
}
extension
BodyBytesStream
on
Stream
<
List
<
int
>>
{
...
...
Please
register
or
login
to post a comment