diff --git a/desk/app/genuine.hoon b/desk/app/genuine.hoon new file mode 100644 index 00000000..79094807 --- /dev/null +++ b/desk/app/genuine.hoon @@ -0,0 +1,87 @@ +/+ default-agent, verb, dbug, server +:: +|% +++ give-payload + |= [id=@ta =simple-payload:http] + (give-simple-payload:app:server id simple-payload) +++ make-secret + |= eny=@uvJ + ^- cord + (scot %uw eny) ++$ card card:agent:gall ++$ versioned-state + $% state-0 + == ++$ state-0 + $: %0 + secret=cord + == +-- +=| state-0 +=* state - +%- agent:dbug +%+ verb | +^- agent:gall +|_ =bowl:gall ++* this . + def ~(. (default-agent this %.n) bowl) +:: +++ on-init + :_ this(secret (make-secret eny.bowl)) + ~[[%pass /eyre/connect %arvo %e %connect [~ /genuine] dap.bowl]] +:: +++ on-poke + |= [=mark =vase] + ^- (quip card _this) + ?+ mark (on-poke:def mark vase) + %rotate + ?> =(src.bowl our.bowl) + `this(secret (make-secret eny.bowl)) + %handle-http-request + =+ !<([id=@ta inbound-request:eyre] vase) + :_ this + =/ full-line=request-line:server (parse-request-line:server url.request) + ?. ?=([%genuine @ ~] site.full-line) + (give-payload id not-found:gen:server) + =/ line i.t.site.full-line + ?+ method.request (give-payload id not-found:gen:server) + %'GET' (give-payload id (json-response:gen:server b+=(line secret))) + == + == +:: +++ on-agent on-agent:def +:: +++ on-watch + |= =path + ^- (quip card _this) + ?+ path (on-watch:def path) + [%http-response *] `this + == +:: +++ on-fail + |= [=term =tang] + (mean ':sub +on-fail' term tang) +:: +++ on-leave on-leave:def +++ on-save !>(state) +++ on-load + |= old-state=vase + ^- (quip card _this) + =/ old !<(versioned-state old-state) + `this(state old) +++ on-arvo + |= [=wire =sign-arvo] + ^- (quip card _this) + ?+ sign-arvo (on-arvo:def wire sign-arvo) + [%eyre %bound *] + ~? !accepted.sign-arvo + [dap.bowl 'eyre bind rejected!' binding.sign-arvo] + [~ this] + == +++ on-peek + |= =path + ^- (unit (unit cage)) + ?+ path [~ ~] + [%x %secret ~] ``json+!>([%s secret]) + == +-- diff --git a/desk/desk.bill b/desk/desk.bill index 367e8815..5185c4ae 100644 --- a/desk/desk.bill +++ b/desk/desk.bill @@ -8,4 +8,5 @@ %treaty %vitals %growl + %genuine ==