/// <summary> /// Instantiate the session. /// </summary> /// <param name="client">The client instance to make requests from.</param> /// <param name="data"> /// A key-value pair used to instantiate the object with. Use the following values: /// - Document 'document' The document the session was created for. /// - string 'id' The session ID. /// - string|DateTime 'expiresAt' The date the session was created. /// - object 'urls' A key-value pair of URLs for 'assets', 'realtime', and 'view'. /// </param> public Session(BoxViewClient client, IDictionary <string, object> data) { Client = client; Id = (string)data["id"]; SetValues(data); }
/// <summary> /// Get a list of all documents that meet the provided criteria. /// </summary> /// <param name="client">The client instance to make requests from.</param> /// <param name="limit">The number of documents to return.</param> /// <param name="createdBefore">Upper date limit to filter by.</param> /// <param name="createdAfter">Lower date limit to filter by.</param> /// <returns>An array containing document instances matching the request.</returns> /// <exception cref="BoxViewException"></exception> public static List <Document> Find( BoxViewClient client, int?limit = null, object createdBefore = null, object createdAfter = null) { var getParams = new Dictionary <string, string>(); if (limit != null && limit > 0) { getParams["limit"] = limit.ToString(); } if (createdBefore != null) { getParams["created_before"] = (createdBefore is DateTime) ? Date((DateTime)createdBefore) : Date(createdBefore.ToString()); } if (createdAfter != null) { getParams["created_after"] = (createdAfter is DateTime) ? Date((DateTime)createdAfter) : Date(createdAfter.ToString()); } var response = RequestJson( client: client, path: PATH, getParams: getParams); if (response.Count == 0 || !response.ContainsKey("document_collection") || !((IDictionary <string, object>)response["document_collection"]). ContainsKey("entries")) { Error(INVALID_RESPONSE_ERROR, "response is not in a valid format."); } var collection = (IDictionary <string, object>)response["document_collection"]; var entries = (ArrayList)collection["entries"]; var documents = new List <Document>(); foreach (var entry in entries) { documents.Add(new Document(client, (IDictionary <string, object>)entry)); } return(documents); }
/// <summary> /// Send a new request to the API and return a key-value pair. /// </summary> /// <param name="client">The client instance to make requests from.</param> /// <param name="path">The path to make a request to.</param> /// <param name="getParams">A key-value pair of GET params to be added to the URL.</param> /// <param name="postParams">A key-value pair of POST params to be sent in the body.</param> /// <param name="requestOptions"> /// A key-value pair of request options that may modify the way the request is made. /// </param> /// <returns>The response is pass-thru from Request.</returns> /// <exception cref="BoxViewException"></exception> protected static IDictionary <string, object> RequestJson( BoxViewClient client, string path, IDictionary <string, string> getParams = null, IDictionary <string, string> postParams = null, IDictionary <string, object> requestOptions = null) { return(client.RequestHandler.RequestJson( path: path, getParams: getParams, postParams: postParams, requestOptions: requestOptions)); }
/// <summary> /// Send a new request to the API and return a string. /// </summary> /// <param name="client">The client instance to make requests from.</param> /// <param name="path">The path to make a request to.</param> /// <param name="getParams">A key-value pair of GET params to be added to the URL.</param> /// <param name="postParams">A key-value pair of POST params to be sent in the body.</param> /// <param name="requestOptions"> /// A key-value pair of request options that may modify the way the request is made. /// </param> /// <returns>The response is pass-thru from Request.</returns> /// <exception>BoxViewException</exception> protected static HttpContent RequestHttpContent( BoxViewClient client, string path, IDictionary <string, string> getParams = null, IDictionary <string, string> postParams = null, IDictionary <string, object> requestOptions = null) { requestOptions["rawResponse"] = true; return(client.RequestHandler.RequestHttpContent( path: path, getParams: getParams, postParams: postParams, requestOptions: requestOptions)); }
/// <summary> /// Generic upload function used by the two other upload functions, which are more specific than this one, and /// know how to handle upload by URL and upload from filesystem. /// </summary> /// <param name="client">The client instance to make requests from.</param> /// <param name="options"> /// A key-value pair of options relating to the file upload. Pass-thru from the other upload functions. /// </param> /// <param name="postParams">A key-value pair of POST params to be sent in the body.</param> /// <param name="requestOptions"> /// A key-value pair of request options that may modify the way the request is made. /// </param> /// <returns>A new document instance.</returns> /// <exception cref="BoxViewException"></exception> static Document Upload( BoxViewClient client, IDictionary <string, object> options, IDictionary <string, string> postParams = null, IDictionary <string, object> requestOptions = null) { if (postParams == null) { postParams = new Dictionary <string, string>(); } postParams["name"] = (string)options["name"]; if (options["thumbnails"] != null) { var thumbnails = options["thumbnails"]; if (thumbnails is string[]) { thumbnails = ((string[])thumbnails).ToList(); } if (thumbnails is List <string> ) { thumbnails = ((List <string>)thumbnails).ToArray(); } if (thumbnails is string[]) { thumbnails = String.Join(",", (string[])thumbnails); } postParams["thumbnails"] = (string)thumbnails; } if (options["nonSvg"] != null) { postParams["non_svg"] = (bool)options["nonSvg"] ? "1" : "0"; } var metadata = RequestJson( client: client, path: PATH, postParams: postParams, requestOptions: requestOptions); return(new Document(client, metadata)); }
/// <summary> /// Create a new document instance by ID, and load it with values requested from the API. /// </summary> /// <param name="client">The client instance to make requests from.</param> /// <param name="id">The document ID.</param> /// <returns>A document instance using data from the API.</returns> /// <exception cref="BoxViewException"></exception> public static Document Get(BoxViewClient client, string id) { string[] fields = { "id", "created_at", "name", "status" }; var getParams = new Dictionary <string, string> { { "fields", String.Join(",", fields) } }; var metadata = RequestJson( client: client, path: PATH + "/" + id, getParams: getParams); return(new Document(client, metadata)); }
/// <summary> /// Upload a file by URL and return a new document instance. /// </summary> /// <param name="client">The client instance to make requests from.</param> /// <param name="url">The URL of the file to upload.</param> /// <param name="name">Override the filename of the file being uploaded.</param> /// <param name="thumbnails"> /// An array of dimensions in pixels, with each dimension formatted as [width]x[height], this can also be a /// comma-separated string. /// </param> /// <param name="nonSvg"> /// Create a second version of the file that doesn't use SVG, for users with browsers that don't support SVG? /// </param> /// <returns>A new document instance.</returns> /// <exception cref="BoxViewException"></exception> public static Document Upload( BoxViewClient client, string url, string name = null, object thumbnails = null, bool?nonSvg = null) { return(Upload( client: client, options: new Dictionary <string, object> { { "name", name }, { "thumbnails", thumbnails }, { "nonSvg", nonSvg } }, postParams: new Dictionary <string, string> { { "url", url } })); }
/// <summary> /// Create a session for a specific document by ID that may expire. /// </summary> /// <param name="client">The client instance to make requests from.</param> /// <param name="id">The ID of the file to create a session for.</param> /// <param name="duration">The number of minutes for the session to last.</param> /// <param name="expiresAt">When the session should expire.</param> /// <param name="isDownloadable">Should the user be allowed to download the original file</param> /// <param name="isTextSelectable">Should the user be allowed to select text?</param> /// <returns>A new session instance.</returns> /// <exception cref="BoxViewException"></exception> public static Session Create( BoxViewClient client, string id, int?duration = null, object expiresAt = null, bool?isDownloadable = null, bool?isTextSelectable = null) { var postParams = new Dictionary <string, string>(); postParams["document_id"] = id; if (duration != null && duration > 0) { postParams["duration"] = duration.ToString(); } if (expiresAt != null) { postParams["expires_at"] = (expiresAt is DateTime) ? Date((DateTime)expiresAt) : Date(expiresAt.ToString()); } if (isDownloadable != null) { postParams["is_downloadable"] = isDownloadable.Equals(true) ? "1" : "0"; } if (isTextSelectable != null) { postParams["is_text_selectable"] = isTextSelectable.Equals(true) ? "1" : "0"; } var metadata = RequestJson( client: client, path: PATH, postParams: postParams); return(new Session(client, metadata)); }
/// <summary> /// Upload a local file and return a new document instance. /// </summary> /// <param name="client">The client instance to make requests from.</param> /// <param name="file">The file resource to upload.</param> /// <param name="name">Override the filename of the file being uploaded.</param> /// <param name="thumbnails"> /// An array of dimensions in pixels, with each dimension formatted as [width]x[height], this can also be a /// comma-separated string. /// </param> /// <param name="nonSvg"> /// Create a second version of the file that doesn't use SVG, for users with browsers that don't support SVG? /// </param> /// <returns>A new document instance.</returns> /// <exception cref="BoxViewException"></exception> public static Document Upload( BoxViewClient client, FileStream file, string name = null, object thumbnails = null, bool?nonSvg = null) { return(Upload( client: client, options: new Dictionary <string, object> { { "name", name }, { "thumbnails", thumbnails }, { "nonSvg", nonSvg } }, requestOptions: new Dictionary <string, object> { { "file", file }, { "host", FILE_UPLOAD_HOST } })); }