Skip to content

Commit

Permalink
Merge pull request #305 from tloncorp/develop
Browse files Browse the repository at this point in the history
Promote to staging
  • Loading branch information
jamesacklin authored Jan 21, 2025
2 parents 9ccb07a + f52922b commit d0b389c
Show file tree
Hide file tree
Showing 7 changed files with 178 additions and 32 deletions.
76 changes: 53 additions & 23 deletions desk/app/bait.hoon
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/- reel
/+ default-agent, verb, dbug, server, *reel
/+ default-agent, verb, dbug, server, logs, *reel
|%
+$ card card:agent:gall
+$ versioned-state
Expand Down Expand Up @@ -64,8 +64,9 @@
%- agent:dbug
%+ verb |
|_ =bowl:gall
+* this .
def ~(. (default-agent this %|) bowl)
+* this .
def ~(. (default-agent this %|) bowl)
log ~(. logs [our.bowl /logs])
::
++ on-init
^- (quip card _this)
Expand Down Expand Up @@ -115,38 +116,63 @@
::
%'POST'
?~ body.request
(give-not-found 'body not found')
:_ (give-not-found 'body not found')
%^ tell:log %crit
~['POST body not found']
~['event'^s+'Lure POST Fail' 'flow'^s+'lure']
?. =('ship=%7E' (end [3 8] q.u.body.request))
(give-not-found 'ship not found in body')
=/ joiner (slav %p (cat 3 '~' (rsh [3 8] q.u.body.request)))
=; [=bite:reel inviter=(unit ship)]
:_ (give-not-found 'ship not found in body')
%^ tell:log %crit
~['ship not found in POST body']
~['event'^s+'Lure POST Fail' 'flow'^s+'lure']
=/ joiner=@p (slav %p (cat 3 '~' (rsh [3 8] q.u.body.request)))
::
=/ token
?~ ext.full-line i.line
(crip "{(trip i.line)}.{(trip u.ext.full-line)}")
=>
|%
++ lure-log
|= [=volume:logs event=@t =echo:logs]
%^ tell:log volume
echo
:~ 'event'^s+event
'flow'^s+'lure'
'lure-id'^s+token
'lure-joiner'^s+(scot %p joiner)
==
--
=; [bite=(unit bite:reel) inviter=(unit ship)]
?~ bite
:_ (give-not-found 'invite token not found')
%^ lure-log %crit 'Invite Token Missing'
~[leaf+"invite token {<token>} not found"]
?~ inviter
(give-not-found 'inviter not found')
:_ (give-not-found 'inviter not found')
%^ lure-log %crit 'Inviter Not Found'
~['inviter not found']
^- (list card)
:: TODO: figure out if we need to send both pokes
:* :* %pass /bite %agent [u.inviter %reel]
%poke %reel-bite !>(bite)
==
:* %pass /bite %agent [our.bowl %reel]
%poke %reel-bite !>(bite)
:* %^ lure-log %info 'Invite Redeemed'
~[leaf+"{<joiner>} redeemed lure invite from {<u.inviter>}"]
::
:* %pass /bite %agent [u.inviter %reel]
%poke %reel-bite !>(u.bite)
==
(give (manx-response:gen:server (sent-page joiner)))
(give (manx-response:gen:server (sent-page joiner)))
==
=/ =(pole knot) line
?: ?=([@ @ ~] line)
=/ inviter (slav %p i.line)
=/ old-token i.t.line
:_ `inviter
[%bite-1 old-token joiner inviter]
=/ token
?~ ext.full-line i.line
(crip "{(trip i.line)}.{(trip u.ext.full-line)}")
`[%bite-1 old-token joiner inviter]
=/ =metadata:reel (~(gut by token-metadata) token *metadata:reel)
?~ type=(~(get by fields.metadata) 'bite-type')
~|("no bite type for token: {<token>}" !!)
[~ ~]
?> =('2' u.type)
:- [%bite-2 token joiner metadata]
?~ inviter-field=(~(get by fields.metadata) 'inviter') ~
:- `[%bite-2 token joiner metadata]
?~ inviter-field=(~(get by fields.metadata) 'inviter')
~
`(slav %p u.inviter-field)
==
++ get-request
Expand Down Expand Up @@ -220,5 +246,9 @@
[~ this]
==
::
++ on-fail on-fail:def
++ on-fail
|= [=term =tang]
^- (quip card _this)
:_ this
[(fail:log term tang ~)]~
--
32 changes: 25 additions & 7 deletions desk/app/reel.hoon
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/- reel
/+ default-agent, verb, dbug, *reel
/+ default-agent, verb, dbug, logs, *reel
|%
+$ card card:agent:gall
+$ versioned-state
Expand Down Expand Up @@ -66,8 +66,9 @@
%- agent:dbug
%+ verb |
|_ =bowl:gall
+* this .
def ~(. (default-agent this %|) bowl)
+* this .
def ~(. (default-agent this %|) bowl)
log ~(. logs [our.bowl /logs])
::
++ on-init
^- (quip card _this)
Expand Down Expand Up @@ -157,14 +158,20 @@
=+ !<(confirmation:reel vase)
=. open-describes (~(del in open-describes) nonce)
?~ md=(~(get by our-metadata) nonce)
~|("no metadata for nonce: {<nonce>}" !!)
:_ this :_ ~
%^ tell:log %crit
~[leaf+"failed to receive metadata for nonce {<nonce>}"]
~['event'^s+'Invite Creation Failed' 'flow'^s+'lure']
=/ ids=(list [id=cord =token:reel])
%+ skim
~(tap by stable-id)
|= [key=cord =token:reel]
=(nonce token)
?~ ids
~|("no stable id for nonce: {<nonce>}" !!)
:_ this :_ ~
%^ tell:log %crit
~[leaf+"no stable id found for nonce {<nonce>}"]
~['event'^s+'Invite Creation Failed' 'flow'^s+'lure']
=* id -<.ids
:: update the token the id points to
=. stable-id (~(put by stable-id) id token)
Expand All @@ -174,13 +181,19 @@
:_ this
=/ url (cat 3 vic token)
=/ path (stab (cat 3 '/v1/id-link/' id))
:- %^ tell:log %info
~[leaf+"invite link for {(trip id)} created"]
~['event'^s+'Invite Link Created' 'flow'^s+'lure' 'lure-id'^s+token]
~[[%give %fact ~[path] %json !>(s+url)]]
::
%reel-undescribe
?> =(our.bowl src.bowl)
=+ !<(=token:reel vase)
:: the token here should be the actual token given to us by the provider
:_ this(our-metadata (~(del by our-metadata) token))
:- %^ tell:log %info
~[leaf+"invite link removed"]
~['event'^s+'Invite Link Removed' 'flow'^s+'lure' 'lure-id'^s+token]
~[[%pass /undescribe %agent [civ %bait] %poke %bait-undescribe !>(token)]]
:: old pokes for getting links, we no longer use these because all links
:: are unique to that ship/user and can be scried out
Expand Down Expand Up @@ -298,7 +311,8 @@
[%set-ship ~]
?> ?=([%khan %arow *] sign-arvo)
?: ?=(%.n -.p.sign-arvo)
((slog 'reel: fetch bait ship failed' p.p.sign-arvo) `this)
:_ this
~[(tell:log %warn ~['fetch bait ship failed'] ~)]
`this
::
[%expire @ @ ~]
Expand All @@ -313,5 +327,9 @@
(on-arvo:def wire sign-arvo)
==
==
++ on-fail on-fail:def
++ on-fail
|= [=term =tang]
^- (quip card _this)
:_ this
[(fail:log term tang ~)]~
--
2 changes: 1 addition & 1 deletion desk/desk.docket-0
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
glob-http+['https://bootstrap.urbit.org/glob-0v7.the2a.smdhg.89k09.6ar0t.gb5te.glob' 0v7.the2a.smdhg.89k09.6ar0t.gb5te]
::glob-ames+~zod^0v0
base+'landscape'
version+[1 28 0]
version+[1 29 0]
website+'https://tlon.io'
license+'MIT'
==
2 changes: 1 addition & 1 deletion desk/lib/contacts.hoon
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@
=? don !=(~ del)
%+ roll del
|= [key=@tas acc=_don]
(~(del by don) key)
(~(del by acc) key)
don
:: +from-0: legacy to new type
::
Expand Down
2 changes: 2 additions & 0 deletions desk/lib/contacts/json-1.hoon
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
++ value
|= val=value:c
^- json
?@ val
(frond type+s/%null)
?- -.val
%text (pairs type+s/%text value+s/p.val ~)
%numb (pairs type+s/%numb value+(numb p.val) ~)
Expand Down
71 changes: 71 additions & 0 deletions desk/lib/logs.hoon
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
/- *logs
=<
|_ [our=ship =wire]
::
++ fail
|= [desc=term trace=tang =log-data]
^- card:agent:gall
=/ event=$>(%fail log-event)
[%fail desc trace]
(pass event log-data)
::
++ tell
|= [vol=volume =echo =log-data]
^- card:agent:gall
=/ event=$>(%tell log-event)
[%tell vol echo]
(pass event log-data)
::
++ pass
|= [event=log-event data=log-data]
^- card:agent:gall
[%pass wire %agent [our %logs] %poke log-action+!>([%log event data])]
--
|%
::
++ fail-event
|= [=term =tang]
^- $>(%fail log-event)
[%fail term tang]
::
++ tell-event
|= [vol=volume =echo]
^- $>(%tell log-event)
[%tell vol echo]
::
++ enjs
=, format
|%
++ tang
|= t=^tang
^- $>(%a json)
?~ t a+~
=/ tame=(list tape)
%- zing
%+ turn t
(cury wash [0 80])
a+(turn tame tape:enjs)
::
++ log-event
|= e=^log-event
^- $>(%o json)
=* event-type -.e
?- -.e
%fail
=- ?>(?=(%o -.-) -)
%- pairs:enjs
:~ type/s+event-type
description/s+desc.e
stacktrace/(tang trace.e)
==
::
%tell
=- ?>(?=(%o -.-) -)
%- pairs:enjs
:~ type/s+event-type
message/(tang echo.e)
volume/s+vol.e
==
==
--
--
25 changes: 25 additions & 0 deletions desk/sur/logs.hoon
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/+ mp=mop-extensions
::
|%
:: $echo: formatted message
+$ echo (list tank)
:: $volume: echo volume
+$ volume ?(%info %warn %crit)
:: $log-event
::
:: %fail: agent failure
:: %tell: agent message
::
+$ log-event
$% [%fail desc=term trace=tang]
[%tell vol=volume =echo]
==
:: $log-item: event with timestamp
+$ log-item [=time event=log-event]
:: $log-data: supplemental data
+$ log-data (list (pair @t json))
::
+$ a-log
$% [%log log-event data=log-data]
==
--

0 comments on commit d0b389c

Please sign in to comment.