public IHttpActionResult FinalizeResponse(IDataResponse <T> response, string fields = null, UrlHelper urlHelper = null) { try { urlHelper = urlHelper ?? GetUrlHelper(); if (response.Data == null) { return(NotFound()); } if (!response.IsSuccessful) { return(BadRequest(response.ErrorMessages.ToString())); } var dynamicResponse = DynamicTransmogrifier.ToDynamicResponse(response, fields); if (!dynamicResponse.IsSuccessful) { throw new Exception(string.Join(", ", dynamicResponse.ErrorMessages)); } return(Ok(dynamicResponse)); } catch (Exception ex) { _logger.LogError(ex); return(InternalServerError(new Exception(ex.Message))); } }
public void UpdateTitleBarTeamStats() { int licensed = 0; int provisioned = 0; string name = string.Empty; //do a call to get team info IMemberServices service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.GetInfoUrl = ApplicationResource.ActionGetInfo; service.UserAgentVersion = ApplicationResource.UserAgent; string AccessToken = ApplicationResource.DefaultAccessToken; IDataResponse response = service.GetInfo(AccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); name = jsonData["name"]; licensed = jsonData["num_licensed_users"]; provisioned = jsonData["num_provisioned_users"]; } } //get toolkit version and build title text string version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); this.Text = "Dropbox Business Admin Toolkit v" + version + " Team: " + name + " Licensed Users: " + licensed.ToString() + " Provisioned Users: " + provisioned.ToString(); this.Update(); this.Refresh(); }
private void OnEncode(ISession session, object data, System.IO.Stream stream) { PipeStream pstream = stream.ToPipeStream(); IDataResponse dataResponse = data as IDataResponse; if (dataResponse != null) { dataResponse.Write(pstream); } else { if (session.Server.EnableLog(LogType.Error)) { session.Server.Log(LogType.Error, session, $"{session.RemoteEndPoint} response {data} no impl IDataResponse"); } } //StaticResurce.FileBlock fb = data as StaticResurce.FileBlock; //if (fb != null) //{ // fb.Write(pstream); //} //else //{ // DataFrame dataPacket = data as DataFrame; // if (dataPacket != null) // { // dataPacket.Write(pstream); // } // else // { // HttpResponse response = (HttpResponse)data; // response.Write(pstream); // } //} }
protected IHttpActionResult FinalizeResponse <T1>(IDataResponse <IEnumerable <T1> > response, IPageable search, string fields = null) where T1 : class { try { if (search == null) { search = PageableSearch.Default; } if (!response.IsSuccessful) { return(BadRequest(string.Join(", ", response.ErrorMessages))); } var totalCount = response.TotalResults; var dynamicResponse = dynamicTransmogrifier.ToDynamicResponse(response, fields); if (!dynamicResponse.IsSuccessful) { throw new Exception(string.Join(", ", dynamicResponse.ErrorMessages)); } return(Ok(dynamicResponse)); } catch (Exception ex) { logger.LogError(ex); return(InternalServerError(new Exception(ex.Message))); } }
/* Fields is a comma delimited list of property names or paths (e.g. State.County) that should be included in the response. * Fields can be excluded: This can be useful to exclude properties like Region.ParentRegion or Region.ChildRegions (because they are recursive.) * To exclude a field, prefix it with "^": "^ParentRegion,^ChildRegions". * If a field list is nothing but excludes, all other fields will be included. * To exclude a field from a referenced entity: "ChildRegion.^ParentRegion" * To force all fields to be included: "*,ChildRegion.Code" */ public IDataResponse ToDynamicResponse <T>(IDataResponse <T> response, string fields = null) { var dynamicResponse = new DataResponse <dynamic> { ErrorMessages = response.ErrorMessages, IsSuccessful = response.IsSuccessful, TotalResults = response.TotalResults, VerboseErrorMessages = response.VerboseErrorMessages }; if (response.Data == null) { dynamicResponse.Data = null; } else if (response.Data is IEnumerable <ICanTransmogrify> ) { dynamicResponse.Data = ToDynamicList((response.Data as IEnumerable <ICanTransmogrify>), fields); } else if (response.Data is ICanTransmogrify) { dynamicResponse.Data = ToDynamicObject((response.Data as ICanTransmogrify), fields); } else if (IsSimple(response.Data.GetType())) { dynamicResponse.Data = response.Data; } return(dynamicResponse); }
public IDataResponse <T> GetWhereExpression(Expression <Func <T, bool> > expression) { IDataResponse <T> response = GetIDataResponse(() => UnitOfWork.GetRepository <T>().GetEntities(includesForSingle).Where(expression).FirstOrDefault()); FormatEntityForGet(response.Data, FieldLists.AllFields); return(response); }
protected IHttpActionResult FinalizeResponse(IDataResponse <T> response, string fields = null) { try { if (response.Data == null) { if (response.ErrorMessages.Count > 0) { return(BadRequest(string.Join(",", response.ErrorMessages))); } else { return(NotFound()); } } if (!response.IsSuccessful) { return(BadRequest(string.Join(",", response.ErrorMessages))); } var dynamicResponse = dynamicTransmogrifier.ToDynamicResponse(response, fields); if (!dynamicResponse.IsSuccessful) { throw new Exception(string.Join(", ", dynamicResponse.ErrorMessages)); } return(Ok(dynamicResponse)); } catch (Exception ex) { logger.LogError(ex); return(InternalServerError(new Exception(ex.Message))); } }
public IHttpActionResult FinalizeResponse <T1>(IDataResponse <List <T1> > response, string routeName, IPageable search, string fields = null, UrlHelper urlHelper = null) where T1 : class { try { urlHelper = urlHelper ?? GetUrlHelper(); if (!response.IsSuccessful) { return(BadRequest(string.Join(", ", response.ErrorMessages))); } var totalCount = response.TotalResults; Pagination.AddPaginationHeaderToResponse(urlHelper, search, totalCount, routeName); var dynamicResponse = DynamicTransmogrifier.ToDynamicResponse(response, fields); if (!dynamicResponse.IsSuccessful) { throw new Exception(string.Join(", ", dynamicResponse.ErrorMessages)); } return(Ok(dynamicResponse)); } catch (Exception ex) { _logger.LogError(ex); return(InternalServerError(new Exception(ex.Message))); } }
private void SearchMembers(ITextSearchModel model) { if (!string.IsNullOrEmpty(model.QueryString) && !string.IsNullOrEmpty(model.AccessToken)) { MemberServices service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.ListMembersUrl = ApplicationResource.ActionListMembers; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse response = service.ListMembers(new MemberData() { SearchLimit = model.SearchResultsLimit }, model.AccessToken); IMainPresenter presenter = SimpleResolver.Instance.Get <IMainPresenter>(); if (response.StatusCode == System.Net.HttpStatusCode.OK) { if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); // clear existing data first model.MemberList.Clear(); int resultCount = jsonData["members"].Count; for (int i = 0; i < resultCount; i++) { dynamic idObj = jsonData["members"][i]["profile"]["team_member_id"]; dynamic emailObj = jsonData["members"][i]["profile"]["email"]; string memberId = idObj.Value as string; string email = emailObj.Value as string; // update model MemberListViewItemModel lvItem = new MemberListViewItemModel() { Email = email, MemberId = memberId }; // perform file search if (!SearchFiles(service, memberId, model, email, presenter)) { model.MemberList.Add(lvItem); } SyncContext.Post(delegate { presenter.UpdateProgressInfo(string.Format("Searching Content(s) From : {0}", email)); }, null); } } } else { // TODO: Report error } } }
protected virtual IActionResult GenerateResponse <T>(IDataResponse <T> response) { if (response.IsSuccess) { return(Ok(response.Data)); } else { return(GenerateProblemResult(response.StatusCode, response.ErrorMessage)); } }
private void OnEncode(ISession session, object data, System.IO.Stream stream) { PipeStream pstream = stream.ToPipeStream(); IDataResponse dataResponse = data as IDataResponse; if (dataResponse != null) { dataResponse.Write(pstream); } else { if (session.Server.EnableLog(LogType.Error)) { session.Server.Log(LogType.Error, session, $"HTTP {session.RemoteEndPoint} response {data} no impl IDataResponse"); } } }
private void GetTeamFolders(ITeamFoldersModel model, IMainPresenter presenter) { IMemberServices service = service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.ListTeamFolderUrl = ApplicationResource.ActionListTeamFolder; service.UserAgentVersion = ApplicationResource.UserAgent; string fileAccessToken = ApplicationResource.DefaultAccessToken; IDataResponse response = service.ListTeamFolders(fileAccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); // clear existing data first model.TeamFolders.Clear(); //changed from entries to team_folders int resultCount = jsonData["team_folders"].Count; for (int i = 0; i < resultCount; i++) { dynamic team_folders = jsonData["team_folders"][i]; dynamic teamFolderName = team_folders["name"]; dynamic teamFolderId = team_folders["team_folder_id"]; dynamic status = team_folders["status"][".tag"]; // update model TeamFoldersListViewItemModel lvItem = new TeamFoldersListViewItemModel() { TeamFolderName = teamFolderName, TeamFolderId = teamFolderId, Status = status }; model.TeamFolders.Add(lvItem); } } } }
/// <summary> /// Invoke a custom action that returns an IDataReponse /// </summary> /// <param name="action">Action to be invoked.</param> protected virtual IHttpActionResult CustomAction <T1>(Func <IDataResponse <T1> > action) { try { IDataResponse <T1> result = action(); if (result.Data == null) { return(NotFound()); } if (!result.IsSuccessful) { return(BadRequest(string.Join(",", result.ErrorMessages))); } return(Ok(result)); } catch (Exception ex) { logger.LogError(ex); return(InternalServerError(new Exception(ex.Message))); } }
private void SearchMembers(IDumpUserContentModel model, IMainPresenter presenter) { if (!string.IsNullOrEmpty(model.UserAccessToken)) { MemberServices service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.ListMembersUrl = ApplicationResource.ActionListMembers; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse response = service.ListMembers(new MemberData() { SearchLimit = ApplicationResource.SearchDefaultLimit }, model.UserAccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); // clear existing data first model.MemberList.Clear(); int total = 0; int resultCount = jsonData["members"].Count; for (int i = 0; i < resultCount; i++) { dynamic profile = jsonData["members"][i]["profile"]; dynamic idObj = profile["team_member_id"]; dynamic emailObj = profile["email"]; dynamic status = profile["status"]; if (status != null && (status[".tag"].ToString().Equals("active") || status[".tag"].ToString().Equals("suspended") || status[".tag"].ToString().Equals("invited"))) { string teamId = idObj.Value as string; string email = emailObj.Value as string; // update model TeamListViewItemModel lvItem = new TeamListViewItemModel() { Email = email, TeamId = teamId }; model.MemberList.Add(lvItem); } if (SyncContext != null) { SyncContext.Post(delegate { presenter.UpdateProgressInfo("Scanning Account(s): " + (++total)); }, null); } } //if the memberID count is above limit - default 1000 we need to grab the cursor and call continue bool hasMore = jsonData["has_more"]; string cursor = jsonData["cursor"]; while (hasMore) { service.ListMembersContinuationUrl = ApplicationResource.ActionListMembersContinuation; IDataResponse responseCont = service.ListMembersContinuation(new MemberData() { Cursor = cursor }, model.UserAccessToken); string dataCont = responseCont.Data.ToString(); dynamic jsonDataCont = JsonConvert.DeserializeObject <dynamic>(dataCont); int resultContCount = jsonDataCont["members"].Count; for (int i = 0; i < resultContCount; i++) { dynamic profile = jsonDataCont["members"][i]["profile"]; dynamic idObj = profile["team_member_id"]; dynamic emailObj = profile["email"]; dynamic status = profile["status"]; if (status != null && (status[".tag"].ToString().Equals("active") || status[".tag"].ToString().Equals("suspended") || status[".tag"].ToString().Equals("invited"))) { string teamId = idObj.Value as string; string email = emailObj.Value as string; // update model TeamListViewItemModel lvItem = new TeamListViewItemModel() { Email = email, TeamId = teamId }; model.MemberList.Add(lvItem); } if (SyncContext != null) { SyncContext.Post(delegate { presenter.UpdateProgressInfo("Scanning Account(s): " + (++total)); }, null); } } hasMore = jsonDataCont["has_more"]; cursor = jsonDataCont["cursor"]; } } } } }
private List <Tuple <string, string, string, string> > GetSharedFolders(IGroupsModel model, IMainPresenter presenter) { IMemberServices service = service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.ListSharedFoldersUrl = ApplicationResource.ActionSharingListFolders; service.UserAgentVersion = ApplicationResource.UserAgent; var sharedFolders = new List <Tuple <string, string, string, string> >(); string memberId = string.Empty; foreach (var item in model.GroupInfo) { if (!string.IsNullOrEmpty(item.TeamMemberId)) { memberId = item.TeamMemberId; break; } } IDataResponse response = service.ListSharedFolders(new MemberData() { MemberId = memberId }, ApplicationResource.DefaultAccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); int resultCount = jsonData["entries"].Count; for (int i = 0; i < resultCount; i++) { dynamic entries = jsonData["entries"][i]; dynamic sharedFolderId = Convert.ToString(entries["shared_folder_id"]); dynamic sharedFolderName = Convert.ToString(entries["name"]); dynamic isInsideTeamFolder = Convert.ToString(entries["is_inside_team_folder"]); dynamic isTeamFolder = Convert.ToString(entries["is_team_folder"]); var tuple = Tuple.Create(sharedFolderId, sharedFolderName, isInsideTeamFolder, isTeamFolder); if (!sharedFolders.Contains(tuple)) { sharedFolders.Add(tuple); } } //if the group count is above limit - default 1000 we need to grab the cursor and call continue string cursor = jsonData["cursor"]; while (!string.IsNullOrEmpty(cursor)) { service.ListSharedFoldersUrl = ApplicationResource.ActionSharingListFoldersContinuation; IDataResponse responseCont = service.ListSharedFolders(new MemberData() { MemberId = memberId, Cursor = cursor }, model.AccessToken); string dataCont = responseCont.Data.ToString(); dynamic jsonDataCont = JsonConvert.DeserializeObject <dynamic>(dataCont); int resultContCount = jsonDataCont["entries"].Count; for (int i = 0; i < resultContCount; i++) { dynamic entries = jsonDataCont["entries"][i]; dynamic sharedFolderId = Convert.ToString(entries["shared_folder_id"]); dynamic sharedFolderName = Convert.ToString(entries["name"]); dynamic isInsideTeamFolder = Convert.ToString(entries["is_inside_team_folder"]); dynamic isTeamFolder = Convert.ToString(entries["is_team_folder"]); var tuple = Tuple.Create(sharedFolderId, sharedFolderName, isInsideTeamFolder, isTeamFolder); if (!sharedFolders.Contains(tuple)) { sharedFolders.Add(tuple); } } cursor = jsonDataCont["cursor"]; } } } return(sharedFolders); }
private void ExportGroups(IGroupsModel model, IMainPresenter presenter) { IMemberServices service = service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.ExportGroupsUrl = ApplicationResource.ActionGetGroupInfo; service.UserAgentVersion = ApplicationResource.UserAgent; List <string> groupIdList = new List <string>(); foreach (GroupListViewItemModel item in model.Groups.Where(m => m.IsChecked).ToList()) { groupIdList.Add(item.GroupId); } //if at least one is checked to export, lets do it if (groupIdList.Count > 0) { IDataResponse response = service.ExportGroups(new MemberData() { }, groupIdList, model.AccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); // clear existing data first model.GroupInfo.Clear(); int resultCount = jsonData.Count; for (int i = 0; i < resultCount; i++) { dynamic groupInfo = jsonData[i]; dynamic groupName = groupInfo["group_name"]; dynamic groupId = groupInfo["group_id"]; dynamic groupType = groupInfo["group_management_type"][".tag"]; dynamic teamMemberId = string.Empty; dynamic email = string.Empty; dynamic emailVerified = string.Empty; dynamic status = string.Empty; dynamic membershipType = string.Empty; dynamic joinedOn = string.Empty; dynamic accessType = string.Empty; //You can only get member profile info from user managed groups if (groupType == "user_managed") { int memberCount = groupInfo["members"].Count; for (int m = 0; m < memberCount; m++) { teamMemberId = groupInfo["members"][m]["profile"]["team_member_id"]; email = groupInfo["members"][m]["profile"]["email"]; emailVerified = Convert.ToString(groupInfo["members"][m]["profile"]["email_verified"]); status = groupInfo["members"][m]["profile"]["status"][".tag"]; membershipType = groupInfo["members"][m]["profile"]["membership_type"][".tag"]; joinedOn = Convert.ToString(groupInfo["members"][m]["profile"]["joined_on"]); accessType = groupInfo["members"][m]["access_type"][".tag"]; // update model GroupInfoItemModel lvItem1 = new GroupInfoItemModel() { GroupName = groupName, GroupId = groupId, GroupType = groupType, TeamMemberId = teamMemberId, Email = email, EmailVerified = emailVerified, Status = status, MembershipType = membershipType, JoinedOn = joinedOn, AccessType = accessType }; model.GroupInfo.Add(lvItem1); } } if (groupType != "user_managed") { // update model GroupInfoItemModel lvItem = new GroupInfoItemModel() { GroupName = groupName, GroupId = groupId, GroupType = groupType }; model.GroupInfo.Add(lvItem); } } } } } }
public IList <TeamListViewItemModel> SearchOwners(IPaperModel model, IMainPresenter presenter) { IList <TeamListViewItemModel> members = new List <TeamListViewItemModel>(); if (!string.IsNullOrEmpty(model.AccessToken)) { MemberServices service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.ListMembersUrl = ApplicationResource.ActionListMembers; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse response = service.ListMembers(new MemberData() { SearchLimit = ApplicationResource.SearchDefaultLimit }, model.AccessToken); if (SyncContext != null) { SyncContext.Post(delegate { presenter.UpdateProgressInfo("Searching users..."); }, null); } if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); int resultCount = jsonData["members"].Count; int total = 0; for (int i = 0; i < resultCount; i++) { dynamic profile = jsonData["members"][i]["profile"]; dynamic idObj = profile["team_member_id"]; dynamic emailObj = profile["email"]; dynamic status = profile["status"]; if (status != null && (status[".tag"].ToString().Equals("active") || status[".tag"].ToString().Equals("suspended"))) { string teamId = idObj.Value as string; string email = emailObj.Value as string; // update model TeamListViewItemModel lvItem = new TeamListViewItemModel() { Email = email, TeamId = teamId }; members.Add(lvItem); } if (SyncContext != null) { SyncContext.Post(delegate { presenter.UpdateProgressInfo("Scanning Account(s): " + (++total)); }, null); } Thread.Sleep(1); } // collect more. bool hasMore = jsonData["has_more"]; string cursor = jsonData["cursor"]; while (hasMore) { service.ListMembersContinuationUrl = ApplicationResource.ActionListMembersContinuation; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse responseCont = service.ListMembersContinuation(new MemberData() { Cursor = cursor }, model.AccessToken); string dataCont = responseCont.Data.ToString(); dynamic jsonDataCont = JsonConvert.DeserializeObject <dynamic>(dataCont); int resultContCount = jsonDataCont["members"].Count; for (int i = 0; i < resultContCount; i++) { dynamic profile = jsonDataCont["members"][i]["profile"]; dynamic idObj = profile["team_member_id"]; dynamic emailObj = profile["email"]; dynamic status = profile["status"]; string teamId = idObj.Value as string; string email = emailObj.Value as string; if (status != null && (status[".tag"].ToString().Equals("active") || status[".tag"].ToString().Equals("suspended"))) { // update model TeamListViewItemModel lvItem = new TeamListViewItemModel() { Email = email, TeamId = teamId }; members.Add(lvItem); } if (SyncContext != null) { SyncContext.Post(delegate { presenter.UpdateProgressInfo("Scanning Account(s): " + (++total)); }, null); } Thread.Sleep(1); } hasMore = jsonDataCont["has_more"]; cursor = jsonDataCont["cursor"]; } } } } return(members); }
private IList <PaperListViewItemModel> GetPaperDocs(IPaperModel model, IMainPresenter presenter, TeamListViewItemModel memberitem) { IMemberServices service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.ListPaperDocsUrl = ApplicationResource.ActionListPaperDocs; service.UserAgentVersion = ApplicationResource.UserAgent; string paperAccessToken = ApplicationResource.DefaultAccessToken; string memberId = string.Empty; IList <PaperListViewItemModel> docIds = new List <PaperListViewItemModel>(); //foreach (var memberitem in members) //{ if (!string.IsNullOrEmpty(memberitem.TeamId)) { memberId = memberitem.TeamId; } IDataResponse response = service.ListPaperDocs(new MemberData() { MemberId = memberId }, paperAccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); int resultCount = jsonData["doc_ids"].Count; for (int i = 0; i < resultCount; i++) { dynamic paperDocId = jsonData["doc_ids"][i]; // update model PaperListViewItemModel lvItem = new PaperListViewItemModel() { PaperId = paperDocId, MemberId = memberId, IsChecked = true }; docIds.Add(lvItem); } //if the group count is above limit - default 1000 we need to grab the cursor and call continue string cursor = jsonData["cursor"]["value"]; bool hasMore = jsonData["has_more"]; while (hasMore) { service.ListPaperDocsUrl = ApplicationResource.ActionListContinuationPaperDocs; IDataResponse responseCont = service.ListPaperDocs(new MemberData() { Cursor = cursor }, paperAccessToken); string dataCont = responseCont.Data.ToString(); dynamic jsonDataCont = JsonConvert.DeserializeObject <dynamic>(dataCont); int resultContCount = jsonDataCont["doc_ids"].Count; for (int i = 0; i < resultContCount; i++) { dynamic paperDocId = jsonDataCont["doc_ids"][i]; // update model PaperListViewItemModel lvItem = new PaperListViewItemModel() { PaperId = paperDocId, MemberId = memberId, IsChecked = true }; docIds.Add(lvItem); } hasMore = jsonDataCont["has_more"]; cursor = jsonDataCont["cursor"]["value"]; } } } return(docIds); //} }
private void GetPaperMetadata(IPaperModel model, IMainPresenter presenter, string docId, string memberId) { IMemberServices service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.GetPaperMetadataUrl = ApplicationResource.ActionGetPaperDocMetadata; service.UserAgentVersion = ApplicationResource.UserAgent; string paperAccessToken = ApplicationResource.DefaultAccessToken; IMemberServices serviceFolderInfo = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); serviceFolderInfo.PaperDocFolderInfoUrl = ApplicationResource.ActionPaperDocFolderInfo; serviceFolderInfo.UserAgentVersion = ApplicationResource.UserAgent; string folderPath = @"/"; try { if (SyncContext != null) { SyncContext.Post(delegate { presenter.UpdateProgressInfo(string.Format("Retrieving Paper doc metadata for id: {0}", docId)); }, null); } //get paper doc folder info to add to listview object IDataResponse responseFolderInfo = serviceFolderInfo.GetPaperDocFolderInfo(docId, paperAccessToken, memberId); if (responseFolderInfo.StatusCode == HttpStatusCode.OK) { if (responseFolderInfo.Data != null) { string data = responseFolderInfo.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); int resultCount = 0; if (data != "{}") { resultCount = jsonData["folders"].Count; for (int i = 0; i < resultCount; i++) { dynamic folders = jsonData["folders"][i]; dynamic folderPathobj = folders["name"]; string folderPathNext = folderPathobj.Value as string; folderPath = folderPath + folderPathNext + "/"; } } } } //now get remainder of metadata IDataResponse response = service.GetPaperMetadata(docId, paperAccessToken, memberId); if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); dynamic paperDocIdobj = jsonData["doc_id"]; dynamic ownerobj = jsonData["owner"]; dynamic paperNameobj = jsonData["title"]; dynamic createdDateobj = jsonData["created_date"]; dynamic statusobj = jsonData["status"][".tag"]; dynamic revisionobj = jsonData["revision"]; dynamic lastUpdatedDateobj = jsonData["last_updated_date"]; dynamic lastEditorobj = jsonData["last_editor"]; string paperDocId = paperDocIdobj.Value as string; string owner = ownerobj.Value as string; string paperName = paperNameobj.Value as string; DateTime createdDate = DateTime.MinValue; if (createdDateobj != null) { createdDate = createdDateobj; } string status = statusobj.Value as string; UInt64 revision = 0; if (revisionobj != null) { revision = revisionobj; } DateTime lastUpdatedDate = DateTime.MinValue; if (lastUpdatedDateobj != null) { lastUpdatedDate = lastUpdatedDateobj; } string lastEditor = lastEditorobj.Value as string; // update model PaperListViewItemModel lvItem = new PaperListViewItemModel() { PaperId = paperDocId, Owner = owner, PaperName = paperName, FolderPath = folderPath, CreatedDate = createdDate, Status = status, Revision = revision, LastUpdatedDate = lastUpdatedDate, LastEditor = lastEditor, MemberId = memberId, IsChecked = true }; model.Paper.Add(lvItem); } } } catch (Exception) { // error message. SyncContext.Post(delegate { presenter.ShowErrorMessage(ErrorMessages.FAILED_TO_GET_PAPER_METADATA, ErrorMessages.DLG_DEFAULT_TITLE); presenter.UpdateProgressInfo(""); presenter.ActivateSpinner(false); presenter.EnableControl(true); }, null); } }
private void ExportGroupPerms(IGroupsModel model, IMainPresenter presenter) { IMemberServices service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.ExportGroupPermsUrl = ApplicationResource.ActionSharingListFolderMembers; service.UserAgentVersion = ApplicationResource.UserAgent; string memberId = string.Empty; foreach (var item in model.GroupInfo) { if (!string.IsNullOrEmpty(item.TeamMemberId)) { memberId = item.TeamMemberId; break; } } List <Tuple <string, string, string, string> > sharedFolders = this.GetSharedFolders(model, presenter); foreach (var item in sharedFolders) { IDataResponse response = service.ExportGroupPerms(new MemberData() { MemberId = memberId }, item.Item1, ApplicationResource.DefaultAccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); int resultCount = jsonData["groups"].Count; for (int i = 0; i < resultCount; i++) { dynamic groups = jsonData["groups"][i]; dynamic groupName = Convert.ToString(groups["group"]["group_name"]); dynamic groupId = Convert.ToString(groups["group"]["group_id"]); dynamic groupMgmtType = Convert.ToString(groups["group"]["group_management_type"][".tag"]); dynamic groupType = Convert.ToString(groups["group"]["group_type"][".tag"]); dynamic isMember = Convert.ToString(groups["group"]["is_member"]); dynamic isOwner = Convert.ToString(groups["group"]["is_owner"]); dynamic accessType = Convert.ToString(groups["access_type"][".tag"]); dynamic isInherited = Convert.ToString(groups["is_inherited"]); dynamic sharedFolderId = item.Item1; dynamic sharedFolderName = item.Item2; dynamic isInsideTeamFolder = item.Item3; dynamic isTeamFolder = item.Item4; // update model GroupPermsItemModel lvItem = new GroupPermsItemModel() { GroupName = groupName, GroupId = groupId, GroupManagementType = groupMgmtType, GroupType = groupType, IsMember = isMember, IsOwner = isOwner, AccessType = accessType, SharedFolderName = sharedFolderName, SharedFolderId = sharedFolderId, IsInherited = isInherited, IsTeamFolder = isTeamFolder, IsInsideTeamFolder = isInsideTeamFolder }; model.GroupPerms.Add(lvItem); } //if the group count is above limit - default 1000 we need to grab the cursor and call continue string cursor = jsonData["cursor"]; while (!string.IsNullOrEmpty(cursor)) { service.ExportGroupPermsUrl = ApplicationResource.ActionSharingListFolderMembersContinuation; IDataResponse responseCont = service.ExportGroupPerms(new MemberData() { MemberId = memberId, Cursor = cursor }, item.Item1, model.AccessToken); string dataCont = responseCont.Data.ToString(); dynamic jsonDataCont = JsonConvert.DeserializeObject <dynamic>(dataCont); int resultCountCont = jsonDataCont["groups"].Count; for (int i = 0; i < resultCountCont; i++) { dynamic groups = jsonDataCont["groups"][i]; dynamic groupName = Convert.ToString(groups["group"]["group_name"]); dynamic groupId = Convert.ToString(groups["group"]["group_id"]); dynamic groupMgmtType = Convert.ToString(groups["group"]["group_management_type"][".tag"]); dynamic groupType = Convert.ToString(groups["group"]["group_type"][".tag"]); dynamic isMember = Convert.ToString(groups["group"]["is_member"]); dynamic isOwner = Convert.ToString(groups["group"]["is_owner"]); dynamic accessType = Convert.ToString(groups["access_type"][".tag"]); dynamic isInherited = Convert.ToString(groups["is_inherited"]); dynamic sharedFolderId = item.Item1; dynamic sharedFolderName = item.Item2; dynamic isInsideTeamFolder = item.Item3; dynamic isTeamFolder = item.Item4; // update model GroupPermsItemModel lvItem = new GroupPermsItemModel() { GroupName = groupName, GroupId = groupId, GroupManagementType = groupMgmtType, GroupType = groupType, IsMember = isMember, IsOwner = isOwner, AccessType = accessType, SharedFolderName = sharedFolderName, SharedFolderId = sharedFolderId, IsInherited = isInherited, IsTeamFolder = isTeamFolder, IsInsideTeamFolder = isInsideTeamFolder }; model.GroupPerms.Add(lvItem); } cursor = jsonDataCont["cursor"]; } } } } }
private bool SearchFiles( IMemberServices service, TeamListViewItemModel item, IDumpUserContentModel model, IMainPresenter presenter) { bool filesAdded = false; try { service.ListFolderUrl = ApplicationResource.ActionListFolder; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse response = service.ListFolders( new MemberData() { MemberId = item.TeamId }, model.UserAccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string content = response.Data as string; dynamic jsonDataSearch = JsonConvert.DeserializeObject <dynamic>(content); int entryCount = 0; if (jsonDataSearch["entries"] != null) { entryCount = jsonDataSearch["entries"].Count; } //remove existing file entries. for (int i = model.MemberList.Count - 1; i >= 0; i--) { TeamListViewItemModel lvItem = model.MemberList[i]; if (lvItem.TeamId.Equals(item.TeamId)) { model.MemberList.RemoveAt(i); } } int total = 0; for (int i = 0; i < entryCount; i++) { TeamListViewItemModel lvItem = null; if (jsonDataSearch["entries"][i][".tag"].ToString().Equals("file")) { lvItem = new TeamListViewItemModel() { Email = item.Email, TeamId = item.TeamId, FileName = jsonDataSearch["entries"][i]["name"].ToString(), FilePath = jsonDataSearch["entries"][i]["path_lower"].ToString(), FileSize = FileUtil.FormatFileSize(Convert.ToInt64(jsonDataSearch["entries"][i]["size"].ToString())), IsChecked = true }; lock (insertLock) { model.MemberList.Add(lvItem); } SyncContext.Post(delegate { presenter.UpdateProgressInfo(string.Format("Searching Files For : {0} File Count: {1}", item.Email, (++total))); }, null); } } if (entryCount > 0) { filesAdded = true; } bool hasMore = jsonDataSearch["has_more"]; string cursor = jsonDataSearch["cursor"]; while (hasMore) { service.ListFolderUrl = ApplicationResource.ActionListFolderContinuation; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse responseCont = service.ListFolders( new MemberData() { MemberId = item.TeamId, Cursor = cursor }, model.UserAccessToken); string contentCont = responseCont.Data as string; dynamic jsonDataSearchCont = JsonConvert.DeserializeObject <dynamic>(contentCont); int entryCountCont = 0; if (jsonDataSearchCont["entries"] != null) { entryCountCont = jsonDataSearchCont["entries"].Count; } int totalCont = 0; for (int i = 0; i < entryCountCont; i++) { TeamListViewItemModel lvItem = null; if (jsonDataSearchCont["entries"][i][".tag"].ToString().Equals("file")) { lvItem = new TeamListViewItemModel() { Email = item.Email, TeamId = item.TeamId, FileName = jsonDataSearchCont["entries"][i]["name"].ToString(), FilePath = jsonDataSearchCont["entries"][i]["path_lower"].ToString(), FileSize = FileUtil.FormatFileSize(Convert.ToInt64(jsonDataSearchCont["entries"][i]["size"].ToString())), IsChecked = true }; lock (insertLock) { model.MemberList.Add(lvItem); } SyncContext.Post(delegate { presenter.UpdateProgressInfo(string.Format("Searching Files For : {0} File Count: {1}", item.Email, (++totalCont))); }, null); } } if (entryCountCont > 0) { filesAdded = true; } hasMore = jsonDataSearchCont["has_more"]; cursor = jsonDataSearchCont["cursor"]; } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } return(filesAdded); }
private void GetGroups(IGroupsModel model, IMainPresenter presenter) { IMemberServices service = service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.GetGroupsUrl = ApplicationResource.ActionGetGroups; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse response = service.GetGroups(new MemberData() { }, model.AccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); // clear existing data first model.Groups.Clear(); int resultCount = jsonData["groups"].Count; for (int i = 0; i < resultCount; i++) { dynamic groups = jsonData["groups"][i]; dynamic groupName = groups["group_name"]; dynamic groupType = groups["group_management_type"][".tag"]; dynamic groupId = groups["group_id"]; dynamic memberCount = groups["member_count"]; // update model GroupListViewItemModel lvItem = new GroupListViewItemModel() { GroupName = groupName, GroupType = groupType, GroupId = groupId, MemberCount = memberCount }; model.Groups.Add(lvItem); } //if the group count is above limit - default 1000 we need to grab the cursor and call continue bool hasMore = jsonData["has_more"]; string cursor = jsonData["cursor"]; while (hasMore) { service.GetGroupsUrl = ApplicationResource.ActionGetGroupsContinuation; IDataResponse responseCont = service.GetGroups(new MemberData() { Cursor = cursor }, model.AccessToken); string dataCont = responseCont.Data.ToString(); dynamic jsonDataCont = JsonConvert.DeserializeObject <dynamic>(dataCont); int resultContCount = jsonDataCont["groups"].Count; for (int i = 0; i < resultContCount; i++) { dynamic groups = jsonDataCont["groups"][i]; dynamic groupName = groups["group_name"]; dynamic groupType = groups["group_management_type"][".tag"]; dynamic groupId = groups["group_id"]; dynamic memberCount = groups["member_count"]; // update model GroupListViewItemModel lvItem = new GroupListViewItemModel() { GroupName = groupName, GroupType = groupType, GroupId = groupId, MemberCount = memberCount }; model.Groups.Add(lvItem); } hasMore = jsonDataCont["has_more"]; cursor = jsonDataCont["cursor"]; } } } }
private bool SearchFiles( IMemberServices service, string memberId, ITextSearchModel model, string email, IMainPresenter presenter) { bool filesAdded = false; bool SuppressStatus = ApplicationResource.SuppressFilenamesInStatus; try { service.SearchFilesUrl = ApplicationResource.ActionFileSearch; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse response = service.SearchFiles(new MemberData() { SearchText = model.QueryString, SearchLimit = ApplicationResource.SearchFileCountLimit,//model.SearchResultsLimit, SearchMode = model.GetSearchModeForService(), MemberId = memberId }, model.AccessToken); if (response.StatusCode == System.Net.HttpStatusCode.OK) { if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonDataSearch = JsonConvert.DeserializeObject <dynamic>(data); if (jsonDataSearch["matches"] != null && jsonDataSearch["matches"].ToString() != "[]") { int matchCount = jsonDataSearch["matches"].Count; for (int j = 0; j < matchCount; j++) { string pathLower = jsonDataSearch["matches"][j]["metadata"]["path_lower"]; // update model MemberListViewItemModel item = new MemberListViewItemModel() { Email = email, Path = pathLower, MemberId = memberId }; // add searched members to list. model.MemberList.Add(item); SyncContext.Post(delegate { if (!SuppressStatus) { presenter.UpdateProgressInfo(string.Format("Member: {0} File : {1}", email, item.Path)); } else { presenter.UpdateProgressInfo(string.Format("Member: {0} File : Suppressing filename status...", email)); } }, null); } if (matchCount > 0) { filesAdded = true; } } } } } catch (Exception e) { Console.WriteLine(e.Message); } return(filesAdded); }
public CustomApiResult(IDataResponse result) { _result = result; }
private void SearchItems( IMemberServices service, TeamListViewItemModel owner, IDataMigrationModel model, IMainPresenter presenter) { bool SuppressStatus = ApplicationResource.SuppressFilenamesInStatus; bool complete = false; //remove when done debugging exceptionCount = 0; try { while (!complete) { service.ListFolderUrl = ApplicationResource.ActionListFolder; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse response = service.ListFolders( new MemberData() { MemberId = owner.TeamId }, model.AccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string content = response.Data as string; dynamic jsonDataSearch = JsonConvert.DeserializeObject <dynamic>(content); IDictionary <string, long> folderMap = new Dictionary <string, long>(); int entryCount = jsonDataSearch["entries"].Count; int foundTotal = 0; for (int i = 0; i < entryCount; i++) { dynamic entry = jsonDataSearch["entries"][i]; string type = entry[".tag"].ToString(); ContentDisplayListViewItemModel lvItem = null; if (type.Equals("folder")) { lvItem = new ContentDisplayListViewItemModel() { ItemType = type, Email = owner.Email, MemberId = owner.TeamId, FirstName = owner.FirstName, LastName = owner.LastName, ItemName = entry["name"].ToString(), ItemPath = entry["path_lower"].ToString(), ItemPathDisplay = entry["path_display"].ToString(), ItemSizeByte = 0 }; } else { string serverModified = entry["server_modified"].ToString(); string serverModifiedDate = string.Empty; if (!string.IsNullOrEmpty(serverModified)) { DateTime lastModified = DateTime.SpecifyKind( DateTime.Parse(serverModified), DateTimeKind.Utc ); serverModifiedDate = lastModified.ToString("dd MMM yyyy"); } string fileSizeStr = jsonDataSearch["entries"][i]["size"].ToString(); long fileSize = 0; long.TryParse(fileSizeStr, out fileSize); lvItem = new ContentDisplayListViewItemModel() { ItemType = type, Email = owner.Email, MemberId = owner.TeamId, FirstName = owner.FirstName, LastName = owner.LastName, ItemName = entry["name"].ToString(), ItemPath = entry["path_lower"].ToString(), ItemPathDisplay = entry["path_display"].ToString(), ItemSize = FileUtil.FormatFileSize(fileSize), ItemSizeByte = fileSize, LastModified = serverModifiedDate, Uploaded = serverModifiedDate, Created = serverModifiedDate }; } lock (insertLock) { model.Contents.Add(lvItem); } if (SyncContext != null) { SyncContext.Post(delegate { if (!SuppressStatus) { presenter.UpdateProgressInfo(string.Format("Owner: [{0}] Item: [{1}] {2}/{3}", lvItem.Email, lvItem.ItemName, (++foundTotal), entryCount)); } else { presenter.UpdateProgressInfo(string.Format("Owner: [{0}] Item: [{1}] {2}/{3}", lvItem.Email, "Suppressing filename status", (++foundTotal), entryCount)); } }, null); } } bool hasMore = jsonDataSearch["has_more"]; string cursor = jsonDataSearch["cursor"]; while (hasMore) { service.ListFolderUrl = ApplicationResource.ActionListFolderContinuation; IDataResponse responseCont = service.ListFolders( new MemberData() { MemberId = owner.TeamId, Cursor = cursor }, model.AccessToken); string contentCont = responseCont.Data as string; dynamic jsonDataSearchCont = JsonConvert.DeserializeObject <dynamic>(contentCont); IDictionary <string, long> folderMapCont = new Dictionary <string, long>(); int entryCountCont = jsonDataSearchCont["entries"].Count; int foundTotalCont = 0; for (int i = 0; i < entryCountCont; i++) { dynamic entry = jsonDataSearchCont["entries"][i]; string type = entry[".tag"].ToString(); ContentDisplayListViewItemModel lvItem = null; if (type.Equals("folder")) { lvItem = new ContentDisplayListViewItemModel() { ItemType = type, Email = owner.Email, MemberId = owner.TeamId, FirstName = owner.FirstName, LastName = owner.LastName, ItemName = entry["name"].ToString(), ItemPath = entry["path_lower"].ToString(), ItemPathDisplay = entry["path_display"].ToString(), ItemSizeByte = 0 }; } else { string serverModified = entry["server_modified"].ToString(); string serverModifiedDate = string.Empty; if (!string.IsNullOrEmpty(serverModified)) { DateTime lastModified = DateTime.SpecifyKind( DateTime.Parse(serverModified), DateTimeKind.Utc ); serverModifiedDate = lastModified.ToString("dd MMM yyyy"); } string fileSizeStr = jsonDataSearchCont["entries"][i]["size"].ToString(); long fileSize = 0; long.TryParse(fileSizeStr, out fileSize); lvItem = new ContentDisplayListViewItemModel() { ItemType = type, Email = owner.Email, MemberId = owner.TeamId, FirstName = owner.FirstName, LastName = owner.LastName, ItemName = entry["name"].ToString(), ItemPath = entry["path_lower"].ToString(), ItemPathDisplay = entry["path_display"].ToString(), ItemSize = FileUtil.FormatFileSize(fileSize), ItemSizeByte = fileSize, LastModified = serverModifiedDate, Uploaded = serverModifiedDate, Created = serverModifiedDate }; } lock (insertLock) { model.Contents.Add(lvItem); } if (SyncContext != null) { SyncContext.Post(delegate { if (!SuppressStatus) { presenter.UpdateProgressInfo(string.Format("Owner: [{0}] Item: [{1}] {2}/{3}", lvItem.Email, lvItem.ItemName, (++foundTotalCont), entryCountCont)); } else { presenter.UpdateProgressInfo(string.Format("Owner: [{0}] Item: [{1}] {2}/{3}", lvItem.Email, "Suppressing filename status", (++foundTotalCont), entryCountCont)); } }, null); } } hasMore = jsonDataSearchCont["has_more"]; cursor = jsonDataSearchCont["cursor"]; } } complete = true; } if (response.StatusCode != HttpStatusCode.OK) { //error from API if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); if (data == "") { complete = false; retryCount++; } } else { //response.Data is null so let's retry complete = false; retryCount++; } } } } catch (Exception ex) { exceptionCount++; Console.WriteLine(ex.Message); } }
private void RefreshHealth(ITeamHealthModel model, IMainPresenter presenter) { string fileAccessToken = ApplicationResource.DefaultAccessToken; //set default values so we have something int licensed = 0; int provisioned = 0; string name = string.Empty; string activityStartDate = string.Empty; int adds = 0; int edits = 0; int deletes = 0; int activeSharedFolders7Day = 0; int activeUsers7Day = 0; string devicesStartDate = string.Empty; int windows = 0; int macos = 0; int linux = 0; int ios = 0; int android = 0; int other = 0; int total = 0; string storageStartDate = string.Empty; UInt64 totalStorage = 0; UInt64 sharedStorage = 0; UInt64 unsharedStorage = 0; int sharedFolders = 0; IMemberServices service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.GetInfoUrl = ApplicationResource.ActionGetInfo; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse response = service.GetInfo(fileAccessToken); IMemberServices serviceActivity = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); serviceActivity.GetActivityUrl = ApplicationResource.ActionGetActivity; serviceActivity.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse responseActivity = serviceActivity.GetActivity(fileAccessToken); IMemberServices serviceDevices = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); serviceDevices.GetDevicesReportUrl = ApplicationResource.ActionGetDevices; serviceDevices.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse responseDevices = serviceDevices.GetDevicesReport(fileAccessToken); IMemberServices serviceStorage = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); serviceStorage.GetStorageUrl = ApplicationResource.ActionGetStorage; serviceStorage.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse responseStorage = serviceStorage.GetStorage(fileAccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); name = jsonData["name"]; licensed = jsonData["num_licensed_users"]; provisioned = jsonData["num_provisioned_users"]; model.TeamName = name; model.LicensedUsers = licensed.ToString(); model.ProvisionedUsers = provisioned.ToString(); } } if (responseActivity.StatusCode == HttpStatusCode.OK) { if (responseActivity.Data != null) { string data = responseActivity.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); activityStartDate = jsonData["start_date"]; if (jsonData["adds"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["adds"].Count) - availableData) != null) { int addsCount = (jsonData["adds"].Count) - availableData; if (jsonData["adds"][addsCount] != null) { adds = jsonData["adds"][addsCount]; complete = true; } } availableData++; } } catch { adds = 0; } } if (jsonData["edits"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["edits"].Count) - availableData) != null) { int editsCount = (jsonData["edits"].Count) - availableData; if (jsonData["edits"][editsCount] != null) { edits = jsonData["edits"][editsCount]; } complete = true; } availableData++; } } catch { edits = 0; } } if (jsonData["deletes"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["deletes"].Count) - availableData) != null) { int deletesCount = (jsonData["deletes"].Count) - availableData; if (jsonData["deletes"][deletesCount] != null) { deletes = jsonData["deletes"][deletesCount]; } complete = true; } availableData++; } } catch { deletes = 0; } } if (jsonData["active_shared_folders_7_day"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["active_shared_folders_7_day"].Count) - availableData) != null) { int activeSharedCount = (jsonData["active_shared_folders_7_day"].Count) - availableData; if (jsonData["active_shared_folders_7_day"][activeSharedCount] != null) { activeSharedFolders7Day = jsonData["active_shared_folders_7_day"][activeSharedCount]; } complete = true; } availableData++; } } catch { activeSharedFolders7Day = 0; } } if (jsonData["active_users_7_day"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["active_users_7_day"].Count) - availableData) != null) { int activeUsers = (jsonData["active_users_7_day"].Count) - availableData; if (jsonData["active_users_7_day"][activeUsers] != null) { activeUsers7Day = jsonData["active_users_7_day"][activeUsers]; } complete = true; } availableData++; } } catch { activeUsers7Day = 0; } } model.Adds = adds.ToString(); model.Edits = edits.ToString(); model.Deletes = deletes.ToString(); model.ActiveSharedFolders7Day = activeSharedFolders7Day.ToString(); model.ActiveUsers7Day = activeUsers7Day.ToString(); } } if (responseDevices.StatusCode == HttpStatusCode.OK) { if (responseDevices.Data != null) { string data = responseDevices.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); devicesStartDate = jsonData["start_date"]; if (jsonData["active_7_day"] != null) { if (jsonData["active_7_day"]["windows"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["active_7_day"]["windows"].Count) - availableData) != null) { int windowsUsers = (jsonData["active_7_day"]["windows"].Count) - availableData; if (jsonData["active_7_day"]["windows"][windowsUsers] != null) { windows = jsonData["active_7_day"]["windows"][windowsUsers]; } complete = true; } availableData++; } } catch { windows = 0; } } if (jsonData["active_7_day"]["macos"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["active_7_day"]["macos"].Count) - availableData) != null) { int macosUsers = (jsonData["active_7_day"]["macos"].Count) - availableData; if (jsonData["active_7_day"]["macos"][macosUsers] != null) { macos = jsonData["active_7_day"]["macos"][macosUsers]; } complete = true; } availableData++; } } catch { macos = 0; } } if (jsonData["active_7_day"]["linux"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["active_7_day"]["linux"].Count) - availableData) != null) { int linuxUsers = (jsonData["active_7_day"]["linux"].Count) - availableData; if (jsonData["active_7_day"]["linux"][linuxUsers] != null) { linux = jsonData["active_7_day"]["linux"][linuxUsers]; } complete = true; } availableData++; } } catch { linux = 0; } } if (jsonData["active_7_day"]["ios"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["active_7_day"]["ios"].Count) - availableData) != null) { int iosUsers = (jsonData["active_7_day"]["ios"].Count) - availableData; if (jsonData["active_7_day"]["ios"][iosUsers] != null) { ios = jsonData["active_7_day"]["ios"][iosUsers]; } complete = true; } availableData++; } } catch { ios = 0; } } if (jsonData["active_7_day"]["android"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["active_7_day"]["android"].Count) - availableData) != null) { int androidUsers = (jsonData["active_7_day"]["android"].Count) - availableData; if (jsonData["active_7_day"]["android"][androidUsers] != null) { android = jsonData["active_7_day"]["android"][androidUsers]; } complete = true; } availableData++; } } catch { android = 0; } } if (jsonData["active_7_day"]["other"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["active_7_day"]["other"].Count) - availableData) != null) { int otherUsers = (jsonData["active_7_day"]["other"].Count) - availableData; if (jsonData["active_7_day"]["other"][otherUsers] != null) { other = jsonData["active_7_day"]["other"][otherUsers]; } complete = true; } availableData++; } } catch { other = 0; } } if (jsonData["active_7_day"]["total"][0] != null) { try { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["active_7_day"]["total"].Count) - availableData) != null) { int totalUsers = (jsonData["active_7_day"]["total"].Count) - availableData; if (jsonData["active_7_day"]["total"][totalUsers] != null) { total = jsonData["active_7_day"]["total"][totalUsers]; } complete = true; } availableData++; } } catch { total = 0; } } } model.windows = windows.ToString(); model.macos = macos.ToString(); model.linux = linux.ToString(); model.ios = ios.ToString(); model.android = android.ToString(); model.other = other.ToString(); model.total = total.ToString(); } } if (responseStorage.StatusCode == HttpStatusCode.OK) { if (responseStorage.Data != null) { string data = responseStorage.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); storageStartDate = jsonData["start_date"]; if (jsonData["total_usage"][0] != null) { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["total_usage"].Count) - availableData) != null) { int totalCount = (jsonData["total_usage"].Count) - availableData; if (jsonData["total_usage"][totalCount] != null) { totalStorage = jsonData["total_usage"][totalCount]; double totalStorageDec = FileUtil.FormatFileSizeTB(totalStorage); model.TotalUsage = totalStorageDec.ToString() + " TB"; complete = true; } } availableData++; } } if (jsonData["shared_usage"][0] != null) { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["shared_usage"].Count) - availableData) != null) { int sharedCount = (jsonData["shared_usage"].Count) - availableData; if (jsonData["shared_usage"][sharedCount] != null) { sharedStorage = jsonData["shared_usage"][sharedCount]; double sharedStorageDec = FileUtil.FormatFileSizeTB(sharedStorage); model.SharedUsage = sharedStorageDec.ToString() + " TB"; complete = true; } } availableData++; } } if (jsonData["unshared_usage"][0] != null) { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["unshared_usage"].Count) - availableData) != null) { int unsharedCount = (jsonData["unshared_usage"].Count) - availableData; if (jsonData["unshared_usage"][unsharedCount] != null) { unsharedStorage = jsonData["unshared_usage"][unsharedCount]; double unsharedStorageDec = FileUtil.FormatFileSizeTB(unsharedStorage); model.UnsharedUsage = unsharedStorageDec.ToString() + " TB"; complete = true; } } availableData++; } } if (jsonData["shared_folders"][0] != null) { int availableData = 1; bool complete = false; while (!complete) { if (((jsonData["shared_usage"].Count) - availableData) != null) { int sharedFolderCount = (jsonData["shared_folders"].Count) - availableData; if (jsonData["shared_folders"][sharedFolderCount] != null) { sharedFolders = jsonData["shared_folders"][sharedFolderCount]; model.SharedFolders = sharedFolders.ToString(); complete = true; } } availableData++; } } } } if (responseStorage.StatusCode != HttpStatusCode.OK) { //if Dropbox gives back Internal Server error, bug filed from engineering on this model.TotalUsage = "N/A"; model.SharedUsage = "N/A"; model.UnsharedUsage = "N/A"; model.SharedFolders = "N/A"; } model.RefreshDateTime = DateTime.Now; }
public GetValues( IDataResponse data) { Data = data; }