Пример #1
0
        // I/F
        public BoxSession CreateSession(string authToken)
        {
            if (authToken == null)
            {
                throw new ArgumentNullException("authToken");
            }

            //// AuthToken を検査するために get_account_tree を呼び出します。
            //var result = GetAccountTreeFunction.Execute(ApiKey, authToken, 0, "onelevel", "nozip");
            //if (result.Status == "listing_ok")
            //{
            //    Session = new BoxSession(ApiKey, authToken);
            //    return Session;
            //}
            //else if (result.Status == "not_logged_in")
            //{
            //    // AuthToken が無効になっています。
            //    return null;
            //}
            //else
            //{
            //    HandleErrorStatus(result.Status);
            //    return null;
            //}
            Session = new BoxSession(ApiKey, authToken);
            return(Session);
        }
Пример #2
0
        // I/F
        public BoxSession CreateSession(string authToken)
        {
            if (authToken == null) throw new ArgumentNullException("authToken");

            //// AuthToken を検査するために get_account_tree を呼び出します。
            //var result = GetAccountTreeFunction.Execute(ApiKey, authToken, 0, "onelevel", "nozip");
            //if (result.Status == "listing_ok")
            //{
            //    Session = new BoxSession(ApiKey, authToken);
            //    return Session;
            //}
            //else if (result.Status == "not_logged_in")
            //{
            //    // AuthToken が無効になっています。
            //    return null;
            //}
            //else
            //{
            //    HandleErrorStatus(result.Status);
            //    return null;
            //}
            Session = new BoxSession(ApiKey, authToken);
            return Session;
        }
Пример #3
0
 public void GetAuthToken()
 {
     boxSession = boxService.GetAuthToken(ticket);
     boxSettings.AuthToken = boxSession.AuthToken;
 }
Пример #4
0
        public bool RestoreSession()
        {
            if (string.IsNullOrEmpty(boxSettings.AuthToken)) return false;

            boxSession = boxService.CreateSession(boxSettings.AuthToken);

            Folder rootFolder;
            try
            {
                rootFolder = boxSession.GetAccountTreeRoot("onelevel", "nozip");
            }
            catch (BoxStatusException e)
            {
                boxSession = null;

                if (e.Status == "not_logged_in")
                {
                    // AuthToken が無効になっています。
                    boxSettings.AuthToken = null;
                    boxSettings.HomeFolderId = -1;
                    boxSettings.BlocksFolderId = -1;
                    SaveSettings();
                    return false;
                }
                else
                {
                    // その他のエラーならば throw します。
                    throw;
                }
            }

            // 保存されている Blocks Home と Blocks フォルダの ID を検査します。
            // それらが無効であっても、AuthToken は有効であるため、
            // BoxSession の復元は成功で終わらせます。
            if (0 < boxSettings.HomeFolderId)
            {
                // Blocks Home と Blocks フォルダは同時に作成するので、
                // どちらかの ID が無効な場合、同時に無効に設定します。

                var homeFolder = rootFolder.FindFolderById(boxSettings.HomeFolderId);
                if (homeFolder == null)
                {
                    // Blocks Home フォルダが存在しません。
                    boxSettings.HomeFolderId = -1;
                    boxSettings.BlocksFolderId = -1;
                    SaveSettings();
                }
                else
                {
                    var homeFolderTree = boxSession.GetAccountTree(homeFolder.Id, "onelevel", "nozip");
                    var blockFolder = homeFolderTree.FindFolderById(boxSettings.BlocksFolderId);
                    if (blockFolder == null)
                    {
                        // Blocks フォルダが存在しません。
                        boxSettings.HomeFolderId = -1;
                        boxSettings.BlocksFolderId = -1;
                        SaveSettings();
                    }
                }
            }
            else
            {
                if (0 < boxSettings.BlocksFolderId)
                {
                    // フォルダ情報の不整合を起こしているため、初期化して保存します。
                    boxSettings.HomeFolderId = -1;
                    boxSettings.BlocksFolderId = -1;
                    SaveSettings();
                }
            }

            return true;
        }