/[Frey]/trunk/lib/Frey/DelIcioUs.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/lib/Frey/DelIcioUs.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 352 - (hide annotations)
Sun Nov 16 13:11:27 2008 UTC (15 years, 6 months ago) by dpavlin
File size: 1320 byte(s)
Frey::Run can now call data or sponge so we don't need cludge here
1 dpavlin 315 package Frey::DelIcioUs;
2 dpavlin 226 use Moose;
3    
4     with 'Frey::Storage';
5    
6 dpavlin 323 use LWP::UserAgent;
7     use XML::Simple;
8     use Data::Dump qw/dump/;
9    
10 dpavlin 226 has 'username' => (
11     is => 'rw',
12     isa => 'Str',
13     required => 1,
14     );
15    
16     has 'password' => (
17 dpavlin 323 is => 'ro',
18 dpavlin 226 isa => 'Str',
19     required => 1,
20     );
21    
22 dpavlin 333 sub path {
23     my $self = shift;
24 dpavlin 337 'var/delicious/' . $self->username . '.yml';
25 dpavlin 333 }
26 dpavlin 226
27 dpavlin 337 sub posts {
28 dpavlin 226 my $self = shift;
29    
30     if ( my $posts = $self->load( $self->path ) ) {
31     return $posts;
32     }
33    
34     my $ua = LWP::UserAgent->new;
35     my $req = HTTP::Request->new(GET => 'https://api.del.icio.us/v1/posts/all');
36     $req->authorization_basic( $self->username, $self->password );
37     my $content = $ua->request($req)->as_string;
38     warn "# got ",length($content), " bytes";
39    
40     # strip headers
41     $content =~ s/^.+(<\?xml)/$1/s;
42     warn substr($content,0,100), ' ... ', substr($content,-100);
43     my $posts = XMLin( $content );
44     warn dump( $posts );
45 dpavlin 337 $self->store( $self->path, $posts );
46 dpavlin 226 return $posts;
47     }
48    
49 dpavlin 337 sub data {
50     my $self = shift;
51 dpavlin 352 $self->posts;
52 dpavlin 337 }
53    
54     sub sponge {
55     my $self = shift;
56    
57     my $posts = $self->posts->{post};
58     die "not ARRAY ",dump( $posts ) unless ref($posts) eq 'ARRAY';
59    
60     my @NAME = keys %{ $posts->[0] };
61     my @rows;
62    
63     foreach my $post ( @$posts ) {
64     my @row;
65     push @row, $post->{ $_ } foreach @NAME;
66     push @rows, \@row;
67     }
68    
69    
70     return {
71     rows => \@rows,
72     NAME => \@NAME,
73     }
74     }
75    
76 dpavlin 226 1;

  ViewVC Help
Powered by ViewVC 1.1.26