OSDN Git Service

add wp_imgswap2.py for new OSDN Magazine
[otptools/otptools.git] / SourceForgeJP.pm
1 # WWW::SourceForge.JP\r
2 # by hylom\r
3 # This code is under GPL.\r
4 #\r
5 \r
6 use LWP;\r
7 use HTTP::Cookies;\r
8 use HTTP::Request::Common;\r
9 use SourceForgeJP::Wiki;\r
10 \r
11 package WWW::SourceForgeJP;\r
12 \r
13 my $ua_string = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1';\r
14 my $login_url = 'https://sourceforge.jp/account/login.php';\r
15 my $logout_url = 'https://sourceforge.jp/account/logout.php';\r
16 my $default_cookies = $ENV{"HOME"} . "/" . '.sfjp_cookies';\r
17 \r
18 sub new {\r
19   my $class = shift @_;\r
20   my $self = {\r
21                           'useragent' => $ua_string,\r
22                           'cookies_file' => $default_cookies,\r
23                          };\r
24   return bless $self, $class;\r
25 }\r
26 \r
27 # getter/setter\r
28 sub useragent {\r
29   my $self = shift @_;\r
30   return $self->{useragent};\r
31 }\r
32 \r
33 sub cookies_file {\r
34   my $self = shift @_;\r
35   return $self->{cookies_file};\r
36 }\r
37 \r
38 sub _get_project_dir {\r
39   my $self = shift @_;\r
40   my $project = shift @_;\r
41 \r
42   return 'http://sourceforge.jp/projects/' . $project;\r
43 }\r
44 \r
45 sub lwp_ua {\r
46   my $self = shift @_;\r
47 \r
48   my $ua = LWP::UserAgent->new( 'agent' => $self->useragent, );\r
49   my $cookie_jar = HTTP::Cookies->new( file => $self->cookies_file, autosave => 1, ignore_discard => 1, );\r
50   $ua->cookie_jar( $cookie_jar );\r
51 \r
52   return $ua;\r
53 }\r
54 \r
55 sub login {\r
56   my $self = shift @_;\r
57   my $login_name = shift @_;\r
58   my $password = shift @_;\r
59 \r
60   my $ua = $self->lwp_ua;\r
61 \r
62   my $form_data = {\r
63                                    'return_to' => '/',\r
64                                    'login' => '1',\r
65                                    'form_loginname' => $login_name,\r
66                                    'form_pw' => $password,\r
67                                    'stay_in_ssl' => '1',\r
68                                   };\r
69   my $resp = $ua->post( $login_url, $form_data );\r
70 \r
71   if ( $resp->is_error ) {\r
72         print $resp->as_string;\r
73         return 0;\r
74   } else {\r
75         return 1;\r
76   }\r
77 \r
78 }\r
79 \r
80 sub logout {\r
81   my $self = shift @_;\r
82 \r
83   my $ua = $self->lwp_ua;\r
84   $ua->get( $logout_url );\r
85 }\r
86 \r
87 sub Wiki {\r
88   my $self = shift @_;\r
89 \r
90   if ( ! defined $self->{_wiki} ) {\r
91     $self->{_wiki} = WWW::SourceForgeJP::Wiki->new( $self );\r
92   }\r
93 \r
94   return $self->{_wiki};\r
95 }\r
96 \r
97 1;\r
98 \r