mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-12-15 10:02:47 +03:00
Separate interaces into %http-server and %http-client
A repeating patern while developing was confusion over whether an operation was inbound or outbound. By putting this into the gift and tasks, we can avoid this: an [%http-server %request ...] is not an [%http-client %request ...]. (This requires corresponding vere changes since it changes the unix/vane interface.)
This commit is contained in:
parent
6cd52154c9
commit
8570a8f3c9
@ -692,7 +692,9 @@
|
||||
++ per-client-event
|
||||
|= [[our=@p eny=@ =duct now=@da scry=sley] state=state:client]
|
||||
|%
|
||||
++ fetch
|
||||
:: +request: makes an external web request
|
||||
::
|
||||
++ request
|
||||
|= [=http-request =outbound-config]
|
||||
^- [(list move) state:client]
|
||||
:: get the next id for this request
|
||||
@ -715,7 +717,7 @@
|
||||
:: email discussions make it sound like fixing that might be hard, so
|
||||
:: maybe i should just live with the way it is now?
|
||||
::
|
||||
:- [outbound-duct.state %give %http-request id `http-request]~
|
||||
:- [outbound-duct.state %give %http-client %request id `http-request]~
|
||||
state
|
||||
:: +receive: receives a response to an http-request we made
|
||||
::
|
||||
@ -794,7 +796,8 @@
|
||||
:_ ~
|
||||
:* duct.connection
|
||||
%give
|
||||
%http-progress
|
||||
%http-client
|
||||
%progress
|
||||
(need response-headers.in-progress-http-request.connection)
|
||||
bytes-read.in-progress-http-request.connection
|
||||
expected-size.in-progress-http-request.connection
|
||||
@ -826,7 +829,8 @@
|
||||
u.mime-type
|
||||
:- :~ :* duct.connection
|
||||
%give
|
||||
%http-finished
|
||||
%http-client
|
||||
%finished
|
||||
response-headers
|
||||
?:(=(0 p.data) ~ `[mime data])
|
||||
== ==
|
||||
@ -1496,8 +1500,8 @@
|
||||
::
|
||||
=? moves ?=([%| *] state.channel)
|
||||
:_ moves
|
||||
:+ p.state.channel %give
|
||||
:* %http-response %continue
|
||||
:^ p.state.channel %give %http-server
|
||||
:* %response %continue
|
||||
::
|
||||
^= data
|
||||
:- ~
|
||||
@ -1638,7 +1642,7 @@
|
||||
::
|
||||
++ pass-response
|
||||
^- [(list move) server-state]
|
||||
[[duct %give %http-response raw-http-response]~ state]
|
||||
[[duct %give %http-server %response raw-http-response]~ state]
|
||||
::
|
||||
++ log-complete-request
|
||||
:: todo: log the complete request
|
||||
@ -1659,7 +1663,7 @@
|
||||
:: respond to outside with %error
|
||||
::
|
||||
^- [(list move) server-state]
|
||||
[[duct %give %http-response %cancel ~]~ state]
|
||||
[[duct %give %http-server %response %cancel ~]~ state]
|
||||
--
|
||||
:: +add-binding: conditionally add a pairing between binding and action
|
||||
::
|
||||
@ -1672,7 +1676,7 @@
|
||||
|-
|
||||
^- [(list move) server-state]
|
||||
?~ to-search
|
||||
:- [duct %give %bound %.y binding]~
|
||||
:- [duct %give %http-server %bound %.y binding]~
|
||||
=. bindings.state
|
||||
:: store in reverse alphabetical order so that longer paths are first
|
||||
::
|
||||
@ -1688,7 +1692,7 @@
|
||||
state
|
||||
::
|
||||
?: =(binding binding.i.to-search)
|
||||
:- [duct %give %bound %.n binding]~
|
||||
:- [duct %give %http-server %bound %.n binding]~
|
||||
state
|
||||
::
|
||||
$(to-search t.to-search)
|
||||
@ -1839,81 +1843,71 @@
|
||||
;: weld
|
||||
:: hand back default configuration for now
|
||||
::
|
||||
[duct %give %form *http-config]~
|
||||
[duct %give %http-server %set-config *http-config]~
|
||||
::
|
||||
closed-connections
|
||||
==
|
||||
::
|
||||
:: %live: no idea what this is for
|
||||
::
|
||||
%live
|
||||
::
|
||||
~& [%todo-live p.task q.task]
|
||||
::
|
||||
[~ light-gate]
|
||||
::
|
||||
:: %inbound-request: handles an inbound http request
|
||||
::
|
||||
%inbound-request
|
||||
::
|
||||
:: TODO: This is uncommit
|
||||
::
|
||||
%http-server
|
||||
=/ event-args [[our eny duct now scry-gate] server-state.ax]
|
||||
=/ request request:(per-server-event event-args)
|
||||
=^ moves server-state.ax
|
||||
(request +.task)
|
||||
[moves light-gate]
|
||||
=/ server (per-server-event event-args)
|
||||
?- -.server-task.task
|
||||
::
|
||||
:: %live: no idea what this is for
|
||||
::
|
||||
%live
|
||||
::
|
||||
~! task
|
||||
~& [%todo-live server-task.task]
|
||||
::
|
||||
[~ light-gate]
|
||||
::
|
||||
%request
|
||||
=^ moves server-state.ax (request:server +.server-task.task)
|
||||
[moves light-gate]
|
||||
::
|
||||
%cancel-request
|
||||
=^ moves server-state.ax cancel-request:server
|
||||
[moves light-gate]
|
||||
::
|
||||
%connect
|
||||
=^ moves server-state.ax
|
||||
%+ add-binding:server binding.server-task.task
|
||||
[%app app.server-task.task]
|
||||
[moves light-gate]
|
||||
::
|
||||
%serve
|
||||
=^ moves server-state.ax
|
||||
%+ add-binding:server binding.server-task.task
|
||||
[%gen generator.server-task.task]
|
||||
[moves light-gate]
|
||||
::
|
||||
%disconnect
|
||||
=. server-state.ax (remove-binding:server binding.server-task.task)
|
||||
[~ light-gate]
|
||||
==
|
||||
::
|
||||
::
|
||||
::
|
||||
%cancel-inbound-request
|
||||
=/ event-args [[our eny duct now scry-gate] server-state.ax]
|
||||
=/ cancel-request cancel-request:(per-server-event event-args)
|
||||
=^ moves server-state.ax cancel-request
|
||||
[moves light-gate]
|
||||
::
|
||||
:: %fetch
|
||||
::
|
||||
%fetch
|
||||
%http-client
|
||||
=/ event-args [[our eny duct now scry-gate] client-state.ax]
|
||||
=/ fetch fetch:(per-client-event event-args)
|
||||
=^ moves client-state.ax (fetch +.task)
|
||||
[moves light-gate]
|
||||
::
|
||||
:: %cancel-fetch
|
||||
::
|
||||
%cancel-fetch
|
||||
~& %todo-cancel-fetch
|
||||
[~ light-gate]
|
||||
::
|
||||
:: %receive: receives http data from unix
|
||||
::
|
||||
%receive
|
||||
=/ event-args [[our eny duct now scry-gate] client-state.ax]
|
||||
=/ receive receive:(per-client-event event-args)
|
||||
=^ moves client-state.ax (receive +.task)
|
||||
[moves light-gate]
|
||||
::
|
||||
:: %connect / %serve
|
||||
::
|
||||
?(%connect %serve)
|
||||
=/ event-args [[our eny duct now scry-gate] server-state.ax]
|
||||
=/ add-binding add-binding:(per-server-event event-args)
|
||||
=^ moves server-state.ax
|
||||
%+ add-binding binding.task
|
||||
?- -.task
|
||||
%connect [%app app.task]
|
||||
%serve [%gen generator.task]
|
||||
==
|
||||
[moves light-gate]
|
||||
::
|
||||
:: %disconnect
|
||||
::
|
||||
%disconnect
|
||||
=/ event-args [[our eny duct now scry-gate] server-state.ax]
|
||||
=/ remove-binding remove-binding:(per-server-event event-args)
|
||||
=. server-state.ax (remove-binding binding.task)
|
||||
[~ light-gate]
|
||||
=/ client (per-client-event event-args)
|
||||
?- -.client-task.task
|
||||
::
|
||||
%request
|
||||
=^ moves client-state.ax (request:client +.client-task.task)
|
||||
[moves light-gate]
|
||||
::
|
||||
%cancel-request
|
||||
~& %todo-cancel-request
|
||||
[~ light-gate]
|
||||
::
|
||||
%receive
|
||||
=^ moves client-state.ax (receive:client +.client-task.task)
|
||||
[moves light-gate]
|
||||
==
|
||||
==
|
||||
::
|
||||
++ take
|
||||
|
@ -1994,34 +1994,45 @@
|
||||
+| %vane-interface
|
||||
++ able
|
||||
|%
|
||||
:: +gift: %light responses
|
||||
::
|
||||
++ gift
|
||||
$% :: form: configures the http server
|
||||
$% [%http-server server-gift]
|
||||
[%http-client client-gift]
|
||||
==
|
||||
:: +server-gift: effects the server can emit
|
||||
::
|
||||
++ server-gift
|
||||
$% :: set-config: configures the external http server
|
||||
::
|
||||
:: TODO: We need to actually return a (map (unit @t) http-config)
|
||||
:: so we can apply configurations on a per-site basis
|
||||
::
|
||||
:: TODO: %form is a terrible name, but it's what vere currently
|
||||
:: accepts. Rename it.
|
||||
:: TODO: THIS WAS %form. When done renaming, be done renaming.
|
||||
::
|
||||
[%form =http-config]
|
||||
:: http-response: response from urbit to earth
|
||||
[%set-config =http-config]
|
||||
:: response: response to an event from earth
|
||||
::
|
||||
[%http-response =raw-http-response]
|
||||
:: %http-request: outbound http-request to earth
|
||||
::
|
||||
:: TODO: id is sort of wrong for this interface; the duct should
|
||||
:: be enough to identify which request we're talking about?
|
||||
::
|
||||
[%http-request id=@ud request=(unit http-request)]
|
||||
[%response =raw-http-response]
|
||||
:: response to a %connect or %serve
|
||||
::
|
||||
:: :accepted is whether :binding was valid. Duplicate bindings are
|
||||
:: not allowed.
|
||||
::
|
||||
[%bound accepted=? =binding]
|
||||
==
|
||||
:: +client-gift: effects the client can emit
|
||||
::
|
||||
++ client-gift
|
||||
$% :: %http-request: outbound http-request to earth
|
||||
::
|
||||
:: TODO: id is sort of wrong for this interface; the duct should
|
||||
:: be enough to identify which request we're talking about?
|
||||
::
|
||||
[%request id=@ud request=(unit http-request)]
|
||||
:: periodically sent as an update on the duct that sent %fetch
|
||||
::
|
||||
$: %http-progress
|
||||
$: %progress
|
||||
:: http-response-header: full transaction header
|
||||
::
|
||||
:: In case of a redirect chain, this is the target of the
|
||||
@ -2040,7 +2051,7 @@
|
||||
==
|
||||
:: final response of a download, parsed as mime-data if successful
|
||||
::
|
||||
[%http-finished =http-response-header full-file=(unit mime-data)]
|
||||
[%finished =http-response-header full-file=(unit mime-data)]
|
||||
==
|
||||
::
|
||||
++ task
|
||||
@ -2049,27 +2060,27 @@
|
||||
:: TODO: Remove this once we single home.
|
||||
::
|
||||
[%init our=@p]
|
||||
:: new unix process (?)
|
||||
:: new unix process
|
||||
::
|
||||
[%born p=(list host)]
|
||||
:: set http ports (?)
|
||||
:: task for the http server
|
||||
::
|
||||
[%http-server =server-task]
|
||||
:: task for the http client
|
||||
::
|
||||
[%http-client =client-task]
|
||||
==
|
||||
::
|
||||
++ server-task
|
||||
$% :: set http ports (?)
|
||||
::
|
||||
[%live p=@ud q=(unit @ud)]
|
||||
:: starts handling an inbound http request
|
||||
::
|
||||
[%inbound-request secure=? =address =http-request]
|
||||
[%request secure=? =address =http-request]
|
||||
:: cancels a previous request
|
||||
::
|
||||
[%cancel-inbound-request ~]
|
||||
:: fetches a remote resource
|
||||
::
|
||||
[%fetch =http-request =outbound-config]
|
||||
:: cancels a previous fetch
|
||||
::
|
||||
[%cancel-fetch ~]
|
||||
:: receives http data from outside
|
||||
::
|
||||
[%receive id=@ud =raw-http-response]
|
||||
[%cancel-request ~]
|
||||
:: connects a binding to an app
|
||||
::
|
||||
[%connect =binding app=term]
|
||||
@ -2083,6 +2094,18 @@
|
||||
::
|
||||
[%disconnect =binding]
|
||||
==
|
||||
::
|
||||
++ client-task
|
||||
$% :: fetches a remote resource
|
||||
::
|
||||
[%request =http-request =outbound-config]
|
||||
:: cancels a previous fetch
|
||||
::
|
||||
[%cancel-request ~]
|
||||
:: receives http data from outside
|
||||
::
|
||||
[%receive id=@ud =raw-http-response]
|
||||
==
|
||||
--
|
||||
::
|
||||
+| %bindings
|
||||
|
@ -37,8 +37,8 @@
|
||||
light-gate
|
||||
now=~1111.1.2
|
||||
scry=*sley
|
||||
call-args=[duct=~[/app1] ~ [%connect [~ /] %app1]]
|
||||
expected-moves=[duct=~[/app1] %give %bound %.y [~ /]]~
|
||||
call-args=[duct=~[/app1] ~ [%http-server %connect [~ /] %app1]]
|
||||
expected-moves=[duct=~[/app1] %give %http-server %bound %.y [~ /]]~
|
||||
==
|
||||
:: app2 tries to bind to the same path and fails
|
||||
::
|
||||
@ -47,8 +47,8 @@
|
||||
light-gate
|
||||
now=~1111.1.3
|
||||
scry=*sley
|
||||
call-args=[duct=~[/app2] ~ [%connect [~ /] %app2]]
|
||||
expected-moves=[duct=~[/app2] %give %bound %.n [~ /]]~
|
||||
call-args=[duct=~[/app2] ~ [%http-server %connect [~ /] %app2]]
|
||||
expected-moves=[duct=~[/app2] %give %http-server %bound %.n [~ /]]~
|
||||
==
|
||||
::
|
||||
;: weld
|
||||
@ -74,8 +74,8 @@
|
||||
light-gate
|
||||
now=~1111.1.2
|
||||
scry=*sley
|
||||
call-args=[duct=~[/app1] ~ [%connect [~ /] %app1]]
|
||||
expected-moves=[duct=~[/app1] %give %bound %.y [~ /]]~
|
||||
call-args=[duct=~[/app1] ~ [%http-server %connect [~ /] %app1]]
|
||||
expected-moves=[duct=~[/app1] %give %http-server %bound %.y [~ /]]~
|
||||
==
|
||||
:: app1 unbinds
|
||||
::
|
||||
@ -84,7 +84,7 @@
|
||||
light-gate
|
||||
now=~1111.1.3
|
||||
scry=*sley
|
||||
call-args=[duct=~[/app1] ~ [%disconnect [~ /]]]
|
||||
call-args=[duct=~[/app1] ~ [%http-server %disconnect [~ /]]]
|
||||
expected-moves=~
|
||||
==
|
||||
:: app2 binds successfully
|
||||
@ -94,8 +94,8 @@
|
||||
light-gate
|
||||
now=~1111.1.4
|
||||
scry=*sley
|
||||
call-args=[duct=~[/app2] ~ [%connect [~ /] %app2]]
|
||||
expected-moves=[duct=~[/app2] %give %bound %.y [~ /]]~
|
||||
call-args=[duct=~[/app2] ~ [%http-server %connect [~ /] %app2]]
|
||||
expected-moves=[duct=~[/app2] %give %http-server %bound %.y [~ /]]~
|
||||
==
|
||||
::
|
||||
;: weld
|
||||
@ -122,8 +122,8 @@
|
||||
light-gate
|
||||
now=~1111.1.2
|
||||
scry=*sley
|
||||
call-args=[duct=~[/app1] ~ [%connect [~ /] %app1]]
|
||||
expected-moves=[duct=~[/app1] %give %bound %.y [~ /]]~
|
||||
call-args=[duct=~[/app1] ~ [%http-server %connect [~ /] %app1]]
|
||||
expected-moves=[duct=~[/app1] %give %http-server %bound %.y [~ /]]~
|
||||
==
|
||||
:: app2 tries to steal the binding by disconnecting the path
|
||||
::
|
||||
@ -132,7 +132,7 @@
|
||||
light-gate
|
||||
now=~1111.1.3
|
||||
scry=*sley
|
||||
call-args=[duct=~[/app2] ~ [%disconnect [~ /]]]
|
||||
call-args=[duct=~[/app2] ~ [%http-server %disconnect [~ /]]]
|
||||
expected-moves=~
|
||||
==
|
||||
:: app2 doesn't bind successfully because it couldn't remove app1's binding
|
||||
@ -142,8 +142,8 @@
|
||||
light-gate
|
||||
now=~1111.1.4
|
||||
scry=*sley
|
||||
call-args=[duct=~[/app2] ~ [%connect [~ /] %app2]]
|
||||
expected-moves=[duct=~[/app2] %give %bound %.n [~ /]]~
|
||||
call-args=[duct=~[/app2] ~ [%http-server %connect [~ /] %app2]]
|
||||
expected-moves=[duct=~[/app2] %give %http-server %bound %.n [~ /]]~
|
||||
==
|
||||
::
|
||||
;: weld
|
||||
@ -173,7 +173,8 @@
|
||||
scry=*sley
|
||||
^= call-args
|
||||
:* duct=~[/http-blah] ~
|
||||
%inbound-request
|
||||
%http-server
|
||||
%request
|
||||
%.n
|
||||
[%ipv4 .192.168.1.1]
|
||||
[%'GET' '/' ~ ~]
|
||||
@ -182,7 +183,8 @@
|
||||
^- (list move:light-gate)
|
||||
:~ :* duct=~[/http-blah]
|
||||
%give
|
||||
%http-response
|
||||
%http-server
|
||||
%response
|
||||
%start
|
||||
404
|
||||
:~ ['content-type' 'text/html']
|
||||
@ -215,8 +217,8 @@
|
||||
light-gate
|
||||
now=~1111.1.2
|
||||
scry=*sley
|
||||
call-args=[duct=~[/app1] ~ [%connect [~ /] %app1]]
|
||||
expected-moves=[duct=~[/app1] %give %bound %.y [~ /]]~
|
||||
call-args=[duct=~[/app1] ~ [%http-server %connect [~ /] %app1]]
|
||||
expected-moves=[duct=~[/app1] %give %http-server %bound %.y [~ /]]~
|
||||
==
|
||||
:: outside requests a path that app1 has bound to
|
||||
::
|
||||
@ -227,7 +229,8 @@
|
||||
scry=*sley
|
||||
^= call-args
|
||||
:* duct=~[/http-blah] ~
|
||||
%inbound-request
|
||||
%http-server
|
||||
%request
|
||||
%.n
|
||||
[%ipv4 .192.168.1.1]
|
||||
[%'GET' '/' ~ ~]
|
||||
@ -266,12 +269,15 @@
|
||||
:* wire=/run-app/app1 duct=~[/http-blah]
|
||||
^- (hypo sign:light-gate)
|
||||
:- *type
|
||||
:^ %g %unto %http-response
|
||||
^- raw-http-response:light-gate
|
||||
[%start 200 ['content-type' 'text/html']~ [~ (as-octs:mimes:html 'Hiya!')] %.y]
|
||||
:* %g %unto %http-response
|
||||
%start 200
|
||||
['content-type' 'text/html']~
|
||||
[~ (as-octs:mimes:html 'Hiya!')]
|
||||
%.y
|
||||
==
|
||||
==
|
||||
^= expected-move
|
||||
:~ :* duct=~[/http-blah] %give %http-response
|
||||
:~ :* duct=~[/http-blah] %give %http-server %response
|
||||
[%start 200 ['content-type' 'text/html']~ `[5 'Hiya!'] %.y]
|
||||
== == ==
|
||||
::
|
||||
@ -299,8 +305,8 @@
|
||||
light-gate
|
||||
now=~1111.1.2
|
||||
scry=*sley
|
||||
call-args=[duct=~[/app1] ~ [%connect [~ /] %app1]]
|
||||
expected-moves=[duct=~[/app1] %give %bound %.y [~ /]]~
|
||||
call-args=[duct=~[/app1] ~ [%http-server %connect [~ /] %app1]]
|
||||
expected-moves=[duct=~[/app1] %give %http-server %bound %.y [~ /]]~
|
||||
==
|
||||
:: outside requests a path that app1 has bound to
|
||||
::
|
||||
@ -311,7 +317,8 @@
|
||||
scry=*sley
|
||||
^= call-args
|
||||
:* duct=~[/http-blah] ~
|
||||
%inbound-request
|
||||
%http-server
|
||||
%request
|
||||
%.n
|
||||
[%ipv4 .192.168.1.1]
|
||||
[%'GET' '/' ~ ~]
|
||||
@ -349,12 +356,14 @@
|
||||
^= take-args
|
||||
:* wire=/run-app/app1 duct=~[/http-blah]
|
||||
^- (hypo sign:light-gate) :- *type
|
||||
:^ %g %unto %http-response
|
||||
^- raw-http-response:light-gate
|
||||
[%start 200 ['content-type' 'text/html']~ [~ (as-octs:mimes:html 'Hi')] %.n]
|
||||
:* %g %unto %http-response
|
||||
%start 200 ['content-type' 'text/html']~
|
||||
[~ (as-octs:mimes:html 'Hi')]
|
||||
%.n
|
||||
==
|
||||
==
|
||||
^= expected-move
|
||||
:~ :* duct=~[/http-blah] %give %http-response
|
||||
:~ :* duct=~[/http-blah] %give %http-server %response
|
||||
[%start 200 ['content-type' 'text/html']~ `[2 'Hi'] %.n]
|
||||
== == ==
|
||||
:: theoretical outside response
|
||||
@ -367,12 +376,12 @@
|
||||
^= take-args
|
||||
:* wire=/run-app/app1 duct=~[/http-blah]
|
||||
^- (hypo sign:light-gate) :- *type
|
||||
:^ %g %unto %http-response
|
||||
^- raw-http-response:light-gate
|
||||
[%continue [~ (as-octs:mimes:html 'ya!')] %.y]
|
||||
:* %g %unto %http-response
|
||||
[%continue [~ (as-octs:mimes:html 'ya!')] %.y]
|
||||
==
|
||||
==
|
||||
^= expected-move
|
||||
:~ :* duct=~[/http-blah] %give %http-response
|
||||
:~ :* duct=~[/http-blah] %give %http-server %response
|
||||
[%continue `[3 'ya!'] %.y]
|
||||
== == ==
|
||||
::
|
||||
@ -403,8 +412,8 @@
|
||||
light-gate
|
||||
now=~1111.1.2
|
||||
scry=*sley
|
||||
call-args=[duct=~[/app1] ~ [%connect [~ /'~landscape'] %app1]]
|
||||
expected-moves=[duct=~[/app1] %give %bound %.y [~ /'~landscape']]~
|
||||
call-args=[duct=~[/app1] ~ [%http-server %connect [~ /'~landscape'] %app1]]
|
||||
expected-moves=[duct=~[/app1] %give %http-server %bound %.y [~ /'~landscape']]~
|
||||
==
|
||||
:: outside requests a path that app1 has bound to
|
||||
::
|
||||
@ -415,7 +424,8 @@
|
||||
scry=*sley
|
||||
^= call-args
|
||||
:* duct=~[/http-blah] ~
|
||||
%inbound-request
|
||||
%http-server
|
||||
%request
|
||||
%.n
|
||||
[%ipv4 .192.168.1.1]
|
||||
[%'GET' '/~landscape/inner-path' ~ ~]
|
||||
@ -453,12 +463,12 @@
|
||||
^= take-args
|
||||
:* wire=/run-app/app1 duct=~[/http-blah]
|
||||
^- (hypo sign:light-gate) :- *type
|
||||
:^ %g %unto %http-response
|
||||
^- raw-http-response:light-gate
|
||||
[%start 307 ['location' '/~/login?redirect=/~landscape/inner-path']~ ~ %.y]
|
||||
:* %g %unto %http-response
|
||||
[%start 307 ['location' '/~/login?redirect=/~landscape/inner-path']~ ~ %.y]
|
||||
==
|
||||
==
|
||||
^= expected-move
|
||||
:~ :* duct=~[/http-blah] %give %http-response
|
||||
:~ :* duct=~[/http-blah] %give %http-server %response
|
||||
[%start 307 ['location' '/~/login?redirect=/~landscape/inner-path']~ ~ %.y]
|
||||
== == ==
|
||||
:: the browser then fetches the login page
|
||||
@ -479,7 +489,8 @@
|
||||
^= call-args
|
||||
^- [=duct type=* wrapped-task=(hobo task:able:light-gate)]
|
||||
:* duct=~[/http-blah] ~
|
||||
%inbound-request
|
||||
%http-server
|
||||
%request
|
||||
%.n
|
||||
[%ipv4 .192.168.1.1]
|
||||
%'GET'
|
||||
@ -546,8 +557,8 @@
|
||||
light-gate
|
||||
now=~1111.1.2
|
||||
scry=*sley
|
||||
call-args=[duct=~[/gen1] ~ [%serve [~ /] [%home /gen/handler/hoon ~]]]
|
||||
expected-moves=[duct=~[/gen1] %give %bound %.y [~ /]]~
|
||||
call-args=[duct=~[/gen1] ~ [%http-server %serve [~ /] [%home /gen/handler/hoon ~]]]
|
||||
expected-moves=[duct=~[/gen1] %give %http-server %bound %.y [~ /]]~
|
||||
==
|
||||
:: outside requests a path that app1 has bound to
|
||||
::
|
||||
@ -558,7 +569,8 @@
|
||||
scry=*sley
|
||||
^= call-args
|
||||
:* duct=~[/http-blah] ~
|
||||
%inbound-request
|
||||
%http-server
|
||||
%request
|
||||
%.n
|
||||
[%ipv4 .192.168.1.1]
|
||||
[%'GET' '/' ~ ~]
|
||||
@ -614,7 +626,7 @@
|
||||
[%cast %mime !>([['text' 'plain' ~] (as-octs:mimes:html 'one two three')])]
|
||||
==
|
||||
^= expected-move
|
||||
:~ :* duct=~[/http-blah] %give %http-response
|
||||
:~ :* duct=~[/http-blah] %give %http-server %response
|
||||
:* %start
|
||||
200
|
||||
:~ ['content-type' 'text/plain']
|
||||
@ -740,7 +752,7 @@
|
||||
scry=*sley
|
||||
^= call-args
|
||||
:* duct=~[/http-blah] ~
|
||||
%inbound-request
|
||||
%http-server %request
|
||||
%.n
|
||||
[%ipv4 .192.168.1.1]
|
||||
[%'PUT' '/~/channel/1234567890abcdef' ~ ~]
|
||||
@ -749,7 +761,8 @@
|
||||
^- (list move:light-gate)
|
||||
:~ :* duct=~[/http-blah]
|
||||
%give
|
||||
%http-response
|
||||
%http-server
|
||||
%response
|
||||
%start
|
||||
400
|
||||
:~ ['content-type' 'text/html']
|
||||
@ -863,7 +876,8 @@
|
||||
scry=*sley
|
||||
^= call-args
|
||||
:* duct=~[/http-get-open] ~
|
||||
%inbound-request
|
||||
%http-server
|
||||
%request
|
||||
%.n
|
||||
[%ipv4 .192.168.1.1]
|
||||
%'GET'
|
||||
@ -875,7 +889,8 @@
|
||||
^- (list move:light-gate)
|
||||
:~ :* duct=~[/http-get-open]
|
||||
%give
|
||||
%http-response
|
||||
%http-server
|
||||
%response
|
||||
%start
|
||||
200
|
||||
:~ ['content-type' 'text/event-stream']
|
||||
@ -913,7 +928,7 @@
|
||||
light-gate
|
||||
now=(add ~1111.1.2 ~m4)
|
||||
scry=*sley
|
||||
call-args=[duct=~[/http-get-open] ~ %cancel-inbound-request ~]
|
||||
call-args=[duct=~[/http-get-open] ~ %http-server %cancel-request ~]
|
||||
^= expected-moves
|
||||
^- (list move:light-gate)
|
||||
:: closing the channel restarts the timeout timer
|
||||
@ -951,7 +966,8 @@
|
||||
scry=*sley
|
||||
^= call-args
|
||||
:* duct=~[/http-put-request] ~
|
||||
%inbound-request
|
||||
%http-server
|
||||
%request
|
||||
%.n
|
||||
[%ipv4 .192.168.1.1]
|
||||
%'PUT'
|
||||
@ -985,7 +1001,7 @@
|
||||
card.i.moves
|
||||
::
|
||||
%+ expect-eq
|
||||
!> [~[/http-put-request] %give %http-response %start 200 ~ ~ %.y]
|
||||
!> [~[/http-put-request] %give %http-server %response %start 200 ~ ~ %.y]
|
||||
!> i.t.moves
|
||||
::
|
||||
%+ expect-eq
|
||||
@ -1063,7 +1079,8 @@
|
||||
scry=*sley
|
||||
^= call-args
|
||||
:* duct=~[/http-get-open] ~
|
||||
%inbound-request
|
||||
%http-server
|
||||
%request
|
||||
%.n
|
||||
[%ipv4 .192.168.1.1]
|
||||
%'GET'
|
||||
@ -1075,7 +1092,8 @@
|
||||
^- (list move:light-gate)
|
||||
:~ :* duct=~[/http-get-open]
|
||||
%give
|
||||
%http-response
|
||||
%http-server
|
||||
%response
|
||||
%start
|
||||
200
|
||||
:~ ['content-type' 'text/event-stream']
|
||||
@ -1120,7 +1138,8 @@
|
||||
^- (list move:light-gate)
|
||||
:~ :* duct=~[/http-get-open]
|
||||
%give
|
||||
%http-response
|
||||
%http-server
|
||||
%response
|
||||
%continue
|
||||
:- ~
|
||||
%- as-octs:mimes:html
|
||||
@ -1143,7 +1162,8 @@
|
||||
scry=*sley
|
||||
^= call-args
|
||||
:* duct=~[/http-put-request] ~
|
||||
%inbound-request
|
||||
%http-server
|
||||
%request
|
||||
%.n
|
||||
[%ipv4 .192.168.1.1]
|
||||
%'PUT'
|
||||
@ -1166,7 +1186,7 @@
|
||||
[%leaf "wrong number of moves: {<(lent moves)>}"]~
|
||||
::
|
||||
%+ expect-eq
|
||||
!> [~[/http-put-request] %give %http-response %start 200 ~ ~ %.y]
|
||||
!> [~[/http-put-request] %give %http-server %response %start 200 ~ ~ %.y]
|
||||
!> i.moves
|
||||
==
|
||||
:: the client connection is detected to be broken
|
||||
@ -1176,7 +1196,7 @@
|
||||
light-gate
|
||||
now=(add ~1111.1.2 ~m6)
|
||||
scry=*sley
|
||||
call-args=[duct=~[/http-get-open] ~ %cancel-inbound-request ~]
|
||||
call-args=[duct=~[/http-get-open] ~ %http-server %cancel-request ~]
|
||||
^= expected-moves
|
||||
^- (list move:light-gate)
|
||||
:: closing the channel restarts the timeout timer
|
||||
@ -1213,7 +1233,8 @@
|
||||
scry=*sley
|
||||
^= call-args
|
||||
:* duct=~[/http-get-open] ~
|
||||
%inbound-request
|
||||
%http-server
|
||||
%request
|
||||
%.n
|
||||
[%ipv4 .192.168.1.1]
|
||||
%'GET'
|
||||
@ -1225,7 +1246,8 @@
|
||||
^- (list move:light-gate)
|
||||
:~ :* duct=~[/http-get-open]
|
||||
%give
|
||||
%http-response
|
||||
%http-server
|
||||
%response
|
||||
%start
|
||||
200
|
||||
:~ ['content-type' 'text/event-stream']
|
||||
@ -1267,9 +1289,9 @@
|
||||
results8
|
||||
results9
|
||||
==
|
||||
:: +test-fetch-basic: tests a single request, single reply style http request
|
||||
:: +test-client-request-basic: tests a single request, single reply style http request
|
||||
::
|
||||
++ test-fetch-basic
|
||||
++ test-client-request-basic
|
||||
:: send a %born event to use /initial-born-duct for requests
|
||||
::
|
||||
=^ results1 light-gate
|
||||
@ -1285,7 +1307,8 @@
|
||||
^= expected-moves
|
||||
:~ :* duct=~[/initial-born-duct]
|
||||
%give
|
||||
%form
|
||||
%http-server
|
||||
%set-config
|
||||
*http-config:light
|
||||
== == ==
|
||||
::
|
||||
@ -1304,7 +1327,8 @@
|
||||
scry=*sley
|
||||
^= call-args
|
||||
:* duct=~[/http-get-request] ~
|
||||
%fetch
|
||||
%http-client
|
||||
%request
|
||||
request
|
||||
*outbound-config:light
|
||||
==
|
||||
@ -1312,7 +1336,8 @@
|
||||
^- (list move:light-gate)
|
||||
:~ :* duct=~[/initial-born-duct]
|
||||
%give
|
||||
%http-request
|
||||
%http-client
|
||||
%request
|
||||
id=0
|
||||
~
|
||||
method=%'GET'
|
||||
@ -1330,7 +1355,8 @@
|
||||
^= call-args
|
||||
:+ duct=~[/initial-born-duct] ~
|
||||
^- task:able:light
|
||||
:* %receive
|
||||
:* %http-client
|
||||
%receive
|
||||
id=0
|
||||
^- raw-http-response:light
|
||||
:* %start
|
||||
@ -1351,7 +1377,8 @@
|
||||
^- (list move:light-gate)
|
||||
:~ :* duct=~[/http-get-request]
|
||||
%give
|
||||
%http-finished
|
||||
%http-client
|
||||
%finished
|
||||
::
|
||||
:- 200
|
||||
:~ ['content-type' 'text/html']
|
||||
@ -1371,9 +1398,9 @@
|
||||
results2
|
||||
results3
|
||||
==
|
||||
:: +test-fetch-multiple-cards: tests when complete=%.n
|
||||
:: +test-client-request-multiple-cards: tests when complete=%.n
|
||||
::
|
||||
++ test-fetch-multiple-cards
|
||||
++ test-client-request-multiple-cards
|
||||
:: send a %born event to use /initial-born-duct for requests
|
||||
::
|
||||
=^ results1 light-gate
|
||||
@ -1389,7 +1416,8 @@
|
||||
^= expected-moves
|
||||
:~ :* duct=~[/initial-born-duct]
|
||||
%give
|
||||
%form
|
||||
%http-server
|
||||
%set-config
|
||||
*http-config:light
|
||||
== == ==
|
||||
::
|
||||
@ -1408,7 +1436,8 @@
|
||||
scry=*sley
|
||||
^= call-args
|
||||
:* duct=~[/http-get-request] ~
|
||||
%fetch
|
||||
%http-client
|
||||
%request
|
||||
request
|
||||
*outbound-config:light
|
||||
==
|
||||
@ -1416,7 +1445,8 @@
|
||||
^- (list move:light-gate)
|
||||
:~ :* duct=~[/initial-born-duct]
|
||||
%give
|
||||
%http-request
|
||||
%http-client
|
||||
%request
|
||||
id=0
|
||||
~
|
||||
method=%'GET'
|
||||
@ -1434,7 +1464,8 @@
|
||||
^= call-args
|
||||
:+ duct=~[/initial-born-duct] ~
|
||||
^- task:able:light
|
||||
:* %receive
|
||||
:* %http-client
|
||||
%receive
|
||||
id=0
|
||||
^- raw-http-response:light
|
||||
:* %start
|
||||
@ -1449,7 +1480,8 @@
|
||||
^- (list move:light-gate)
|
||||
:~ :* duct=~[/http-get-request]
|
||||
%give
|
||||
%http-progress
|
||||
%http-client
|
||||
%progress
|
||||
::
|
||||
:- 200
|
||||
:~ ['content-type' 'text/html']
|
||||
@ -1470,7 +1502,8 @@
|
||||
^= call-args
|
||||
:+ duct=~[/initial-born-duct] ~
|
||||
^- task:able:light
|
||||
:* %receive
|
||||
:* %http-client
|
||||
%receive
|
||||
id=0
|
||||
^- raw-http-response:light
|
||||
:* %continue
|
||||
@ -1481,7 +1514,8 @@
|
||||
^- (list move:light-gate)
|
||||
:~ :* duct=~[/http-get-request]
|
||||
%give
|
||||
%http-progress
|
||||
%http-client
|
||||
%progress
|
||||
::
|
||||
:- 200
|
||||
:~ ['content-type' 'text/html']
|
||||
@ -1502,7 +1536,8 @@
|
||||
^= call-args
|
||||
:+ duct=~[/initial-born-duct] ~
|
||||
^- task:able:light
|
||||
:* %receive
|
||||
:* %http-client
|
||||
%receive
|
||||
id=0
|
||||
^- raw-http-response:light
|
||||
:* %continue
|
||||
@ -1513,7 +1548,8 @@
|
||||
^- (list move:light-gate)
|
||||
:~ :* duct=~[/http-get-request]
|
||||
%give
|
||||
%http-finished
|
||||
%http-client
|
||||
%finished
|
||||
::
|
||||
:- 200
|
||||
:~ ['content-type' 'text/html']
|
||||
@ -1693,7 +1729,8 @@
|
||||
scry=*sley
|
||||
^= call-args
|
||||
:* duct=~[/http-blah] ~
|
||||
%inbound-request
|
||||
%http-server
|
||||
%request
|
||||
%.n
|
||||
[%ipv4 .192.168.1.1]
|
||||
[%'GET' '/~/login?redirect=/~landscape/inner-path' ~ ~]
|
||||
@ -1702,7 +1739,8 @@
|
||||
^- (list move:light-gate)
|
||||
:~ :* duct=~[/http-blah]
|
||||
%give
|
||||
%http-response
|
||||
%http-server
|
||||
%response
|
||||
%start
|
||||
200
|
||||
:~ ['content-type' 'text/html']
|
||||
@ -1721,7 +1759,8 @@
|
||||
scry=*sley
|
||||
^= call-args
|
||||
:* duct=~[/http-blah] ~
|
||||
%inbound-request
|
||||
%http-server
|
||||
%request
|
||||
%.n
|
||||
[%ipv4 .192.168.1.1]
|
||||
%'POST'
|
||||
@ -1735,7 +1774,8 @@
|
||||
^- (list move:light-gate)
|
||||
:~ :* duct=~[/http-blah]
|
||||
%give
|
||||
%http-response
|
||||
%http-server
|
||||
%response
|
||||
%start
|
||||
307
|
||||
:~ ['location' '/~landscape']
|
||||
@ -1782,7 +1822,8 @@
|
||||
scry=*sley
|
||||
^= call-args
|
||||
:* duct=~[/http-put-request] ~
|
||||
%inbound-request
|
||||
%http-server
|
||||
%request
|
||||
%.n
|
||||
[%ipv4 .192.168.1.1]
|
||||
%'PUT'
|
||||
@ -1829,7 +1870,7 @@
|
||||
card.i.t.moves
|
||||
::
|
||||
%+ expect-eq
|
||||
!> [~[/http-put-request] %give %http-response %start 200 ~ ~ %.y]
|
||||
!> [~[/http-put-request] %give %http-server %response %start 200 ~ ~ %.y]
|
||||
!> i.t.t.moves
|
||||
::
|
||||
%+ expect-eq
|
||||
|
Loading…
Reference in New Issue
Block a user