From 33f2fbd0999562d0a9d34213eeb8d79eaf84dde5 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Sun, 22 Jan 2017 14:44:33 -0800 Subject: [PATCH] oauth2: move set-query-params to urls. --- basis/urls/urls.factor | 5 ++++- extra/oauth2/oauth2.factor | 12 +++--------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/basis/urls/urls.factor b/basis/urls/urls.factor index 858f4a57c9..93fea04e4d 100644 --- a/basis/urls/urls.factor +++ b/basis/urls/urls.factor @@ -13,12 +13,15 @@ TUPLE: url protocol username password host port path query anchor ; : query-param ( url key -- value ) swap query>> at ; -: set-or-delete ( val key query -- ) +: set-or-delete ( value key query -- ) pick [ set-at ] [ delete-at drop ] if ; : set-query-param ( url value key -- url ) pick query>> [ ] unless* [ set-or-delete ] keep >>query ; +: set-query-params ( url params -- url ) + [ swap set-query-param ] assoc-each ; + ERROR: malformed-port ; : parse-host ( string -- host/f port/f ) diff --git a/extra/oauth2/oauth2.factor b/extra/oauth2/oauth2.factor index e6bd62cb14..09ecf548a5 100644 --- a/extra/oauth2/oauth2.factor +++ b/extra/oauth2/oauth2.factor @@ -1,16 +1,10 @@ ! Copyright (C) 2016 Björn Lindqvist. ! See http://factorcode.org/license.txt for BSD license. USING: accessors assocs calendar combinators http.client io -json.reader kernel make math.order sequences unicode urls webbrowser ; +json.reader kernel make math.order sequences unicode urls +webbrowser ; IN: oauth2 -! Random utility -: set-query-params ( url params -- url ) - [ first2 swap set-query-param ] each ; - -: string+params>url ( string params -- url ) - [ >url ] dip set-query-params ; - : console-prompt ( query -- str/f ) write flush readln [ blank? ] trim dup "" = [ drop f ] [ ] if ; @@ -78,7 +72,7 @@ TUPLE: oauth2 ] { } make ; : oauth2>auth-uri ( oauth2 -- uri ) - [ auth-uri>> ] [ auth-params ] bi string+params>url ; + [ auth-uri>> >url ] [ auth-params ] bi set-query-params ; ! Other flows can be useful to support too. : console-flow ( oauth2 -- tokens/f )