abstract and fix email sending

This commit is contained in:
Anton Dyudin 2016-04-14 18:36:48 -07:00
parent 8d6666f9b1
commit 0c4846c7c5
5 changed files with 50 additions and 24 deletions

View File

@ -43,18 +43,14 @@
{$hiss wire {$~ $~} $httr {$hiss hiss}}
==
++ easy-ot |*({key/@t parser/fist:jo} =+(jo (ot [key parser] ~)))
++ ofis-google :: XX broken
=- |=(a/cord (rash a fel))
=< fel=(cook |~(a/@ `@t`(swap 3 a)) (bass 64 .))
=- (cook welp ;~(plug (plus siw) (stun 0^2 (cold %0 tis))))
^= siw
;~ pose
(cook |=(a/@ (sub a 'A')) (shim 'A' 'Z'))
(cook |=(a/@ (sub a 'G')) (shim 'a' 'z'))
(cook |=(a/@ (add a 4)) (shim '0' '9'))
(cold 62 (just '-'))
(cold 63 (just '_'))
==
++ sifo-google
|= a/cord ^- cord
=; fel (crip (scan (sifo a) fel))
(star ;~(pose (cold '-' (just '+')) (cold '_' (just '/')) next))
++ ofis-google
|= a/cord ^- cord
=; fel (ofis (crip (rash a fel)))
(star ;~(pose (cold '+' (just '-')) (cold '/' (just '_')) next))
--
::
|_ $: hid/bowl count/@
@ -82,6 +78,21 @@
count +(count)
==
::
++ poke-email
|= {adr/@ta mez/tape} ^- (quip move +>)
%- poke-gmail-req :*
%post
/messages/send
~['uploadType'^%simple]
[(crip "urbit+{<our.hid>}") 'urbit.org']
::
=- (rash adr -)
[;~((glue pat) . .)]:(cook crip (plus ;~(less pat next))) :: /[^@]+@[^@]+/
::
?: (lth (lent mez) 57) [(crip mez) '']
[(crip "{(scag 54 mez)}...") (crip mez)]
==
::
++ poke-gmail-req
|= $: method/meth endpoint/path quy/quay
mes/message:rfc
@ -89,6 +100,7 @@
==
^- {(list move) _+>.$}
?> ?=(valid-get-endpoint endpoint)
?> =(our.hid src.hid)
:_ +>.$ :_ ~
^- move
:* ost.hid %hiss /poke/[method] `~ %httr %hiss
@ -98,7 +110,7 @@
`quay`[[%alt %json] ~]
::
:+ method `math`(malt ~[content-type+['application/json']~])
=+ hoon-json-object=(joba %raw s+(message-to-rfc822:rfc mes))
=+ hoon-json-object=(joba %raw s+(sifo-google (message-to-rfc822:rfc mes)))
=+ request-body=(tact (pojo hoon-json-object))
(some request-body)
::(some (pojo label-req-to-json:gmail-label label-req:gmail-label ~)) XX
@ -209,7 +221,8 @@
=+ new-jon=(~(get by u.dir) i.arg)
$(arg t.arg, u.jon ?~(new-jon ~ u.new-jon))
==
::
++ sigh-tang |=(a/tang (mean a))
++ sigh
|= a/*
~& a+a

View File

@ -4,11 +4,11 @@
/? 310
/- rfc
:- %say
|= {^ {to/tape subject/tape $~} _from="urbit-test@gmail.com"}
|= {^ {to/tape subject/tape opt/$@($~ {mess/tape $~})} _from="urbit-test@gmail.com"}
:- %gmail-req
:^ %post /messages/'send' ~['uploadType'^'simple']
^- message:rfc
=+ parse-adr=;~((glue pat) (cook crip (star ;~(less pat next))) (cook crip (star next)))
:+ (scan from parse-adr)
(scan to parse-adr)
[(crip subject) '']
[(crip subject) ?~(opt '' (crip mess.opt))]

View File

@ -111,12 +111,15 @@
++ card ::
$% {$flog wire flog} ::
:: {$wait $~} :: delay acknowledgment
:: {$poke wire {ship $gmail} {$gmail-send mail tape}}:: send email
{$poke wire {ship $hood} {$womb-do-claim mail @p}}:: issue ship
{$poke wire pear} :: app RPC
{$next wire p/ring} :: update private key
{$tick wire p/@pG q/@p} :: save ticket
{$knew wire p/ship q/will} :: learn will (old pki)
== ::
++ pear ::
$? {{ship $gmail} {$email mail tape}} :: send email
{{ship $hood} {$womb-do-claim mail @p}} :: issue ship
== ::
++ move (pair bone card) :: user-level move
--
|%
@ -458,9 +461,9 @@
==
::
++ email
|= {adr/mail msg/tape} ^+ +>
:: (emit %poke /invite %gmail %gmail-send adr msg)
~&([%email-stub adr msg] +>)
|= {wir/wire adr/mail msg/tape} ^+ +>
:: (emit %poke [%mail wir] [our %gmail] %email adr msg)
~&([%email-stub wir adr msg] +>)
::
++ poke-invite :: create invitation
|= {ref/reference inv/invite}
@ -480,7 +483,7 @@
=. bureau
:: ?< (~(has by bureau) pas) :: somewhat unlikely
(~(put by bureau) pas [pla.inv sta.inv who.inv hiz])
(email who.inv "{intro.wel.inv}: {<pas>}")
(email /invite who.inv "{intro.wel.inv}: {<pas>}")
::
:: ++ coup-invite :: invite sent
::
@ -529,7 +532,7 @@
?> |(=(our src) =([~ src] boss)) :: privileged
=+ tik=.^(@p %a /(scot %p our)/tick/(scot %da now)/(scot %p her))
:: =. emit (emit /tick %tick tik her)
(email who "Ticket for {<her>}: {<`@pG`tik>}")
(email /ticket who "Ticket for {<her>}: {<`@pG`tik>}")
::
++ poke-claim :: claim plot, req ticket
|= {aut/passcode her/@p}

11
mar/email.hoon Normal file
View File

@ -0,0 +1,11 @@
::
:::: /hoon/email/mar
::
/? 310
|_ {adr/@ta mez/tape}
::
++ grab :: convert from
|%
++ noun {@ta tape} :: clam from %noun
--
--

View File

@ -9,7 +9,6 @@
++ email-adr-to-text |=({name/@t domain/@t} (trip (rap 3 name '@' domain ~)))
++ message-to-rfc822
|= a/message ^- cord
%- crip ^- tape %- sifo
%- crip
"""
From: {(email-adr-to-text from.a)}