Files
eopenid/strip-parsers.patch

111 lines
3.8 KiB
Diff

Remove all but YAWS based parsers
From: Gregory Haskins <ghaskins@novell.com>
Signed-off-by: Gregory Haskins <ghaskins@novell.com>
---
src/eopenid_lib.erl | 33 +++++++++------------------------
src/eopenid_v1.erl | 37 ++-----------------------------------
2 files changed, 11 insertions(+), 59 deletions(-)
diff --git a/src/eopenid_lib.erl b/src/eopenid_lib.erl
index c2d0a3d..58f078d 100644
--- a/src/eopenid_lib.erl
+++ b/src/eopenid_lib.erl
@@ -148,32 +148,17 @@ l2i(L) when is_list(L) -> list_to_integer(L);
l2i(I) when is_integer(I) -> I.
urlenc(X) ->
- try mochiweb_util:urlencode(X)
- catch _:_ ->
- S = [K++"="++url_encode(V) || {K,V} <- X],
- string:join(S,"&")
- end.
+ S = [K++"="++yaws_api:url_encode(V) || {K,V} <- X],
+ string:join(S,"&").
-url_encode(X) ->
- try yaws_api:url_encode(X)
- catch _:_ -> wf:url_encode(X) end.
-
-url_decode(X) ->
- try yaws_api:url_decode(X)
- catch _:_ -> wf:url_decode(X) end.
-
parseq(X) ->
- try mochiweb_util:parse_qs(X)
- catch _:_ ->
- Filter = fun(S,Acc) ->
- case string:tokens(S,"=") of
- [K,V] -> [{K,url_decode(V)}|Acc];
- _ -> Acc
- end
- end,
- lists:foldr(Filter, [], string:tokens(X,"&"))
- end.
-
+ Filter = fun(S,Acc) ->
+ case string:tokens(S,"=") of
+ [K,V] -> [{K,yaws_api:url_decode(V)}|Acc];
+ _ -> Acc
+ end
+ end,
+ lists:foldr(Filter, [], string:tokens(X,"&")).
content_type() ->
"application/x-www-form-urlencoded; charset=UTF-8".
diff --git a/src/eopenid_v1.erl b/src/eopenid_v1.erl
index c50ab9b..4b105a6 100644
--- a/src/eopenid_v1.erl
+++ b/src/eopenid_v1.erl
@@ -256,45 +256,12 @@ discover(ClaimedId, Dict0) when is_list(ClaimedId) ->
NormId = http_path_norm(ClaimedId),
Dict = in("openid.claimed_id", ClaimedId, Dict0),
{ok, {_Rc, _Hdrs, Body}} = http_get(NormId),
- try
- {Xml,_} = xmerl_scan:string(Body),
- L = [?XAttrs(X) || X <- xmerl_xpath:string("//link", Xml)],
- Fs = [in(K,V) || [{rel,K},{href,V}] <- L],
- {ok, foldf(Fs, Dict)}
- catch
- _Type:_Error ->
- try
- Fs2 = [in(K,V) || {tag,"link",[{"rel","openid"++_=K},{"href",V}|_]}
- <- trane:sax(Body,fun(T,A)-> A++[T] end, [])],
- {ok, foldf(Fs2, Dict)}
- catch
- _:_ ->
- try
- A = mochiweb_html:parse(Body),
- {ok, hvals(Dict, gelems([<<"html">>,<<"head">>,<<"link">>], A))}
- catch
- _Type2:_Error2 ->
- try
- Y = yaws_html:h2e(Body),
- {ok, hvals(Dict, gelems([ehtml,html,head,link], Y))}
- catch
- Type3:Error3 ->
- %% FIXME try doing the parsing in some other way
- ?edbg("discover failed: ~p, Body=~p~n",
- [erlang:get_stacktrace(),Body]),
- {Type3, Error3}
- end
- end
- end
- end.
-
-
+ Y = yaws_html:h2e(Body),
+ {ok, hvals(Dict, gelems([ehtml,html,head,link], Y))}.
%%% Header values
-spec hvals( dict(), list() ) -> dict().
-hvals(S, [{<<"link">>,[{<<"rel">>,R},{<<"href">>,H}],_} | T]) -> % Mochiweb
- hvals(pick(S,R,H), T);
hvals(S, [{link,[{rel,R},{href,H}|_]} | T]) -> % Yaws
hvals(pick(S,R,H), T);
hvals(S, [_|T]) ->