ShareFile Class
Properties Methods Events Configuration Settings Errors
The ShareFile class makes it easy to upload, download, and manage files, folders, and share links within ShareFile.
Syntax
Remarks
The ShareFile class provides a simple interface for working with ShareFile. Capabilities include uploading and downloading files, strong encryption support, creating folders, moving and copying items, creating request and send links, and more.
Authentication
This class supports authentication via OAuth 2.0. First, perform OAuth authentication using the OAuth class or a separate process. Once complete you should have an authorization string which looks like:
Bearer ya29.AHES6ZSZEJzATdZYjeihDn5W-VrXSsxEZu5p0pclxGdKKQAssign this value to the Authorization property before attempting any operations. Consult the documentation for the service for more information about supported scope values and more details on OAuth authentication.
Referencing and Creating Items, Links, Permissions, and Users
ShareFile typically uses specified ids to reference its objects. When an object is created, through methods such as CreateClient or CreateFolder or uploaded with the UploadFile method; the class will return with the objects ShareFile Id in the form of a string. In certain cases, a path (/parentFolder/ChildFolder) can be used to reference an item.
When a link is created using methods like CreateAndEmailLink , CreateAndEmailRequestLink, CreateLink, or CreateRequestLink then their URL is returned rather than their ShareFile id. To get the newly created id, the class also clears and populates the Links* properties with the new link. When creating a link, you can use the CreateLinkOptions* properties to set certain options for the link.
When a permission is created using the CreatePermission method, the class will not return anything as ShareFile uses a combination of a UserId and the ItemId of a folder to reference permissions. When creating a permission, you can use the CreatePermissionOptions* properties to set certain options for the permission.
Listing and Getting Items, Links, Permissions, and Users
When listing out the Links and Users currently available to the authenticated user you will use the corresponding ListLinks and ListUsers methods. Both of these methods take no parameters and will populates their corresponding properties. For links the properties is the Links* properties and for users it is the Users* properties.
When listing the Items within a Folder or Permissions, the corresponding methods will take a folders ItemId. ListItems will list the items in the folder to the Items* properties. The method will not recursively list out items found in child folders. The ListPermissions method will list all the permissions for the specified folder to the Permissions* properties.
The class can also list out the items associated with a specified link. The ListLinkItems method will take a LinkId and populate Items* properties.
The class also offers the ability to get the specific information about a certain item, link, permission, or user. GetItemInfo, GetLinkInfo and GetUserInfo each take a corresponding id. For permissions, GetPermissionInfo will take a FolderId and UserId rather than a specific id. Once called, they each clear and populate the corresponding properties.
For all list* and get* methods, there is a corresponding event that will fire for each item in the list. The ItemList event will fire when the ListItems, ListLinkItems, or GetItemInfo methods are called; the LinkList event will fire when the ListLinks or GetLinkInfo methods are called; the PermissionList event will fire when the ListPermissions or GetPermissionInfo methods are called; and the UserList event will fire when the ListUsers or GetUserInfo methods are called.
Downloading Files
The DownloadFile method downloads file or folder items.
If LocalFile is set, the file will be saved to the specified location; otherwise, the file data will be held by ItemData.
To download and decrypt an encrypted file, set EncryptionAlgorithm and EncryptionPassword before calling this method.
Download Notes
Simple Download
A simple download is consistent with setting the LocalFile to the destination of the file when it is downloaded and then calling the method with the item's id. For example:
shareFile.LocalFile = "../MyFile.zip"; shareFile.DownloadFile(shareFile.Items[0].Id);
Uploading Files
The UploadFile method uploads new file items.
If LocalFile is set the file will be uploaded from the specified path. If LocalFile is not set the data in ItemData will be used.
To encrypt the file before uploading it, set EncryptionAlgorithm and EncryptionPassword.
Upload Notes
ShareFile offers two ways to upload a file. For smaller files a simple upload option is provided to upload data in one request. This is the default option. For larger files, uploads can be fragmented into multiple pieces, allowing resuming of uploads that may be interrupted.
Simple
By default the class uses the simple upload mechanism.
ShareFile.LocalFile = "../MyFile.zip"; ShareFile.UploadFile("/MyFile.zip");
Resumable
To enable resumable uploads set UseResumableUpload to true. This is recommended for large files. The class will automatically fragment the specified file into smaller pieces and upload each individually.
When UseResumableUpload is set to true and UploadFile is called, a resumable upload session is started by the class. Once called and the class fragments the file, the ResumeURL property is populated. This URL needs to be set so that the class can resume the upload if the upload is interrupted.
During a resumable upload, the FragmentComplete event fires after each fragment is uploaded to indicate overall progress. The class also updates StartByte as necessary to indicate the current offset in the file.
If the upload is interrupted for any reason, resuming it is easy. First, verify that ResumeURL and StartByte are populated (if the same instance of the class is used, they should already be populated, and no special action should be needed). Then call UploadFile again to resume the upload at the specified StartByte offset.
Note that if the upload is not resumed after some time the upload session will expire.
shareFile.UseResumableUpload = true; shareFile.LocalFile = "../MyFile.zip"; shareFile.UploadFile("MyFile.zip"); // The transfer is interrupted and UploadFile() above fails. Later, resume the download. // Using the same instance StartByte and ResumeURL are already populated from the previous // upload attempt. shareFile.UploadFile("MyFile.zip");
Additional Functionality
The ShareFile class offers advanced functionality beyond simple uploads and downloads. For instance:
- Encrypt and decrypt files using the EncryptionAlgorithm and EncryptionPassword properties.
- Basic file and folder manipulation and organization using methods such as CopyItem and MoveItem.
- And more!
Property List
The following is the full list of the properties of the class with short descriptions. Click on the links for further details.
- accountSubdomain | Represent a ShareFile domain for the account. |
- authorization | OAuth 2.0 Authorization Token. |
- createLinkOptionsAccessLevel | The access level for the link. |
- createLinkOptionsCreationDate | The date the link was created. |
- createLinkOptionsExpirationDate | The expiration date for the link. |
- createLinkOptionsId | The id of the link. |
- createLinkOptionsIsViewOnly | If the share items can only be viewed. |
- createLinkOptionsMaxDownloads | The maximum downloads for a link. |
- createLinkOptionsNotifyOnAccess | If the creator is notified when a user accesses the link. |
- createLinkOptionsTitle | The title of the link. |
- createLinkOptionsTotalDownloads | Total number of times the link has been downloaded from. |
- createLinkOptionsType | The link's type. |
- createLinkOptionsURL | The url for the link. |
- createPermissionOptionsCanDelete | If the user can delete the item or from the item. |
- createPermissionOptionsCanDownload | If the user can read file content or download the item or from the item. |
- createPermissionOptionsCanManagePermissions | If the user can configure Access Controls in the item. |
- createPermissionOptionsCanUpload | Whether the user can upload files to the item. |
- createPermissionOptionsCanView | If the user can view items from the item. |
- createPermissionOptionsFolderId | The item id for the folder whose permissions are being defined. |
- createPermissionOptionsIsOwner | If the user is the owner. |
- createPermissionOptionsNotifyOnDownload | If the user is notified when the an item is downloaded from the folder. |
- createPermissionOptionsNotifyOnUpload | If the user is notified when the an item is uploaded to the folder. |
- createPermissionOptionsUserId | The user's ShareFile id. |
- encryptionAlgorithm | The encryption algorithm. |
- encryptionPassword | The encryption password. |
- firewallAutoDetect | This property tells the class whether or not to automatically detect and use firewall system settings, if available. |
- firewallType | This property determines the type of firewall to connect through. |
- firewallHost | This property contains the name or IP address of firewall (optional). |
- firewallPassword | This property contains a password if authentication is to be used when connecting through the firewall. |
- firewallPort | This property contains the TCP port for the firewall Host . |
- firewallUser | This property contains a user name if authentication is to be used connecting through a firewall. |
- idle | The current status of the class. |
- itemData | The data that was downloaded, or that should be uploaded by the class. |
- itemCount | The number of records in the Item arrays. |
- itemCreationDate:(int)itemIndex | The date when the item was created. |
- itemCreatorFirstName:(int)itemIndex | The first name of the creator. |
- itemCreatorLastName:(int)itemIndex | The last name of the creator. |
- itemDescription:(int)itemIndex | The description of the item. |
- itemExpirationDate:(int)itemIndex | The expiration date for the item. |
- itemId:(int)itemIndex | The id of the item. |
- itemName:(int)itemIndex | The name of the item. |
- itemParentId:(int)itemIndex | The id of the parent item. |
- itemPath:(int)itemIndex | The path to the parent folder for an item. |
- itemSize:(int)itemIndex | The size of the item. |
- itemType:(int)itemIndex | The item's type. |
- linkCount | The number of records in the Link arrays. |
- linkAccessLevel:(int)linkIndex | The access level for the link. |
- linkCreationDate:(int)linkIndex | The date the link was created. |
- linkExpirationDate:(int)linkIndex | The expiration date for the link. |
- linkId:(int)linkIndex | The id of the link. |
- linkIsViewOnly:(int)linkIndex | If the share items can only be viewed. |
- linkMaxDownloads:(int)linkIndex | The maximum downloads for a link. |
- linkNotifyOnAccess:(int)linkIndex | If the creator is notified when a user accesses the link. |
- linkTitle:(int)linkIndex | The title of the link. |
- linkTotalDownloads:(int)linkIndex | Total number of times the link has been downloaded from. |
- linkType:(int)linkIndex | The link's type. |
- linkURL:(int)linkIndex | The url for the link. |
- localFile | The location of the local file. |
- localHost | The name of the local host or user-assigned IP interface through which connections are initiated or accepted. |
- otherHeaders | Other headers as determined by the user (optional). |
- overwrite | Whether to overwrite the local or remote file. |
- parsedHeaderCount | The number of records in the ParsedHeader arrays. |
- parsedHeaderField:(int)parsedHeaderIndex | This property contains the name of the HTTP header (same case as it is delivered). |
- parsedHeaderValue:(int)parsedHeaderIndex | This property contains the header contents. |
- permissionCount | The number of records in the Permission arrays. |
- permissionCanDelete:(int)permissionIndex | If the user can delete the item or from the item. |
- permissionCanDownload:(int)permissionIndex | If the user can read file content or download the item or from the item. |
- permissionCanManagePermissions:(int)permissionIndex | If the user can configure Access Controls in the item. |
- permissionCanUpload:(int)permissionIndex | Whether the user can upload files to the item. |
- permissionCanView:(int)permissionIndex | If the user can view items from the item. |
- permissionFolderId:(int)permissionIndex | The item id for the folder whose permissions are being defined. |
- permissionIsOwner:(int)permissionIndex | If the user is the owner. |
- permissionNotifyOnDownload:(int)permissionIndex | If the user is notified when the an item is downloaded from the folder. |
- permissionNotifyOnUpload:(int)permissionIndex | If the user is notified when the an item is uploaded to the folder. |
- permissionUserId:(int)permissionIndex | The user's ShareFile id. |
- proxyAuthScheme | This property is used to tell the class which type of authorization to perform when connecting to the proxy. |
- proxyAutoDetect | This property tells the class whether or not to automatically detect and use proxy system settings, if available. |
- proxyPassword | This property contains a password if authentication is to be used for the proxy. |
- proxyPort | This property contains the TCP port for the proxy Server (default 80). |
- proxyServer | If a proxy Server is given, then the HTTP request is sent to the proxy instead of the server otherwise specified. |
- proxySSL | This property determines when to use SSL for the connection to the proxy. |
- proxyUser | This property contains a user name, if authentication is to be used for the proxy. |
- queryParamCount | The number of records in the QueryParam arrays. |
- queryParamName:(int)queryParamIndex | The name of the query parameter. |
- queryParamValue:(int)queryParamIndex | The value of the query parameter. |
- resumeURL | The resumable upload URL. |
- searchMarker | A marker indicating the number of search results to skip next. |
- SSLAcceptServerCertEncoded | The certificate (PEM/base64 encoded). |
- SSLCertEncoded | The certificate (PEM/base64 encoded). |
- SSLCertStore | The name of the certificate store for the client certificate. |
- SSLCertStorePassword | If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store. |
- SSLCertStoreType | The type of certificate store for this certificate. |
- SSLCertSubject | The subject of the certificate used for client authentication. |
- SSLServerCertEncoded | The certificate (PEM/base64 encoded). |
- startByte | The byte offset from which to start the upload or download. |
- timeout | A timeout for the class. |
- useResumableUpload | Whether to use resumable uploads. |
- userCount | The number of records in the User arrays. |
- userCompany:(int)userIndex | The company of the user. |
- userCreationDate:(int)userIndex | The date the user was created. |
- userEmail:(int)userIndex | The email address of the user. |
- userFirstName:(int)userIndex | The first name of the user. |
- userId:(int)userIndex | The id of the user. |
- userLastName:(int)userIndex | The last name of the user. |
Method List
The following is the full list of the methods of the class with short descriptions. Click on the links for further details.
- addQueryParam | Adds a query parameter to the QueryParams properties. |
- config | Sets or retrieves a configuration setting. |
- copyItem | Copies the specified item into the specified directory. |
- createAndEmailLink | Creates a link for specified items and emails it. |
- createAndEmailRequestLink | Creates a new request link and emails it to the specified emails. |
- createClient | Creates a new client. |
- createFolder | Creates a new folder. |
- createLink | Creates a new link for specified items. |
- createPermission | Create a new Permissions for the specified folder and user. |
- createRequestLink | Creates a new request link. |
- deleteChildItems | Removes multiple items from a parent item. |
- deleteClient | Deletes a client from the user list. |
- deleteItem | Deletes an item permanently. |
- deleteLink | Deletes the link specified by the LinkId. |
- deletePermission | Removes a users permissions for a specific folder. |
- downloadFile | This method downloads the file or the contents of the folder specified by the ItemId. |
- getItemInfo | Gets information about a specific item. |
- getLinkInfo | Gets information about a specific link. |
- getPermissionInfo | Gets information about a specific user's permission for a folder. |
- getUserInfo | Gets information about a specific user. |
- interrupt | Interrupt the current method. |
- listItems | Lists the files and folders within a folder. |
- listLinkItems | Lists the files and folders of a link. |
- listLinks | Lists the request/download links for the currently authenticated user. |
- listPermissions | Lists the permissions of a folder. |
- listUsers | Lists the client users of the authenticated account. |
- moveItem | Moves an item to a different folder. |
- reset | Resets the class to its initial state. |
- search | Reserved for future use. |
- sendCustomRequest | Sends a custom request to the ShareFile API. |
- updateClient | Updates a client's information. |
- updateItemInfo | Updates an item with new information. |
- updateLink | Updates a request or download link. |
- updatePermission | Updates the permission from the Permission* properties. |
- uploadFile | Will upload a file to a folder. |
Event List
The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.
- onEndTransfer | Fired when a document finishes transferring. |
- onError | Information about errors during data delivery. |
- onFragmentComplete | Fires after each fragment of a resumable upload is completed. |
- onHeader | Fired every time a header line comes in. |
- onItemList | This event fires once for each item returned when either ListItems , ListLinkItems or GetItemInfo is called. |
- onLinkList | This event fires once for each link returned when ListLinks or GetLinkInfo is called. |
- onLog | Fires once for each log message. |
- onPermissionList | This event fires once for each permission returned when ListPermissions or GetPermissionInfo is called. |
- onProgress | Fires during an upload or download to indicate transfer progress. |
- onSSLServerAuthentication | Fired after the server presents its certificate to the client. |
- onSSLStatus | Shows the progress of the secure connection. |
- onStartTransfer | Fired when a document starts transferring (after the headers). |
- onTransfer | Fired while a document transfers (delivers document). |
- onUserList | This event fires once for each user returned when ListUsers or GetUserInfo is called. |
Configuration Settings
The following is a list of configuration settings for the class with short descriptions. Click on the links for further details.
AccumulatePages | Whether the class should accumulate subsequent pages of results when listing them. |
CreatePermissionNotify | Whether to notify users of the permission they granted. |
CreatePermissionNotifyMessage | The custom notify message used in permission notification email. |
DeleteChildItemsPermanently | Whether ChildItems should be deleted permanently. |
DeleteUserCompletely | Whether to delete user completely. |
ForceSync | Whether ShareFile will block the operation from taking place asynchronously. |
IncludeDeletedItems | Whether deleted items should be include in the results. |
IncludeExpiredLinks | Whether expired links should be include in the results. |
ListUsersType | The type used to list users. |
RawRequest | Returns the data that was sent to the server. |
RawResponse | Returns the data that was received from the server. |
SearchPageSize | Limits the number of search results. |
XChildCount | The number of child elements of the current element. |
XChildName[i] | The name of the child element. |
XChildXText[i] | The inner text of the child element. |
XElement | The name of the current element. |
XParent | The parent of the current element. |
XPath | Provides a way to point to a specific element in the returned XML or JSON response. |
XSubTree | A snapshot of the current element in the document. |
XText | The text of the current element. |
AcceptEncoding | Used to tell the server which types of content encodings the client supports. |
AllowHTTPCompression | This property enables HTTP compression for receiving data. |
AllowHTTPFallback | Whether HTTP/2 connections are permitted to fallback to HTTP/1.1. |
Append | Whether to append data to LocalFile. |
Authorization | The Authorization string to be sent to the server. |
BytesTransferred | Contains the number of bytes transferred in the response data. |
ChunkSize | Specifies the chunk size in bytes when using chunked encoding. |
CompressHTTPRequest | Set to true to compress the body of a PUT or POST request. |
EncodeURL | If set to true the URL will be encoded by the class. |
FollowRedirects | Determines what happens when the server issues a redirect. |
GetOn302Redirect | If set to true the class will perform a GET on the new location. |
HTTP2HeadersWithoutIndexing | HTTP2 headers that should not update the dynamic header table with incremental indexing. |
HTTPVersion | The version of HTTP used by the class. |
IfModifiedSince | A date determining the maximum age of the desired document. |
KeepAlive | Determines whether the HTTP connection is closed after completion of the request. |
KerberosSPN | The Service Principal Name for the Kerberos Domain Controller. |
LogLevel | The level of detail that is logged. |
MaxRedirectAttempts | Limits the number of redirects that are followed in a request. |
NegotiatedHTTPVersion | The negotiated HTTP version. |
OtherHeaders | Other headers as determined by the user (optional). |
ProxyAuthorization | The authorization string to be sent to the proxy server. |
ProxyAuthScheme | The authorization scheme to be used for the proxy. |
ProxyPassword | A password if authentication is to be used for the proxy. |
ProxyPort | Port for the proxy server (default 80). |
ProxyServer | Name or IP address of a proxy server (optional). |
ProxyUser | A user name if authentication is to be used for the proxy. |
SentHeaders | The full set of headers as sent by the client. |
StatusLine | The first line of the last response from the server. |
TransferredData | The contents of the last response from the server. |
TransferredDataLimit | The maximum number of incoming bytes to be stored by the class. |
TransferredHeaders | The full set of headers as received from the server. |
TransferredRequest | The full request as sent by the client. |
UseChunkedEncoding | Enables or Disables HTTP chunked encoding for transfers. |
UseIDNs | Whether to encode hostnames to internationalized domain names. |
UsePlatformHTTPClient | Whether or not to use the platform HTTP client. |
UserAgent | Information about the user agent (browser). |
ConnectionTimeout | Sets a separate timeout value for establishing a connection. |
FirewallAutoDetect | Tells the class whether or not to automatically detect and use firewall system settings, if available. |
FirewallHost | Name or IP address of firewall (optional). |
FirewallPassword | Password to be used if authentication is to be used when connecting through the firewall. |
FirewallPort | The TCP port for the FirewallHost;. |
FirewallType | Determines the type of firewall to connect through. |
FirewallUser | A user name if authentication is to be used connecting through a firewall. |
KeepAliveInterval | The retry interval, in milliseconds, to be used when a TCP keep-alive packet is sent and no response is received. |
KeepAliveTime | The inactivity time in milliseconds before a TCP keep-alive packet is sent. |
Linger | When set to True, connections are terminated gracefully. |
LingerTime | Time in seconds to have the connection linger. |
LocalHost | The name of the local host through which connections are initiated or accepted. |
LocalPort | The port in the local host where the class binds. |
MaxLineLength | The maximum amount of data to accumulate when no EOL is found. |
MaxTransferRate | The transfer rate limit in bytes per second. |
ProxyExceptionsList | A semicolon separated list of hosts and IPs to bypass when using a proxy. |
TCPKeepAlive | Determines whether or not the keep alive socket option is enabled. |
TcpNoDelay | Whether or not to delay when sending packets. |
UseIPv6 | Whether to use IPv6. |
LogSSLPackets | Controls whether SSL packets are logged when using the internal security API. |
OpenSSLCADir | The path to a directory containing CA certificates. |
OpenSSLCAFile | Name of the file containing the list of CA's trusted by your application. |
OpenSSLCipherList | A string that controls the ciphers to be used by SSL. |
OpenSSLPrngSeedData | The data to seed the pseudo random number generator (PRNG). |
ReuseSSLSession | Determines if the SSL session is reused. |
SSLCACertFilePaths | The paths to CA certificate files on Unix/Linux. |
SSLCACerts | A newline separated list of CA certificate to use during SSL client authentication. |
SSLCheckCRL | Whether to check the Certificate Revocation List for the server certificate. |
SSLCipherStrength | The minimum cipher strength used for bulk encryption. |
SSLEnabledCipherSuites | The cipher suite to be used in an SSL negotiation. |
SSLEnabledProtocols | Used to enable/disable the supported security protocols. |
SSLEnableRenegotiation | Whether the renegotiation_info SSL extension is supported. |
SSLIncludeCertChain | Whether the entire certificate chain is included in the SSLServerAuthentication event. |
SSLNegotiatedCipher | Returns the negotiated ciphersuite. |
SSLNegotiatedCipherStrength | Returns the negotiated ciphersuite strength. |
SSLNegotiatedCipherSuite | Returns the negotiated ciphersuite. |
SSLNegotiatedKeyExchange | Returns the negotiated key exchange algorithm. |
SSLNegotiatedKeyExchangeStrength | Returns the negotiated key exchange algorithm strength. |
SSLNegotiatedVersion | Returns the negotiated protocol version. |
SSLProvider | The name of the security provider to use. |
SSLSecurityFlags | Flags that control certificate verification. |
SSLServerCACerts | A newline separated list of CA certificate to use during SSL server certificate validation. |
TLS12SignatureAlgorithms | Defines the allowed TLS 1.2 signature algorithms when UseInternalSecurityAPI is True. |
TLS12SupportedGroups | The supported groups for ECC. |
TLS13KeyShareGroups | The groups for which to pregenerate key shares. |
TLS13SignatureAlgorithms | The allowed certificate signature algorithms. |
TLS13SupportedGroups | The supported groups for (EC)DHE key exchange. |
AbsoluteTimeout | Determines whether timeouts are inactivity timeouts or absolute timeouts. |
FirewallData | Used to send extra data to the firewall. |
InBufferSize | The size in bytes of the incoming queue of the socket. |
OutBufferSize | The size in bytes of the outgoing queue of the socket. |
BuildInfo | Information about the product's build. |
CodePage | The system code page used for Unicode to Multibyte translations. |
LicenseInfo | Information about the current license. |
ProcessIdleEvents | Whether the class uses its internal event loop to process events when the main thread is idle. |
SelectWaitMillis | The length of time in milliseconds the class will wait when DoEvents is called if there are no events to process. |
UseInternalSecurityAPI | Tells the class whether or not to use the system security libraries or an internal implementation. |