Update copyright information
[debian/pino.git] / src / rest_api_acc.vala
1 /* rest_api_acc.vala
2  *
3  * Copyright (C) 2009-2010  troorl
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU Lesser General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  *
18  * Author:
19  *      troorl <troorl@gmail.com>
20  */
21
22 using Auth;
23 using Xml;
24
25 namespace RestAPI {
26
27 public class RestAPIAcc : RestAPIAbstract {
28         
29         public RestAPIAcc(Account? _account) {
30                 base(_account);
31         }
32         
33         public RestUrls get_urls() {
34                 return urls;
35         }
36         
37         /* get userpic url of a current user */
38         public string? get_userpic_url() throws RestError, ParseError {
39                 if(account == null)
40                         return null;
41                 
42                 string req_url = urls.user().printf(account.login);
43                 string data = make_request(req_url, "GET",
44                         new HashTable<string, string>(str_hash, str_equal), false);
45
46                 var result = parse_userpic_url(data);
47
48                 return result;
49         }
50         
51         private string parse_userpic_url(string data) throws ParseError {
52                 Xml.Doc* xmlDoc = Parser.parse_memory(data, (int)data.size());
53                 if(xmlDoc == null)
54                         throw new ParseError.CODE("Invalid XML data");
55                 
56                 Xml.Node* rootNode = xmlDoc->get_root_element();
57                 
58                 string result = "";
59                 
60                 Xml.Node* iter;
61                 for(iter = rootNode->children; iter != null; iter = iter->next) {
62                         if (iter->type != ElementType.ELEMENT_NODE)
63                                 continue;
64                         
65                         if(iter->name == "profile_image_url") {
66                                 result = iter->get_content();
67                                 break;
68                         }
69                 } delete iter;
70                 
71                 return result;
72         }
73 }
74
75 }