/// <summary>
			/// Constructs an S3 resource.
			/// </summary>
			/// <param name="service">The <see cref="S3ContentResourceService"/>.</param>
			/// <param name="metadata">The <see cref="GetObjectMetadataResponse"/> describing the data.</param>
			/// <param name="path">The <see cref="IResourcePath"/> of the resource.</param>
			public S3Resource(S3ContentResourceService service, GetObjectMetadataResponse metadata, IResourcePath path)
			{
				// validate arguments
				if (service == null)
					throw new ArgumentNullException("service");
				if (path == null)
					throw new ArgumentNullException("path");

				// set values
				this.service = service;
				this.metadata = metadata;
				this.path = path;
			}
				/// <summary>
				/// Constructs a <see cref="FileResource.FileInputPipe"/>.
				/// </summary>
				/// <param name="service">The <see cref="S3ContentResourceService"/>.</param>
				/// <param name="path">The <see cref="IResourcePath"/>.</param>
				public S3OutputPipe(S3ContentResourceService service, IResourcePath path)
				{
					// validate arguments
					if (service == null)
						throw new ArgumentNullException("service");
					if (path == null)
						throw new ArgumentNullException("path");

					// set values
					this.service = service;
					this.path = path;
					stream = new MemoryStream();
					writer = new StreamWriter(stream);
				}