Packages

NAT traversal library for Erlang - UPnP IGD, NAT-PMP, PCP

Current section

Files

Jump to
nat src intercepts httpc_intercepts.erl
Raw

src/intercepts/httpc_intercepts.erl

%% @hidden
-module(httpc_intercepts).
-export([
request/1, request/4
]).
-define(MODULE_ORI, httpc_orig).
-define(CACHE, "data/test.data").
-define(LOG(A, B), io:format("[~p] " ++ A ++ "~n", [?MODULE] ++ B)).
-define(KEY(X), {httpc, request, X}).
request(Url) ->
Key = ?KEY([Url]),
?LOG("[REQ] ~p", [Key]),
case nat_cache:get(Key) of
{ok, _}=Result ->
?LOG("[RESP] [CACHE] ~p", [Result]),
Result;
undefined ->
Result = ?MODULE_ORI:request_orig(Url),
?LOG("[RESP] [ORI] ~p", [Result]),
nat_cache:put(Key, Result),
Result
end.
request(Method, Request, HTTPOptions, Options) ->
Key = ?KEY([Method, Request, HTTPOptions, Options]),
?LOG("[REQ] ~p", [Key]),
case nat_cache:get(Key) of
{ok, _}=Result ->
?LOG("[RESP] [CACHE] ~p", [Result]),
Result;
undefined ->
Result = ?MODULE_ORI:request_orig(Method, Request, HTTPOptions, Options),
?LOG("[RESP] [ORI] ~p", [Result]),
nat_cache:put(Key, Result),
Result
end.