@@ -70,30 +70,37 @@ if Code.ensure_compiled(Mint.HTTP) == {:module, Mint.HTTP} do
70
70
% Request { method: method , path: path , headers: headers , body: body } ,
71
71
% Connection { socket: socket } = state
72
72
) do
73
- { :ok , conn , ref } =
74
- Mint . request (
75
- socket ,
76
- method
77
- |> to_string ( )
78
- |> String . upcase ( ) ,
79
- path ,
80
- Enum . into ( headers , [ ] ) ,
81
- body
82
- )
83
-
84
- case do_recv ( conn , ref ) do
85
- { :ok , new_conn , buffer } ->
86
- do_response ( ref , buffer , % { state | socket: new_conn } )
87
-
88
- { :error , % _ { state: :closed } = new_conn , _ , ^ ref } ->
89
- { :error , :noproc , % { state | socket: new_conn } }
90
-
91
- { :error , new_conn , exception , ^ ref } ->
92
- { :error , exception , % { state | socket: new_conn } }
73
+ with (
74
+ { :ok , new_socket , ref } <-
75
+ Mint . request (
76
+ socket ,
77
+ method
78
+ |> to_string ( )
79
+ |> String . upcase ( ) ,
80
+ path ,
81
+ Enum . into ( headers , [ ] ) ,
82
+ body
83
+ ) ,
84
+ { :ok , new_socket , buffer } <-
85
+ do_recv ( new_socket , ref )
86
+ ) do
87
+ do_response ( ref , buffer , % { state | socket: new_socket } )
88
+ else
89
+ { :error , new_socket , % _ { reason: :closed } } ->
90
+ { :error , :noproc , % { state | socket: new_socket } }
91
+
92
+ { :error , new_socket , % _ { reason: :closed } , _ } ->
93
+ { :error , :noproc , % { state | socket: new_socket } }
94
+
95
+ { :error , new_socket , exception } ->
96
+ { :error , exception , % { state | socket: new_socket } }
97
+
98
+ { :error , new_socket , exception , _ } ->
99
+ { :error , exception , % { state | socket: new_socket } }
93
100
end
94
101
end
95
102
96
- def do_recv ( conn , ref , buffer \\ [ ] ) do
103
+ defp do_recv ( conn , ref , buffer \\ [ ] ) do
97
104
case Mint . recv ( conn , 0 , :infinity ) do
98
105
{ :ok , new_conn , next_buffer } ->
99
106
if { :done , ref } in next_buffer do
@@ -102,12 +109,12 @@ if Code.ensure_compiled(Mint.HTTP) == {:module, Mint.HTTP} do
102
109
do_recv ( new_conn , ref , buffer ++ next_buffer )
103
110
end
104
111
105
- { :error , _ , _ , ^ ref } = error ->
112
+ { :error , _ , _ , _ } = error ->
106
113
error
107
114
end
108
115
end
109
116
110
- def do_response ( ref , buffer , state ) do
117
+ defp do_response ( ref , buffer , state ) do
111
118
case buffer do
112
119
[ { :status , ^ ref , status } , { :headers , ^ ref , headers } , { :done , ^ ref } ] ->
113
120
{ :ok , % Response { status: status , headers: Map . new ( headers ) } , state }
0 commit comments