OSDN Git Service

T29794
[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         private static final String CONSUMER_SECRET = "mX5gE5xemxUj/O7InG7/SrcyskDHu4rq5LMKSkrqlhk=";
20         private static final String APP_DATA_PATH = "/Android/data/com.yuji.ef/temp/";
21         private static final String EVERNOTE_HOST = "www.evernote.com";
22
23         private static final String APP_NAME = "FolderErver";
24         private static final String APP_VERSION = "1.0.0";
25
26         private static OAuthUtil instance = null;
27         private static String consumerSecret = null;
28         private EvernoteSession session;
29
30         public static OAuthUtil getInstance() {
31                 if (instance == null) {
32                         instance = new OAuthUtil();
33                 }
34                 return instance;
35         }
36
37         private OAuthUtil() {
38
39         }
40
41         public EvernoteSession setupSession(Context context) {
42                 if (consumerSecret == null){
43                         Encryption en = Encryption.getInstance();
44                         consumerSecret = en.getDecrypted(context, CONSUMER_SECRET);
45                 }
46                 
47                 ApplicationInfo info = new ApplicationInfo(CONSUMER_KEY,
48                                 consumerSecret, EVERNOTE_HOST, APP_NAME, APP_VERSION);
49
50                 // Retrieve persisted authentication information
51                 session = new EvernoteSession(info,
52                                 getPreferencesForAuthData(context), getTempDir());
53
54                 // セッションの期限切れをチェック
55                 EditPrefUtil pref = new EditPrefUtil(context);
56                 Calendar cal = Calendar.getInstance();
57                 long now = cal.getTimeInMillis();
58                 long loginTime = pref.getLong(Constant.PREF_LOGIN_DATE);
59                 long diff = (now - loginTime) / 1000;
60
61                 //if (loginTime > 0 && diff > 60){ // 1分
62                 if (loginTime > 0 && diff > (365 - 1) * 24 * 60 * 60){ // 余裕を持って1日前に削除
63                         logout(context);
64                         pref.put(Constant.PREF_LOGIN_DATE, 0L);
65                         pref.update();
66
67                         session = new EvernoteSession(info,
68                                         getPreferencesForAuthData(context), getTempDir());
69                 }
70                 
71                 return session;
72         }
73
74         public boolean isCompleteAuth(Context context) {
75                 if (session == null) {
76                         return false;
77                 }
78                 return session
79                                 .completeAuthentication(getPreferencesForAuthData(context));
80         }
81
82         public SharedPreferences getPreferencesForAuthData(Context context) {
83                 PrefUtil pref = new PrefUtilImpl(context);
84                 return pref.getSharedPreferences();
85         }
86
87         private File getTempDir() {
88                 return new File(Environment.getExternalStorageDirectory(),
89                                 APP_DATA_PATH);
90         }
91
92         public EvernoteSession getSession() {
93                 return session;
94         }
95
96         public void logout(Context context){
97             session.logOut(getPreferencesForAuthData(context)); 
98
99             EditPrefUtil pref = new EditPrefUtil(context);
100                 pref.put(Constant.PREF_LOGIN_DATE, 0L);
101                 pref.update();
102         }
103
104         public void setLoginTime(Context context) {
105                 Calendar cal = Calendar.getInstance();
106                 long t = cal.getTimeInMillis();
107                 EditPrefUtil pref = new EditPrefUtil(context);
108                 pref.put(Constant.PREF_LOGIN_DATE, t);
109                 pref.update();
110         }
111 }