public override bool RenameResource(IStorageProviderSession session, ICloudFileSystemEntry fsentry, string newName) { if (String.IsNullOrEmpty(newName) || GoogleDocsResourceHelper.IsNoolOrRoot(fsentry)) { return(false); } var url = String.Format(GoogleDocsConstants.GoogleDocsResourceUrlFormat, fsentry.Id.ReplaceFirst("_", "%3a")); var request = CreateWebRequest(session, url, "PUT", null); request.Headers.Add("If-Match", fsentry.GetPropertyValue(GoogleDocsConstants.EtagProperty)); GoogleDocsXmlParser.WriteAtom(request, GoogleDocsXmlParser.EntryElement(GoogleDocsXmlParser.TitleElement(newName))); try { var response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode == HttpStatusCode.OK) { //check if extension added if (!(fsentry is ICloudDirectoryEntry) && String.IsNullOrEmpty(Path.GetExtension(newName))) { newName = newName + Path.GetExtension(fsentry.Name); } (fsentry as BaseFileEntry).Name = newName; return(true); } } catch (WebException) { } return(false); }
public override ICloudFileSystemEntry RequestResource(IStorageProviderSession session, string Name, ICloudDirectoryEntry parent) { if (GoogleDocsResourceHelper.IsNoolOrRoot(parent) && GoogleDocsResourceHelper.IsRootName(Name)) { var root = new BaseDirectoryEntry("/", 0, DateTime.Now, session.Service, session) { Id = GoogleDocsConstants.RootFolderId }; root.SetPropertyValue(GoogleDocsConstants.ResCreateMediaProperty, GoogleDocsConstants.RootResCreateMediaUrl); RefreshDirectoryContent(session, root); return(root); } if (Name.Equals("/")) { RefreshDirectoryContent(session, parent as BaseDirectoryEntry); } if (GoogleDocsResourceHelper.IsResorceId(Name)) { var url = String.Format(GoogleDocsConstants.GoogleDocsResourceUrlFormat, Name.ReplaceFirst("_", "%3a")); var request = CreateWebRequest(session, url, "GET", null); try { var response = (HttpWebResponse)request.GetResponse(); var rs = response.GetResponseStream(); var xml = new StreamReader(rs).ReadToEnd(); var entry = GoogleDocsXmlParser.ParseEntriesXml(session, xml).FirstOrDefault(); if (entry == null) { throw new SharpBoxException(SharpBoxErrorCodes.ErrorFileNotFound); } if (parent != null) { (parent as BaseDirectoryEntry).AddChild(entry); } var dirEntry = entry as BaseDirectoryEntry; if (dirEntry == null) { return(entry); } RefreshDirectoryContent(session, dirEntry); return(dirEntry); } catch (WebException) { throw new SharpBoxException(SharpBoxErrorCodes.ErrorFileNotFound); } } throw new SharpBoxException(SharpBoxErrorCodes.ErrorInvalidFileOrDirectoryName); }
public override ICloudFileSystemEntry CreateResource(IStorageProviderSession session, string name, ICloudDirectoryEntry parent) { if (String.IsNullOrEmpty(name)) { throw new ArgumentException("Name cannot be empty"); } var url = GoogleDocsResourceHelper.IsNoolOrRoot(parent) ? GoogleDocsConstants.GoogleDocsFeedUrl : String.Format(GoogleDocsConstants.GoogleDocsContentsUrlFormat, parent.Id.ReplaceFirst("_", "%3a")); var request = CreateWebRequest(session, url, "POST", null); GoogleDocsXmlParser.WriteAtom(request, GoogleDocsXmlParser.EntryElement(GoogleDocsXmlParser.CategoryElement(), GoogleDocsXmlParser.TitleElement(name))); try { using (var response = (HttpWebResponse)request.GetResponse()) { if (response.StatusCode == HttpStatusCode.Created) { using (var rs = response.GetResponseStream()) using (var streamReader = new StreamReader(rs)) { var xml = streamReader.ReadToEnd(); var entry = GoogleDocsXmlParser.ParseEntriesXml(session, xml).First(); if (parent != null) { (parent as BaseDirectoryEntry).AddChild(entry); } return(entry); } } } } catch (WebException) { throw new SharpBoxException(SharpBoxErrorCodes.ErrorCreateOperationFailed); } return(null); }
public override bool MoveResource(IStorageProviderSession session, ICloudFileSystemEntry fsentry, ICloudDirectoryEntry newParent) { if (fsentry == null || newParent == null || GoogleDocsResourceHelper.IsNoolOrRoot(fsentry)) { return(false); } if (RemoveResource(session, fsentry, RemoveMode.FromParentCollection) && AddToCollection(session, fsentry, newParent)) { if (fsentry.Parent != null) { (fsentry.Parent as BaseDirectoryEntry).RemoveChild(fsentry as BaseFileEntry); } (newParent as BaseDirectoryEntry).AddChild(fsentry as BaseFileEntry); return(true); } return(false); }
public override bool DeleteResource(IStorageProviderSession session, ICloudFileSystemEntry entry) { if (GoogleDocsResourceHelper.IsNoolOrRoot(entry)) { return(false); } if (RemoveResource(session, entry, RemoveMode.Delete)) { (entry as BaseFileEntry).IsDeleted = true; if (entry.Parent != null) { (entry.Parent as BaseDirectoryEntry).RemoveChildById(entry.Id); } return(true); } return(false); }