!: :: %eyre, http servant !? 164 :::: |= pit=vase => =~ |% :: interfaces ++ chop ,[p=@ud q=@da] :: see ++ gift :: out result <-$ $% [%thou p=httr] :: raw http response [%thus p=@ud q=(unit hiss)] :: http request/cancel [%veer p=@ta q=path r=@t] :: drop-through [%vega p=path] :: drop-through == :: ++ gram :: inter-ship message $? [[%lon ~] p=hole] :: login request [[%aut ~] p=hole] :: login reply [[%hat ~] p=hole q=hart] :: login redirect == :: ++ hasp ,[p=ship q=term] :: don't see %gall ++ hapt ,[p=ship q=path] :: do see %gall ++ kiss :: in request ->$ $% [%born ~] :: new unix process [%crud p=@tas q=(list tank)] :: XX rethink [%init p=@p] :: report install :: [%them p=(unit hiss)] :: outbound request :: [%they p=@ud q=httr] :: inbound response [%this p=? q=clip r=httq] :: inbound request [%thud ~] :: inbound cancel [%wart p=sock q=@tas r=_`[path *]`*gram] :: urbit message == :: ++ move ,[p=duct q=(mold note gift)] :: local move ++ note :: out request $-> $% :: $: %a :: to %ames :: $% [%want p=sock q=path r=*] :: :: == == :: $: %c :: to %clay $% [%warp p=sock q=riff] :: == == :: $: %d :: to %dill $% [%flog p=[%crud p=@tas q=(list tank)]] :: == == :: $: %f :: to %ford $% [%exec p=@p q=(unit silk)] :: [%wasp p=@p q=@uvH] :: == == == :: ++ rave :: see %clay $% [& p=mood] :: == :: ++ riff ,[p=desk q=(unit rave)] :: see %clay ++ silk :: see %ford $& [p=silk q=silk] :: $% [%boil p=mark q=beam r=path] :: [%cast p=mark q=silk] :: [%done p=(set beam) q=cage] :: == :: ++ sine :: $? sign :: $: %g :: $% [%veer p=@ta q=path r=@t] :: [%vega p=path] :: == == == :: ++ sign :: in result $<- $? $: %c :: by %clay $% [%writ p=riot] :: == == :: $: %f :: by %ford $% [%made p=@uvH q=(each cage tang)] :: [%news ~] :: == == :: $: @tas :: by any $% [%crud p=@tas q=(list tank)] :: == == == :: -- :: |% :: models ++ bolo :: eyre state $: %0 :: version gub=@t :: random identity hov=(unit ship) :: master for remote ged=duct :: client interface ney=@uvI :: rolling entropy dop=(map host ship) :: host aliasing liz=(jug beam (each duct oryx)) :: clay subscriptions wup=(map hole cyst) :: secure sessions == :: ++ cyst :: client session $: ced=cred :: credential cez=[p=ship q=(set ship)] :: authenticated cug=(list ,@t) :: unacked cookies lax=@da :: last used == :: -- :: |% ++ coss :: cookie search |= [nam=@t mah=math] ^- (unit hole) =+ ^= cok ^- (list ,@t) =+ cok=(~(get by mah) 'cookie') ?~(cok ~ u.cok) |- ^- (unit hole) ?~ cok ~ =+ mar=`(unit (list ,[p=@t q=@t]))`(rush i.cok cock:epur) ?~ mar $(cok t.cok) |- ^- (unit hole) ?~ u.mar ^$(cok t.cok) ?:(=(nam p.i.u.mar) [~ q.i.u.mar] $(u.mar t.u.mar)) ++ ecco :: eat headers |= hed=(list ,[p=@t q=@t]) ^- math %+ roll hed |= [a=[p=cord cord] b=math] =. p.a (cass (trip p.a)) (~(add ja b) a) ++ loga :: tanks to manx |= tac=(list tank) ^- manx =+ rolt=|=(a=wall `tape`?~(a ~ :(weld i.a "\0a" $(a t.a)))) =+ mec=(rolt (turn tac |=(a=tank (rolt (wash 0^160 a))))) ;html ;head ;meta(charset "utf-8"); ;title: server error == ;body:pre:code:"{mec}" == :: ++ lode |= [dep=@uvH max=manx] ^- manx ?> ?=([[%html ~] [[%head ~] *] [[%body ~] ^] ~] max) :: XX static ?~ dep max max(c.i.c :_(c.i.c.max ;script@"/~/on/{}.js";)) :: ++ js :: static javascript |% ++ poll ''' urb.tries = 0 urb.call = function() { xhr = new XMLHttpRequest() xhr.open('GET', urb.poll, true) xhr.addEventListener('load', function() { // if(~~(this.status / 100) == 4) // return document.write(xhr.responseText) if(this.status !== 205) { return urb.keep() } document.location.reload() }) xhr.addEventListener('error', urb.keep) xhr.addEventListener('abort', urb.keep) xhr.send() } urb.keep = function() { setTimeout(urb.call,1000*urb.tries) urb.tries++ } urb.call() ''' -- -- |% :: functions ++ ye :: per event =| $: $: hen=duct :: event floor $: now=@da :: event date eny=@ :: unique entropy our=ship :: current ship sky=$+(* (unit)) :: system namespace == :: mow=(list move) :: pending actions == :: bolo :: all vane state == :: =* bol -> |% ++ abet ^- [(list move) bolo] [(flop mow) bol] :: ++ adit .(ney (mix eny ney)) :: ++ anon (add our ^~((bex 64))) :: pseudo-sub ++ axon |= [tea=wire typ=type sih=sign] ^+ +> ?- -.+.sih %crud +>.$(mow [[hen %slip %d %flog +.sih] mow]) :: %made ?+ tea +>.$ ~ :: ~& e/ford/hen ?- -.q.sih | (fail 404 p.sih p.q.sih) & =* cag p.q.sih ?+ p.cag (back ~ p.sih cag) %hipo :: hacks! ?> ?=(@tas -.q.q.cag) $(p.q.sih [-.q.q.cag (slot 3 q.cag)]) :: %mime ~| q.q.cag =+ ((hard ,[mit=mite rez=octs]) q.q.cag) :: XX (muff %thou 200 [content-type/(moon mit)]~ ~ rez) == == == :: %news (jive %b &) :: dependency updated %writ :: ?^ tea ~&(e/missed/writ/tea=tea +>.$) ?~ p.sih +>.$ =+ `[@ caz=case dez=desk]`p.u.p.sih ?> ?=(%ud -.caz) (jive (joba dez (jone p.caz))) == :: ++ apex |= kyz=kiss ^+ +> ?- -.kyz %born +>.$(ged hen) :: register external %crud +>.$(mow [[hen %slip %d %flog kyz] mow]) %init :: register ownership %_ +>.$ hov ?~(hov [~ p.kyz] [~ (min u.hov p.kyz)]) == :: %this :: inbound request =* sec p.kyz :: ? :: https bit =* heq r.kyz :: httq :: request content =+ ryp=`quri`(rash q.heq zest:epur) =+ mah=(ecco r.heq) =+ ^= pul ^- purl ?- -.ryp & ?>(=(sec p.p.p.ryp) p.ryp) | =+ hot=(~(get ja mah) %host) ?> ?=([@ ~] hot) [[sec (rash i.hot thor:epur)] p.ryp q.ryp] == =. p.p.pul |(p.p.pul ?=(hoke r.p.pul)) (hell pul +.kyz [p.heq mah s.heq]) :: %thud :: cancel request ~& e/gone/hen +>.$ :: %wart :: remote request =+ mez=((soft gram) r.kyz) ?~ mez ~& [%strange-wart p.kyz q.kyz] +>.$ ?- -<.u.mez %lon !! %aut !! %hat !! == == :: ++ back :: %ford bounce |= [tea=wire dep=@uvH cag=cage] (miff tea %f %exec our `[%cast %mime %done ~ cag]) :: XX deps :: ++ doss :: host to ship |= hot=host ^- (unit ship) =+ gow=(~(get by dop) hot) ?^ gow gow ?. &(?=(& -.hot) ?=(^ p.hot)) ~ (rush -:(flop p.hot) fed:ag) :: ++ fail :: request failed |= [sas=@ud dep=@uvH mez=tang] ^+ +> :: (back ~ dep %tang !>(mez)) :: XX broken tang->mime door in ford (resp sas text//html (poxo (lode dep (loga mez)))) :: ++ heck :: extract err beak |= [oar=ship pul=purl] ^- (unit beak) %- bind :_ |=(a=$&(beam beak) ?^(-.a -.a a)) ^- (unit $&(beam beak)) ?. ?=([%'~' ^] q.q.pul) (heft oar q.pul) ?+ i.t.q.q.pul ~ %as ?~(t.t.q.q.pul ~ $(q.q.pul t.t.t.q.q.pul)) %on ~ ::(tome (scot %p oar) == ++ heft :: regular request |= [oar=ship pok=pork] ^- (unit beam) ?~ q.pok $(q.pok /index) ?. ((sane %tas) i.q.pok) (tome q.pok) `[[oar i.q.pok da/now] (flop t.q.pok)] :: ++ hell :: request, no ship |= [pul=purl hyx=httx moh=moth] ^+ +> =+ hon=(horn pul q.hyx moh) ?^ hon (muff u.hon) =+ oar=(fall (doss r.p.pul) (need hov)) =+ ext=(fall p.q.pul %urb) %- |=(a=(each ,_..hell tang) ?~(-.a p.a (fail 404 0v0 >%exit< p.a))) %- mule |. ^+ ..hell =+ hev=(heft oar q.pul) ?^ hev =+ ced=ced.q:(huff our q.hyx pul moh) =: s.u.hev [%web ~(rent co (flux:ya /'' r.pul ced)) s.u.hev] r.u.hev ?+(r.u.hev r.u.hev [%ud %0] da/now) == (honk oar [%cast %mime [%boil ext u.hev ~]]) =+ hem=(hemp oar [q r]:pul) ?~ hem ~|(strange-path/q.q.pul !!) ?- -.u.hem & ?. ?=([~ %js] p.q.pul) :: XX treat non-json cases? ~! hem ?~ p.u.hem ..hell (howa ~ p.u.hem) %^ resp 200 text//javascript """ window.urb = \{poll: "/{(apex:earn %| q.pul(u.p %json) r.pul)}"} {(trip poll:js)} """ :: | ~| aute/p.u.hem ~| q.moh =+ hez=(huff our q.hyx pul moh) =. q.cez.q.hez ?. =(anon p.p.u.hem) q.cez.q.hez (~(put in q.cez.q.hez) p.p.u.hem) =. wup (~(put by wup) hez) ?^ cug.q.hez =+ rel=;html:script:"document.location.reload()" =+ tuv=(tuff 200 text//html (crip (poxo rel))) =. q.tuv (weld :_(q.tuv (turn `(list ,@t)`cug.q.hez |=(a=cord set-cookie/a)))) (muff tuv) ~| hez !! == :: ++ hemp :: auxillary(/~) request |= [oar=ship pok=pork quy=quay] ^- (unit (each ,@uvH ,[p=ship q=pork])) ?: ?=([%'~~' *] q.pok) $(q.pok ['~' %as %own t.q.pok]) :: auth shortcut ?. ?=([%'~' @ *] q.pok) ~ :- ~ =* pef i.t.q.pok =+ but=t.t.q.pok :: XX =* ?+ pef ~|(pfix-lost/`path`/~/[pef] !!) %on :- %& ~| on/bad-path/but ?> ?=([@ ~] but) (slav %uv i.but) %as :- %| ~| bad-ship/?~(but ~ i.but) ?~ but !! :_ pok(q t.but) ?+ i.but (slav %p i.but) %anon anon %own our == == :: ++ hoot :: clay request |= [our=ship wir=path his=ship rif=riff] (miff wir %c [%warp [our his] rif]) :: ++ hone :: kill ford |= [our=ship ses=hole] (miff ~ %f [%exec our ~]) :: ++ honk :: ford request |= [our=ship kas=silk] :: ~& [%honk our num ses -.kas] (miff ~ %f [%exec our `kas]) :: ++ horn :: irregular request |= [pul=purl cip=clip moh=moth] ^- (unit gift) ?+ [(fall p.q.pul %$) q.q.pul] ~ [?(%ico %png) %favicon ~] :- ~ %^ tuff 200 image//png 0w89wg.GV4jA.l9000.00dPb.YzBT6.giO00.o100d.wZcqc.a9tg-.VTG0b. AUIvE.HBM3g.cK4SE.0aagi.l090p.I1P5g.Y-80r.y1YS9.1xE~Y.qgpFY. vKN1V.905y0.2UwvL.43TUw.uL406.0-31h.xwoJF.Ul454.ilk00.00Yps. BNumh.xpl9B.pS5Ji.i1BoC.ZAgg1.BsC5T.t6pLk.Thohn.gp000.0ov~P. 7M000.0o840.00010.0001i.h4x93.g0000.Eq2wR.7jB29 :: [%txt %robots ~] :- ~ %^ tuff 200 text//plain %- role :~ 'User-agent: *' 'Disallow: /' == == :: ++ howa :: ford %wasp request |= [tea=wire dep=@uvH] (miff tea %f [%wasp our dep]) :: ++ huff :: request by ship |= [our=ship cip=clip pul=purl moh=moth] ^- [p=hole q=cyst] =* sec p.p.pul =+ pef=(rsh 3 1 (scot %p our)) =+ lig=(coss pef q.moh) ?^ lig =+ cyz=(need (~(get by wup) u.lig)) [u.lig cyz(cug ~)] =+ ses=(rsh 3 1 (scot %p (end 6 1 ney))) :- ses ^- cyst :* ^- cred :* [sec q.p.pul r.p.pul] ~ (rsh 3 1 (scot %p (end 6 1 (shaf %oryx ses)))) :: =+ lag=(~(get by q.moh) %accept-language) ?~(lag ~ ?~(u.lag ~ [~ i.u.lag])) :: cip ~ == [anon ~] :: :: ~ :: :_ ~ %^ cat 3 (cat 3 (cat 3 pef '=') ses) :: (cat 3 '; HttpOnly' ?.(sec '' '; Secure')) '; Path=/; HttpOnly' :: now :: ~ :: [1 ~] == :: ++ jive :: success json |= jon=json (resp 205 application//json (pojo jon)) :: ++ muff :: return card |= gef=gift +>(mow :_(mow [hen %give gef])) :: ++ miff :: pass card |= noe=[wire note] +>(mow :_(mow [hen %pass noe])) :: ++ resp :: mime response |= [sas=@uG mit=mite bod=tape] (muff (tuff sas mit (crip bod))) :: ++ tuff :: mimed response |= [sas=@uG mit=mite rez=@] :: (weld (turn cug |=(a=@t ['set-cookie' a])) [%thou `httr`[sas ~[content-type/(moon mit)] [~ (taco rez)]]] :: ++ ya :: session engine :: =| [[our=ship ses=hole] cyst] ::serf cyst] :: =* sef ->- =* cyz -> |% ++ flux :: credential caboose |= [nyp=path quy=quay ced=cred] ^- coin :* %many [%$ %ta ~] [%blob ced] |- ^- (list coin) ?~ quy ~ [[%$ %t p.i.quy] [%$ %t q.i.quy] $(quy t.quy)] == ++ inte ^- (unit $&([%lon purl] gram)) ~ -- -- -- . == =| bolo =* bol - |= [now=@da eny=@ ski=sled] :: activate ^? :: opaque core |% :: ++ call :: handle request |= $: hen=duct hic=(hypo (hobo kiss)) == => %= . :: XX temporary q.hic ^- kiss ?: ?=(%soft -.q.hic) ((hard kiss) p.q.hic) ?: (~(nest ut -:!>(*kiss)) | p.hic) q.hic ~& [%eyre-call-flub (,@tas `*`-.q.hic)] ((hard kiss) q.hic) == ^- [p=(list move) q=_..^$] =| our=ship :: XX =+ ska=(slod ski) =+ sky=|=(* `(unit)`=+(a=(ska +<) ?~(a ~ ?~(u.a ~ [~ u.u.a])))) =. ney (shax :(mix (shax now) +(eny) ney)) :: XX!! shd not need ^- [p=(list move) q=_..^$] =. gub ?.(=(0 gub) gub (cat 3 (rsh 3 1 (scot %p (end 6 1 eny))) '-')) =^ mos bol abet:(apex:~(adit ye [hen [now eny our sky] ~] bol) q.hic) [mos ..^$] :: ++ doze |= [now=@da hen=duct] ^- (unit ,@da) ~ :: ++ load |= old=_[%0 gub hov ged ney dop **] ^+ ..^$ ..^$(+>- (bolo old)) :: ++ scry |= [our=(unit (set monk)) ren=@tas who=ship syd=desk lot=coin tyl=path] ^- (unit (unit (pair mark ,*))) ~ :: ++ stay `bolo`+>-.$ ++ take :: accept response |= [tea=wire hen=duct hin=(hypo sine)] ^- [p=(list move) q=_..^$] ?: ?=(%veer +<.q.hin) :: vomit [[hen %give +.q.hin]~ ..^$] ?: ?=(%vega +<.q.hin) :: vomit [[hen %give +.q.hin]~ ..^$] =| our=ship :: XX =+ ska=(slod ski) =+ sky=|=(* `(unit)`=+(a=(ska +<) ?~(a ~ ?~(u.a ~ [~ u.u.a])))) =. ney (shax :(mix (shax now) +(eny) ney)) :: XX!! shd not need ^- [p=(list move) q=_..^$] =. gub ?.(=(0 gub) gub (cat 3 (rsh 3 1 (scot %p (end 6 1 eny))) '-')) =^ mos bol =< abet %^ axon:~(adit ye [hen [now eny our sky] ~] bol) tea (~(peek ut p.hin) %free 3) q.hin [mos ..^$] --