@@ -18,39 +18,63 @@ defmodule Phoenix.Sync.Electric.ClientAdapter do
1818 } }
1919 end
2020
21+ def call ( sync_client , conn , params ) do
22+ { request , shape } = request ( sync_client , conn , params )
23+
24+ fetch_upstream ( sync_client , conn , request , shape )
25+ end
26+
27+ def response ( sync_client , % { method: "GET" } = conn , params ) do
28+ { request , shape } = request ( sync_client , conn , params )
29+
30+ make_request ( sync_client , conn , request , shape )
31+ end
32+
33+ def send_response ( _sync_client , conn , response ) do
34+ conn
35+ |> put_resp_headers ( response . headers )
36+ |> Plug.Conn . send_resp ( response . status , response . body )
37+ end
38+
2139 # this is the server-defined shape route, so we want to only pass on the
2240 # per-request/stream position params leaving the shape-definition params
2341 # from the configured client.
24- def call ( % { shape_definition: % PredefinedShape { } = shape } = sync_client , conn , params ) do
25- request =
42+ defp request ( % { shape_definition: % PredefinedShape { } = shape } = sync_client , _conn , params ) do
43+ {
2644 Client . request (
2745 sync_client . client ,
2846 method: :get ,
2947 offset: params [ "offset" ] ,
3048 shape_handle: params [ "handle" ] ,
3149 live: live? ( params [ "live" ] ) ,
3250 next_cursor: params [ "cursor" ]
33- )
34-
35- fetch_upstream ( sync_client , conn , request , shape )
51+ ) ,
52+ shape
53+ }
3654 end
3755
3856 # this version is the pure client-defined shape version
39- def call ( sync_client , % { method: method } = conn , params ) do
40- request =
57+ defp request ( sync_client , % { method: method } = _conn , params ) do
58+ {
4159 Client . request (
4260 sync_client . client ,
4361 method: normalise_method ( method ) ,
4462 params: params
45- )
46-
47- fetch_upstream ( sync_client , conn , request , nil )
63+ ) ,
64+ nil
65+ }
4866 end
4967
5068 defp normalise_method ( method ) , do: method |> String . downcase ( ) |> String . to_atom ( )
5169 defp live? ( live ) , do: live == "true"
5270
5371 defp fetch_upstream ( sync_client , conn , request , shape ) do
72+ response = make_request ( sync_client , conn , request , shape )
73+
74+ send_response ( sync_client , conn , response )
75+ end
76+
77+ defp make_request ( sync_client , conn , request , shape ) do
5478 request = put_req_headers ( request , conn . req_headers )
5579
5680 response =
@@ -69,9 +93,7 @@ defmodule Phoenix.Sync.Electric.ClientAdapter do
6993 response . body
7094 end
7195
72- conn
73- |> put_resp_headers ( response . headers )
74- |> Plug.Conn . send_resp ( response . status , body )
96+ % { response | body: body }
7597 end
7698
7799 defp put_req_headers ( request , headers ) do
0 commit comments