X-Git-Url: http://wagner.pp.ru/gitweb/?a=blobdiff_plain;f=bin%2Fuserinfo;h=92a45e5fd45b1f0d76e267e622a0d9b80ecc45a7;hb=c18ba47bd2daa9239244e087a9967f24ceffc200;hp=0d92d6943e9d81b4b6ca2e77e6ded9541607ca40;hpb=8a3c7e4b84b480cdcdde4d163d753e4447a4ffbf;p=oss%2Fvjournal.git diff --git a/bin/userinfo b/bin/userinfo index 0d92d69..92a45e5 100644 --- a/bin/userinfo +++ b/bin/userinfo @@ -27,8 +27,43 @@ If user is not logged in, returns following structure: { state: "notlogged", providers: [ - {name: "Live journal",icon:"/avatars/lj.gif",format: "%s.livejournal.com"} + {name: "Live journal",icon:"/avatars/lj.gif",id: "lj"} ... } =cut + +use VJournal::Session; +use JSON; +use CGI; + +my $cgi=new CGI; +my $session = VJourna::Session->new($cgi); +my $out={}; +if (!defined $session) { +# User is not authenticated. Return list of providers; + $out->{state}="notlogged"; + $sites=VJournal::ProviderList->new; + $out->{providers}=$sites->menu; + $session=$cgi; +} else { + if ($session->isowner()) { + $out->{state}="owner"; + } elsif ($session->banned()) { + $out->{state}="banned"; + } else { + $out->{state}="guest"; + } + + $out->{url}=$session->identity(); + $out->{displayname}=$session->name(); + %avatar=$session->avatar(); + if(exists $avatar{-src}) { + $out->{avatar}={src=>$avatar{-src},-width=>$avatar{-width}, + -height=>$avatar{-height}}; + } + +} +$session->header(-content_type=>"text/json",-charset=>utf-8); +print $encode_json($out); +