Skip to content

Instantly share code, notes, and snippets.

@JakubOboza
Created April 18, 2011 13:05
Show Gist options
  • Save JakubOboza/925283 to your computer and use it in GitHub Desktop.
Save JakubOboza/925283 to your computer and use it in GitHub Desktop.
-module(website_worker).
-export([behaviour_info/1, get/2]).
behaviour_info(callbacks) ->
[{process, 1}];
behaviour_info(_) -> undefined.
get(Module, Site) -> Module:process(get_site(Site)).
get_site(Site) ->
{ok, Socket} = gen_tcp:connect(Site, 80, [binary, {packet, 0}]),
ok = gen_tcp:send(Socket, "GET / HTTP/1.0\r\n\r\n"),
receive_site_data(Socket, []).
receive_site_data(Socket, SoFar) ->
receive
{tcp, Socket, Bin} ->
receive_site_data(Socket, [Bin | SoFar]);
{tcp_closed, Socket} -> binary:list_to_bin(lists:reverse(SoFar))
end.
-module(test).
-export([process/1]).
-behaviour(website_worker).
process(SiteData) ->
io:format("~p~n",[SiteData]).
c(website_worker).
c(test).
website_worker:get(test, "www.amazon.co.uk").
<<"HTTP/1.0 302 Found\r\nLocation: http://www.google.pl/\r\nCache-Control: private\r\nContent-Type: text/html; charset=UTF-8\r\nSet-Cookie: PREF=ID=0eb3437660e421d9:FF=0:TM=13031.......
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment