1 use lib '../Dancer/lib';
2 use lib '../Facebook-Graph/lib';
3 use lib '../perl-uri-encode/lib';
9 use DateTime::Format::ICal;
13 if (request->path_info !~ m{^/facebook}) {
14 if (session->{access_token} eq '') {
15 request->path_info('/facebook/login')
20 get '/facebook/login' => sub {
21 my $fb = Facebook::Graph->new( config->{facebook} );
24 ->extend_permissions( qw(email offline_access publish_stream create_event rsvp_event) )
28 get '/facebook/postback/' => sub {
29 my $params = request->params;
30 my $fb = Facebook::Graph->new( config->{facebook} );
31 $fb->request_access_token($params->{code});
32 session access_token => $fb->access_token;
37 my $fb = Facebook::Graph->new( config->{facebook} );
38 $fb->access_token(session->{access_token});
39 my $response = $fb->query->find('me')->request;
40 my $user = $response->as_hashref;
41 template 'home.tt', { name => $user->{name}, response => $response->as_string }
44 get '/friends' => sub {
45 my $fb = Facebook::Graph->new( config->{facebook} );
46 $fb->access_token(session->{access_token});
47 my $response = $fb->query->find('me/friends')->request;
48 template 'friends.tt', { friends => $response->as_hashref->{data}, response => $response->as_string }
51 get '/rss-importer' => sub {
52 template 'rss-importer.tt';
55 post '/rss-importer' => sub {
56 my $fb = Facebook::Graph->new( config->{facebook} );
57 $fb->access_token(session->{access_token});
58 my $feed = XML::FeedPP->new(request->params->{rss_uri});
59 foreach my $item ($feed->get_item) {
61 ->set_message('Created by RSS Feed Importer')
62 ->set_link_uri($item->link)
63 ->set_link_name($item->title)
64 ->set_link_description($item->description)
67 template 'rss-importer-post.tt';
70 get '/ical-importer' => sub {
71 template 'ical-importer.tt';
74 post '/ical-importer' => sub {
75 my $fb = Facebook::Graph->new( config->{facebook} );
76 $fb->access_token(session->{access_token});
79 my $ical = LWP::UserAgent->new
80 ->get(request->params->{ical_uri})
83 # process ical into calendar
84 my $calendar = Data::ICal->new( data => $ical );
87 foreach my $entry (@{$calendar->entries}) {
89 ->set_name($entry->properties->{summary}[0]->value)
90 ->set_location($entry->properties->{location}[0]->value)
91 ->set_description($entry->properties->{description}[0]->value)
92 ->set_start_time(DateTime::Format::ICal->parse_datetime($entry->properties->{dtstart}[0]->value))
93 ->set_end_time(DateTime::Format::ICal->parse_datetime($entry->properties->{dtend}[0]->value))
97 template 'ical-importer-post.tt';