Small fix on facebookauthentication's credential handling method,
[situare] / src / facebookservice / facebookauthentication.h
1 /*
2    Situare - A location system for Facebook
3    Copyright (C) 2010  Ixonos Plc. Authors:
4
5        Ville Tiensuu - ville.tiensuu@ixonos.com
6        Kaj Wallin - kaj.wallin@ixonos.com
7        Henri Lampela - henri.lampela@ixonos.com
8
9    Situare is free software; you can redistribute it and/or
10    modify it under the terms of the GNU General Public License
11    version 2 as published by the Free Software Foundation.
12
13    Situare is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with Situare; if not, write to the Free Software
20    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
21    USA.
22 */
23
24 #ifndef FACEBOOKAUTHENTICATION_H
25 #define FACEBOOKAUTHENTICATION_H
26
27 #include <QUrl>
28 #include "facebookcredentials.h"
29
30 /**
31 * @brief FacebookAuthentication class takes care of parsing and handling of  credentials for
32 *        Facebook. Other components of Situare application needs credentials to communicate with
33 *        facebook.
34 *
35 * @author Ville Tiensuu
36 */
37 class FacebookAuthentication : public QObject
38 {
39     Q_OBJECT
40
41 public:
42     /**
43     * @brief FacebookAuthentication constructor
44     *
45     * -Checks if there is valid credentials stored on the file. If there is emits signal.
46     *
47     * @param parent instance of parent
48     */
49     FacebookAuthentication(QObject *parent = 0);
50
51 /*******************************************************************************
52  * MEMBER FUNCTIONS AND SLOTS
53  ******************************************************************************/
54
55     /**
56     * @brief Getter for m_loginCredentials
57     *
58     * @return FacebookCredentials
59     */
60     FacebookCredentials loginCredentials() const;
61
62 public slots:
63
64     /**
65     * @brief Shows the m_webView and loads page that is specified in the m_facebookLoginPage
66     *        variable. Specifies font size for the page.
67     *    
68     */
69     void start();
70
71 private: 
72
73     /**
74     * @brief Creates login url with given parameters
75     *
76     * @param urlParts Url parts
77     * @return QUrl Login page url
78     */
79     QUrl formLoginPageUrl(const QStringList & urlParts) const;
80
81     /**
82     * @brief Reads previous stored credentials from file.
83     *
84     * @param credentialsFromFile This dataclass is the place where method stores credentials.
85     *        Corrent parameter here is m_loginCredentials
86     */
87     void readCredentials(FacebookCredentials &credentialsFromFile);
88
89     /**
90     * @brief Checks expiration time of credentials and compares it to current time.
91     *
92     * @param credentials this parameter represents credentials that will be verified.
93     * @return bool returns true if expiration time is after current time. in other cases returns
94     *               false.
95     */
96     bool verifyCredentials(const FacebookCredentials &credentials) const;   
97
98     /**
99     * @brief Writes credentials to File
100     *
101     * @param credentials Contents of this dataclass is stored to file
102     */
103     void writeCredentials(const FacebookCredentials &credentials);
104
105 private slots:
106     /**
107     * @brief  Search credentials from URL that is given as parameter.
108     *         If credentials are found thay are stored to loginCredentials variable.
109     *
110     * @param url URL where this method tries to find credentials.
111     * @return bool if credentials are found returns true,
112     *               if credentials are not found returns false.
113     */
114     bool updateCredentials(const QUrl & url);
115
116 /*******************************************************************************
117  * SIGNALS
118  ******************************************************************************/
119
120 signals:
121
122     /**
123     * @brief This signal is emitted if updateCredentials method finds credentials from URL.
124     *        Signal is also emitted at the beginning of the program if there is valid credentials
125     *        in the file.
126     *
127     * @param credentials New credentials
128     */
129     void credentialsReady(const FacebookCredentials &credentials);
130
131     /**
132     * @brief This signal is emitted if updateCredentials method can't find credentials from URL
133     *
134     */
135     void loginFailure();
136
137     /**
138     * @brief Signals when credentials are invalid new login is needed
139     *
140     * @param url Login page url
141     */
142     void newLoginRequest(const QUrl &url);
143
144 /*******************************************************************************
145  * DATA MEMBERS
146  ******************************************************************************/
147
148 private:
149
150     /**
151     * @brief Dataclass that contains authorization to use facebook. Dataclass is composed of five
152     *        QStrings and setters and getters.
153     *
154     * @var m_loginCredentials
155     */
156     FacebookCredentials m_loginCredentials;
157
158     int m_loginAttempts; ///< Indicates login attempts
159 };
160
161 #endif // FACEBOOKAUTHENTICATION_H