public void SetUp() { Dictionary<string, string> metadata = new Dictionary<string, string> { {Constants.META_KEY1, Constants.META_VALUE1}, {Constants.META_KEY2, Constants.META_VALUE2} }; storageItem = new StorageItem(Constants.STORAGE_OBJECT_FILE_NAME, metadata, "text/plain", 0, new DateTime()); }
/// <summary> /// An alternate method for downloading storage objects. This one allows specification of special HTTP 1.1 compliant GET headers /// </summary> /// <example> /// <code> /// UserCredentials userCredentials = new UserCredentials("username", "api key"); /// IConnection connection = new Connection(userCredentials); /// Dictionary{RequestHeaderFields, string} requestHeaderFields = Dictionary{RequestHeaderFields, string}(); /// string dummy_etag = "5c66108b7543c6f16145e25df9849f7f"; /// requestHeaderFields.Add(RequestHeaderFields.IfMatch, dummy_etag); /// requestHeaderFields.Add(RequestHeaderFields.IfNoneMatch, dummy_etag); /// requestHeaderFields.Add(RequestHeaderFields.IfModifiedSince, DateTime.Now.AddDays(6).ToString()); /// requestHeaderFields.Add(RequestHeaderFields.IfUnmodifiedSince, DateTime.Now.AddDays(-6).ToString()); /// requestHeaderFields.Add(RequestHeaderFields.Range, "0-5"); /// StorageItem storageItem = connection.GetStorageItem("container name", "RemoteStorageItem.txt", requestHeaderFields); /// </code> /// </example> /// <param name="containerName">The name of the container that contains the storage object</param> /// <param name="storageItemName">The name of the storage object</param> /// <param name="requestHeaderFields">A dictionary containing the special headers and their values</param> /// <returns>An instance of StorageItem with the stream containing the bytes representing the desired storage object</returns> /// <exception cref="ArgumentNullException">Thrown when any of the reference parameters are null</exception> public StorageItem GetStorageItem(string containerName, string storageItemName, Dictionary<RequestHeaderFields, string> requestHeaderFields) { if (string.IsNullOrEmpty(containerName) || string.IsNullOrEmpty(storageItemName)) throw new ArgumentNullException(); Log.Info(this, "Getting storage item " + storageItemName + " with request Header fields in container '" + containerName + "' for user " + _usercreds.Username); try { var getStorageItem = new GetStorageItem(StorageUrl, containerName, storageItemName, requestHeaderFields); var getStorageItemResponse = _requestfactory.Submit(getStorageItem, AuthToken, _usercreds.ProxyCredentials); var metadata = GetMetadata(getStorageItemResponse); var storageItem = new StorageItem(storageItemName, metadata, getStorageItemResponse.ContentType, getStorageItemResponse.GetResponseStream(), getStorageItemResponse.ContentLength, getStorageItemResponse.LastModified); // getStorageItemResponse.Dispose(); return storageItem; } catch (WebException we) { Log.Error(this, "Error getting storage item " + storageItemName + " with request Header fields in container '" + containerName + "' for user " + _usercreds.Username, we); var response = (HttpWebResponse)we.Response; response.Close(); if (response.StatusCode == HttpStatusCode.NotFound) throw new StorageItemNotFoundException("The requested storage object does not exist"); throw; } }
private StorageItem getStorageItem(string containerName, string storageItemName, Dictionary<RequestHeaderFields, string> requestHeaderFields) { var getStorageItem = new GetStorageItem(StorageUrl, containerName, storageItemName, requestHeaderFields); var getStorageItemResponse = _requestfactory.Submit(getStorageItem, AuthToken, _usercreds.ProxyCredentials); var metadata = GetMetadata(getStorageItemResponse); var storageItem = new StorageItem(storageItemName, metadata, getStorageItemResponse.ContentType, getStorageItemResponse.GetResponseStream(), getStorageItemResponse.ContentLength, getStorageItemResponse.LastModified); // getStorageItemResponse.Dispose(); return storageItem; }