OSDN Git Service

A29794
[everfolder/source.git] / source / workspace / EverFolder / src / com / yuji / ef / utility / OAuthUtil.java
1 package com.yuji.ef.utility;
2
3 import java.io.File;
4 import java.util.Calendar;
5
6 import android.content.Context;
7 import android.content.SharedPreferences;
8 import android.os.Environment;
9
10 import com.evernote.client.conn.ApplicationInfo;
11 import com.evernote.client.oauth.android.EvernoteSession;
12 import com.yuji.ef.common.Constant;
13 import com.yuji.ef.pref.EditPrefUtil;
14 import com.yuji.ef.pref.PrefUtil;
15 import com.yuji.ef.pref.PrefUtilImpl;
16
17 public class OAuthUtil {
18         private static final String CONSUMER_KEY = "yuji-k64613";
19         // TODO
20         // Debian
21         private static final String CONSUMER_SECRET = "G5r7t1nHC+AIf6dYHuIVC7Jr/iVIMtgMZ0PObN6xV2Q=";
22         // Mac
23         //private static final String CONSUMER_SECRET = "HZQMov54fiINXUULskHPRSoK9rPFxVN/4zw5a5n6IeM=" ;        
24         private static final String APP_DATA_PATH = "/Android/data/com.yuji.ef/temp/";
25         private static final String EVERNOTE_HOST = "www.evernote.com";
26
27         private static final String APP_NAME = "FolderErver";
28         private static final String APP_VERSION = "1.0.0";
29
30         private static OAuthUtil instance = null;
31         private static String consumerSecret = null;
32         private EvernoteSession session;
33
34         public static OAuthUtil getInstance() {
35                 if (instance == null) {
36                         instance = new OAuthUtil();
37                 }
38                 return instance;
39         }
40
41         private OAuthUtil() {
42
43         }
44
45         public EvernoteSession setupSession(Context context) {
46                 if (consumerSecret == null){
47                         Encryption en = Encryption.getInstance();
48                         //String s = en.getEncrypted(context, "");
49                         consumerSecret = en.getDecrypted(context, CONSUMER_SECRET);
50                 }
51                 
52                 ApplicationInfo info = new ApplicationInfo(CONSUMER_KEY,
53                                 consumerSecret, EVERNOTE_HOST, APP_NAME, APP_VERSION);
54
55                 // Retrieve persisted authentication information
56                 session = new EvernoteSession(info,
57                                 getPreferencesForAuthData(context), getTempDir());
58
59                 // セッションの期限切れをチェック
60                 EditPrefUtil pref = new EditPrefUtil(context);
61                 Calendar cal = Calendar.getInstance();
62                 long now = cal.getTimeInMillis();
63                 long loginTime = pref.getLong(Constant.PREF_LOGIN_DATE);
64                 long diff = (now - loginTime) / 1000;
65
66                 //if (loginTime > 0 && diff > 60){ // 1分
67                 if (loginTime > 0 && diff > (365 - 1) * 24 * 60 * 60){ // 余裕を持って1日前に削除
68                         logout(context);
69                         pref.put(Constant.PREF_LOGIN_DATE, 0L);
70                         pref.update();
71
72                         session = new EvernoteSession(info,
73                                         getPreferencesForAuthData(context), getTempDir());
74                 }
75                 
76                 return session;
77         }
78
79         public boolean isCompleteAuth(Context context) {
80                 if (session == null) {
81                         return false;
82                 }
83                 return session
84                                 .completeAuthentication(getPreferencesForAuthData(context));
85         }
86
87         public SharedPreferences getPreferencesForAuthData(Context context) {
88                 PrefUtil pref = new PrefUtilImpl(context);
89                 return pref.getSharedPreferences();
90         }
91
92         private File getTempDir() {
93                 return new File(Environment.getExternalStorageDirectory(),
94                                 APP_DATA_PATH);
95         }
96
97         public EvernoteSession getSession() {
98                 return session;
99         }
100
101         public void logout(Context context){
102             session.logOut(getPreferencesForAuthData(context)); 
103
104             EditPrefUtil pref = new EditPrefUtil(context);
105                 pref.put(Constant.PREF_LOGIN_DATE, 0L);
106                 pref.update();
107         }
108
109         public void setLoginTime(Context context) {
110                 Calendar cal = Calendar.getInstance();
111                 long t = cal.getTimeInMillis();
112                 EditPrefUtil pref = new EditPrefUtil(context);
113                 pref.put(Constant.PREF_LOGIN_DATE, t);
114                 pref.update();
115         }
116 }