public File GetFile(string fileId, out bool editable) { Global.Logger.Debug("BoxApp: get file " + fileId); fileId = ThirdPartySelector.GetFileId(fileId); var token = Token.GetToken(AppAttr); var boxFile = GetBoxFile(fileId, token); editable = true; if (boxFile == null) { return(null); } var jsonFile = JObject.Parse(boxFile); var file = new File { ID = ThirdPartySelector.BuildAppFileId(AppAttr, jsonFile.Value <string>("id")), Title = Global.ReplaceInvalidCharsAndTruncate(jsonFile.Value <string>("name")), CreateOn = TenantUtil.DateTimeFromUtc(jsonFile.Value <DateTime>("created_at")), ModifiedOn = TenantUtil.DateTimeFromUtc(jsonFile.Value <DateTime>("modified_at")), ContentLength = Convert.ToInt64(jsonFile.Value <string>("size")), ProviderKey = "Box" }; var modifiedBy = jsonFile.Value <JObject>("modified_by"); if (modifiedBy != null) { file.ModifiedByString = modifiedBy.Value <string>("name"); } var createdBy = jsonFile.Value <JObject>("created_by"); if (createdBy != null) { file.CreateByString = createdBy.Value <string>("name"); } var locked = jsonFile.Value <JObject>("lock"); if (locked != null) { var lockedBy = locked.Value <JObject>("created_by"); if (lockedBy != null) { var lockedUserId = lockedBy.Value <string>("id"); Global.Logger.Debug("BoxApp: locked by " + lockedUserId); editable = CurrentUser(lockedUserId); } } return(file); }
private void RequestCode(HttpContext context) { var token = GetToken(context.Request.Query["code"]); if (token == null) { Logger.Error("BoxApp: token is null"); throw new SecurityException("Access token is null"); } var boxUserId = context.Request.Query["userId"]; if (AuthContext.IsAuthenticated) { if (!CurrentUser(boxUserId)) { Logger.Debug("BoxApp: logout for " + boxUserId); CookiesManager.ClearCookies(CookiesType.AuthKey); AuthContext.Logout(); } } if (!AuthContext.IsAuthenticated) { var userInfo = GetUserInfo(token, out var isNew); if (userInfo == null) { Logger.Error("BoxApp: UserInfo is null"); throw new Exception("Profile is null"); } var cookiesKey = SecurityContext.AuthenticateMe(userInfo.ID); CookiesManager.SetCookies(CookiesType.AuthKey, cookiesKey); MessageService.Send(MessageAction.LoginSuccessViaSocialApp); if (isNew) { var userHelpTourSettings = SettingsManager.LoadForCurrentUser <UserHelpTourSettings>(); userHelpTourSettings.IsNewUser = true; SettingsManager.SaveForCurrentUser(userHelpTourSettings); PersonalSettingsHelper.IsNewUser = true; PersonalSettingsHelper.IsNotActivated = true; } if (!string.IsNullOrEmpty(boxUserId) && !CurrentUser(boxUserId)) { AddLinker(boxUserId); } } TokenHelper.SaveToken(token); var fileId = context.Request.Query["id"]; context.Response.Redirect(FilesLinkUtility.GetFileWebEditorUrl(ThirdPartySelector.BuildAppFileId(AppAttr, fileId)), true); }
private void RequestCode(HttpContext context) { var token = GetToken(context.Request["code"]); if (token == null) { Global.Logger.Error("BoxApp: token is null"); throw new SecurityException("Access token is null"); } var boxUserId = context.Request["userId"]; if (SecurityContext.IsAuthenticated) { if (!CurrentUser(boxUserId)) { Global.Logger.Debug("BoxApp: logout for " + boxUserId); CookiesManager.ClearCookies(CookiesType.AuthKey); SecurityContext.Logout(); } } if (!SecurityContext.IsAuthenticated) { bool isNew; var userInfo = GetUserInfo(token, out isNew); if (userInfo == null) { Global.Logger.Error("BoxApp: UserInfo is null"); throw new Exception("Profile is null"); } CookiesManager.AuthenticateMeAndSetCookies(userInfo.Tenant, userInfo.ID, MessageAction.LoginSuccessViaSocialApp); if (isNew) { UserHelpTourHelper.IsNewUser = true; PersonalSettings.IsNewUser = true; PersonalSettings.IsNotActivated = true; } if (!string.IsNullOrEmpty(boxUserId) && !CurrentUser(boxUserId)) { AddLinker(boxUserId); } } Token.SaveToken(token); var fileId = context.Request["id"]; context.Response.Redirect(FilesLinkUtility.GetFileWebEditorUrl(ThirdPartySelector.BuildAppFileId(AppAttr, fileId)), true); }
private static void ConfirmConvertFile(HttpContext context) { var fileId = context.Request[FilesLinkUtility.FileId]; Global.Logger.Debug("GoogleDriveApp: ConfirmConvertFile - " + fileId); var token = Token.GetToken(AppAttr); var driveFile = GetDriveFile(fileId, token); if (driveFile == null) { Global.Logger.Error("GoogleDriveApp: file is null"); throw new Exception("File not found"); } fileId = CreateConvertedFile(driveFile, token); context.Response.Redirect(FilesLinkUtility.GetFileWebEditorUrl(ThirdPartySelector.BuildAppFileId(AppAttr, fileId)), true); }
private static void CreateFile(HttpContext context) { var folderId = context.Request[FilesLinkUtility.FolderId]; var fileName = context.Request[FilesLinkUtility.FileTitle]; Global.Logger.Debug("GoogleDriveApp: CreateFile folderId - " + folderId + " fileName - " + fileName); var token = Token.GetToken(AppAttr); var culture = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID).GetCulture(); var storeTemplate = Global.GetStoreTemplate(); var path = FileConstant.NewDocPath + culture + "/"; if (!storeTemplate.IsDirectory(path)) { path = FileConstant.NewDocPath + "default/"; } var ext = FileUtility.InternalExtension[FileUtility.GetFileTypeByFileName(fileName)]; path += "new" + ext; fileName = FileUtility.ReplaceFileExtension(fileName, ext); string driveFile; using (var content = storeTemplate.GetReadStream("", path)) { driveFile = CreateFile(content, fileName, folderId, token); } if (driveFile == null) { Global.Logger.Error("GoogleDriveApp: file is null"); throw new Exception("File not created"); } var jsonFile = JObject.Parse(driveFile); var fileId = jsonFile.Value <string>("id"); context.Response.Redirect(FilesLinkUtility.GetFileWebEditorUrl(ThirdPartySelector.BuildAppFileId(AppAttr, fileId)), true); }
public File GetFile(string fileId, out bool editable) { Global.Logger.Debug("GoogleDriveApp: get file " + fileId); fileId = ThirdPartySelector.GetFileId(fileId); var token = Token.GetToken(AppAttr); var driveFile = GetDriveFile(fileId, token); editable = false; if (driveFile == null) { return(null); } var jsonFile = JObject.Parse(driveFile); var file = new File { ID = ThirdPartySelector.BuildAppFileId(AppAttr, jsonFile.Value <string>("id")), Title = Global.ReplaceInvalidCharsAndTruncate(GetCorrectTitle(jsonFile)), CreateOn = TenantUtil.DateTimeFromUtc(jsonFile.Value <DateTime>("createdTime")), ModifiedOn = TenantUtil.DateTimeFromUtc(jsonFile.Value <DateTime>("modifiedTime")), ContentLength = Convert.ToInt64(jsonFile.Value <string>("size")), ModifiedByString = jsonFile["lastModifyingUser"]["displayName"].Value <string>(), ProviderKey = "Google" }; var owners = jsonFile["owners"]; if (owners != null) { file.CreateByString = owners[0]["displayName"].Value <string>(); } editable = jsonFile["capabilities"]["canEdit"].Value <bool>(); return(file); }
private static void RequestCode(HttpContext context) { var state = context.Request["state"]; Global.Logger.Debug("GoogleDriveApp: state - " + state); if (string.IsNullOrEmpty(state)) { Global.Logger.Error("GoogleDriveApp: empty state"); throw new Exception("Empty state"); } var token = GetToken(context.Request["code"]); if (token == null) { Global.Logger.Error("GoogleDriveApp: token is null"); throw new SecurityException("Access token is null"); } var stateJson = JObject.Parse(state); var googleUserId = stateJson.Value <string>("userId"); if (SecurityContext.IsAuthenticated) { if (!CurrentUser(googleUserId)) { Global.Logger.Debug("GoogleDriveApp: logout for " + googleUserId); CookiesManager.ClearCookies(CookiesType.AuthKey); SecurityContext.Logout(); } } if (!SecurityContext.IsAuthenticated) { bool isNew; var userInfo = GetUserInfo(token, out isNew); if (userInfo == null) { Global.Logger.Error("GoogleDriveApp: UserInfo is null"); throw new Exception("Profile is null"); } var cookiesKey = SecurityContext.AuthenticateMe(userInfo.ID); CookiesManager.SetCookies(CookiesType.AuthKey, cookiesKey); MessageService.Send(HttpContext.Current.Request, MessageAction.LoginSuccessViaSocialAccount); if (isNew) { UserHelpTourHelper.IsNewUser = true; PersonalSettings.IsNewUser = true; PersonalSettings.IsNotActivated = true; } if (!string.IsNullOrEmpty(googleUserId) && !CurrentUser(googleUserId)) { AddLinker(googleUserId); } } Token.SaveToken(token); var action = stateJson.Value <string>("action"); switch (action) { case "create": var folderId = stateJson.Value <string>("folderId"); context.Response.Redirect(App.Location + "?" + FilesLinkUtility.FolderId + "=" + HttpUtility.UrlEncode(folderId), true); return; case "open": var idsArray = stateJson.Value <JArray>("ids") ?? stateJson.Value <JArray>("exportIds"); if (idsArray == null) { Global.Logger.Error("GoogleDriveApp: ids is empty"); throw new Exception("File id is null"); } var fileId = idsArray.ToObject <List <string> >().FirstOrDefault(); var driveFile = GetDriveFile(fileId, token); if (driveFile == null) { Global.Logger.Error("GoogleDriveApp: file is null"); throw new Exception("File not found"); } var jsonFile = JObject.Parse(driveFile); var ext = GetCorrectExt(jsonFile); if (FileUtility.ExtsMustConvert.Contains(ext) || GoogleLoginProvider.GoogleDriveExt.Contains(ext)) { Global.Logger.Debug("GoogleDriveApp: file must be converted"); if (FilesSettings.ConvertNotify) { context.Response.Redirect(App.Location + "?" + FilesLinkUtility.FileId + "=" + HttpUtility.UrlEncode(fileId), true); return; } fileId = CreateConvertedFile(driveFile, token); } context.Response.Redirect(FilesLinkUtility.GetFileWebEditorUrl(ThirdPartySelector.BuildAppFileId(AppAttr, fileId)), true); return; } Global.Logger.Error("GoogleDriveApp: Action not identified"); throw new Exception("Action not identified"); }