:: |% :: Splits a path into the endpoint prefix and the remainder, :: which is assumed to be a path within the JSON object. We :: choose the longest legal endpoint prefix. :: ++ split |= pax/path :: =- ~& [%pax pax - (valid-endpoint pax)] - =+ l=(lent pax) |- ^- {path path} ?: ?=(valid-get-endpoint (scag l pax)) [(scag l pax) (slag l pax)] ?~ l ~& %bad-endpoint ~|(%bad-endpoint !!) $(l (dec l)) :: :: These are all the github GET endpoints, sorted with :: `env LC_ALL=C sort` :: :: end-points include required query parameters ++ valid-get-endpoint $? {$drafts id/@t ~} {$drafts ~} {$history ~} {$labels id/@t ~} {$labels ~} {$messages id/@t $attachments id/@t ~} {$messages id/@t ~} {$messages ~} {$profile ~} {$threads id/@t ~} {$threads ~} == ++ vaild-post-endpoint $? {$drafts $send ~} {$drafts ~} {$messages id/@t $modify ~} {$messages id/@t $trash ~} {$messages id/@t $untrash ~} {$messages $import ~} {$messages $send ~} {$messages ~} {$labels ~} {$threads id/@t $trash ~} {$threads id/@t $untrash ~} {$threads id/@t $modify} {$stop ~} {$watch ~} == ++ valid-delete-endpoint $? {$drafts id/@t ~} {$labels id/@t ~} {$messages id/@t ~} {$thread id/@t ~} == ++ valid-put-endpoint $? {$drafts id/@t ~} {$labels id/@t ~} == ++ valid-patch-endpoint $? {$labels id/@t ~} == -- ::