public void Given_AppConfig_ConnectionString_ShouldReturn_Result() { var settings = new StorageAccountSettings(); settings.ConnectionString.Should().StartWithEquivalent("use"); settings.ConnectionString.Should().EndWithEquivalent("true"); }
public SetContainerMetadataRequest(StorageAccountSettings settings, string containerName, Dictionary <string, string> metadata, string lease = null) : base(settings) { _containerName = containerName; _metadata = metadata; _lease = lease; }
/// <summary> /// BlockBlob Type /// </summary> public PutBlockListRequest(StorageAccountSettings settings, string containerName, string blobName, BlockListBlockIdList data, string cacheControl = null, string contentType = null, string contentEncoding = null, string contentLanguage = null, string blobContentMD5 = null, Dictionary <string, string> metadata = null, string leaseId = null) : base(settings) { if (!string.IsNullOrEmpty(leaseId)) { Guard.ArgumentIsAGuid("leaseId", leaseId); } if (metadata != null) { IdentifierValidation.EnsureNamesAreValidIdentifiers(metadata.Keys); } var dataAndHash = data.AsXmlByteArrayWithMd5Hash(); _data = dataAndHash.XmlBytes; _requestContentMD5 = dataAndHash.MD5Hash; _containerName = containerName; _blobName = blobName; _contentType = contentType; _contentEncoding = contentEncoding; _contentLanguage = contentLanguage; _blobContentMD5 = blobContentMD5; _cacheControl = cacheControl; _metadata = metadata; _leaseId = leaseId; }
public static string GenerateSharedKeySignatureStringForTableService(WebRequest request, Dictionary<string, string> queryStringParameters, StorageAccountSettings settings) { var queryStrings = queryStringParameters.OrderBy(kvp => kvp.Key) .Select(kvp => kvp.Key + ":" + kvp.Value); string canonicalizedResource = "/" + settings.AccountName + String.Join("", request.RequestUri.Segments); canonicalizedResource = canonicalizedResource.TrimEnd(new char[] { '\n' }); // Shared Key string stringToSign = String.Format( /* Method */ "{0}\n" + /* Content-MD5 */ "{1}\n" + /* Content-Type */ "{2}\n" + /* Date */ "{3}\n" + /* Canonicalized Resource */ "{4}", request.Method, request.Headers[ProtocolConstants.Headers.ContentMD5], request.ContentType, request.Headers[ProtocolConstants.Headers.Date], canonicalizedResource); return settings.ComputeMacSha256(stringToSign); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { var storageAccount = Configuration["Blob_StorageAccount"]; var storageKey = Configuration["Blob_StorageKey"]; var containerName = Configuration["Blob_ContainerName"]; var _settings = new StorageAccountSettings(storageAccount, storageKey, containerName); services.AddTransient <StorageAccountSettings>(provider => { return(_settings); }); services.AddTransient <IAzureBlobStorage, AzureBlobStorage>(); services.AddTransient(typeof(IAzureTableStorage <>), typeof(AzureTableStorage <>)); services.AddTransient <IUserService, UserService>((ctx) => { IAzureTableStorage <User> svc = ctx.GetService <IAzureTableStorage <User> >(); return(new UserService(svc)); }); services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(options => { options.LoginPath = "/Login/Fail"; }); services.AddMvc(); }
private PutBlobRequest(StorageAccountSettings settings, string containerName, string blobName, BlobType blobType, string contentType = null, string contentEncoding = null, string contentLanguage = null, string contentMD5 = null, string cacheControl = null, Dictionary <string, string> metadata = null, string leaseId = null) : base(settings) { if (!string.IsNullOrEmpty(leaseId)) { Guard.ArgumentIsAGuid("leaseId", leaseId); } if (null != metadata) { IdentifierValidation.EnsureNamesAreValidIdentifiers(metadata.Keys); } _containerName = containerName; _blobName = blobName; _blobType = blobType; _contentType = contentType; _contentEncoding = contentEncoding; _contentLanguage = contentLanguage; _contentMD5 = contentMD5; _cacheControl = cacheControl; _metadata = metadata; _leaseId = leaseId; }
public SetQueueServicePropertiesRequest(StorageAccountSettings settings, StorageServiceProperties properties) : base(settings) { _properties = properties; _content = PrepareContent(properties); }
public async static Task <byte[]> RetrieveOriginalImageFromObjectStorageAsync(ImageInformation image) { StorageAccountSettings storageAccountSettings = Common.CurrentStorageAccountSettings; CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageAccountSettings.ConnectionString); CloudBlobClient client = storageAccount.CreateCloudBlobClient(); CloudBlobContainer container = client.GetContainerReference(storageAccountSettings.UploadsContainerName); CloudBlockBlob blob = null; byte[] originalImageBytes = null; bool blobExists = false; try { blob = container.GetBlockBlobReference(image.FileName); blobExists = await blob.ExistsAsync(); if (blobExists) { originalImageBytes = new byte[blob.StreamWriteSizeInBytes]; await blob.DownloadToByteArrayAsync(originalImageBytes, 0); } } catch (Exception ex) { } return(originalImageBytes); }
public ListQueuesRequest(StorageAccountSettings settings, string prefix = "", int maxResults = 5000, string marker = null, bool includeMetadata = false) : base(settings) { _prefix = prefix; _maxResults = maxResults; _marker = marker; _includeMetadata = includeMetadata; }
public DeleteMessageRequest(StorageAccountSettings settings, string queueName, string messageId, string popReceipt) : base(settings) { //TODO: add Guard statements against invalid values, short circuit so we don't have the latency roundtrip to the server _queueName = queueName; _messageId = messageId; _popReceipt = popReceipt; }
public AzureTableStorage(StorageAccountSettings settings, string tableName = null) { this.settings = settings; if (!string.IsNullOrEmpty(tableName)) { SetTableName(tableName).Wait(); } }
public void Parse_UseDevelopmentStorage_ReturnsLocalEmulatorSettings() { string connectionString = "UseDevelopmentStorage=true"; var result = StorageAccountSettings.Parse(connectionString); Assert.IsInstanceOf <LocalEmulatorAccountSettings>(result); }
public CreateTableRequest(StorageAccountSettings settings, string tableName, MetadataPreference?metadataPreference = null) : base(settings) { _tableName = tableName; // emulator prior to 2.2.1 preview does not support json _content = UTF8Encoding.UTF8.GetBytes(GetAtomContent(_tableName)); _metadataPreference = metadataPreference; }
public void Parse_UseDevelopmentCredentials_ReturnsLocalEmulatorSettings() { string connectionString = "AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;"; var result = StorageAccountSettings.Parse(connectionString); Assert.IsInstanceOf <LocalEmulatorAccountSettings>(result); }
public RequestWithEmptyPayload(StorageAccountSettings settings, string uri, string httpMethod) : base(settings) { TestRequestUri = uri; TestHttpMethod = httpMethod; // use a faster retry policy with the same strategy as the real one RetryPolicy = new RetryPolicy <ExceptionRetryStrategy>(3, TimeSpan.FromMilliseconds(1)); }
/// <summary> /// PageBlob Type /// </summary> public PutBlobRequest(StorageAccountSettings settings, string containerName, string blobName, int pageContentLength, string contentType = null, string contentEncoding = null, string contentLanguage = null, string contentMD5 = null, string cacheControl = null, Dictionary <string, string> metadata = null, long sequenceNumber = 0, string leaseId = null) : this(settings, containerName, blobName, BlobType.Page, contentType, contentEncoding, contentLanguage, contentMD5, cacheControl, metadata, leaseId) { _pageContentLength = pageContentLength; _sequenceNumber = sequenceNumber; }
public SetContainerACLRequest(StorageAccountSettings settings, string containerName, ContainerAccessType containerAccess, List <BlobSignedIdentifier> signedIdentifiers, string leaseId = null) : base(settings) { _containerName = containerName; _containerAccess = containerAccess; _content = PrepareContent(signedIdentifiers ?? new List <BlobSignedIdentifier>()); _leaseId = leaseId; }
public static async void Run([BlobTrigger("teste/{name}", Connection = "AzureWebJobsStorage")] Stream myBlob, string name, [Queue("toprocess", Connection = "AzureWebJobsStorage")] ICollector <Document> queueCollector, TraceWriter log) { var storageAccount = "cosmoshoroscopob34c"; var storageKey = "ortdcoPVj90rv0GyPGDzMN/jN+5K0izumxFbIqvRM6MiDcXQwcNLSJomGeDQE3RdfhowIyH9MQw856fikwiIrw=="; var containerName = "teste"; var settings = new StorageAccountSettings(storageAccount, storageKey, containerName); IDocumentService documentService = null; if (name.StartsWith("uploads")) { try { var sheetService = new SheetProcessService(queueCollector, documentService, log); await sheetService.ProcessSheet(myBlob); } catch (Exception e) { log.Error($"Ocorreu um erro: {e}"); } log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes"); } else if (name.StartsWith("docs")) { try { var tableName = "document"; var azureTableStorage = new AzureTableStorage <Document>(settings, tableName); //Is necessary create new byte array here, because has timeout and //we can't edite the word file after byte[] b; using (BinaryReader br = new BinaryReader(myBlob)) b = br.ReadBytes((int)myBlob.Length); var pk = ClearFileName(name); var result = await azureTableStorage.Retrieve(""); var docData = result.FirstOrDefault(); if (docData?.Status == "Aguardando processamento") { docData.Status = "Processando"; await azureTableStorage.Insert(docData); var docService = new DocProcessService(settings, documentService, log); await docService.Process(b, docData, name); } } catch (Exception ex) { log.Error($"Erro ao receber docx: {ex}"); } } }
public void Parse_UseNonDevelopmentCredentials_ReturnsNormalSettings() { string connectionString = "AccountName=some-account-name;AccountKey=some-account-key;"; var result = StorageAccountSettings.Parse(connectionString); Assert.IsInstanceOf <StorageAccountSettings>(result); Assert.IsNotInstanceOf <LocalEmulatorAccountSettings>(result); }
public LeaseContainerRenewRequest(StorageAccountSettings settings, string containerName, string leaseId) : base(settings) { Guard.ArgumentIsNotNullOrEmpty("containerName", containerName); Guard.ArgumentIsAGuid("leaseId", leaseId); _containerName = containerName; _leaseId = leaseId; }
/// <summary> /// BlockBlob Type /// </summary> public PutBlobRequest(StorageAccountSettings settings, string containerName, string blobName, byte[] data, string contentType = null, string contentEncoding = null, string contentLanguage = null, string contentMD5 = null, string cacheControl = null, Dictionary <string, string> metadata = null, string leaseId = null) : this(settings, containerName, blobName, BlobType.Block, contentType, contentEncoding, contentLanguage, contentMD5, cacheControl, metadata, leaseId) { Guard.ArgumentArrayLengthIsEqualOrSmallerThanSize("data", data, BlobServiceConstants.MaxSingleBlobUploadSize); _data = data; }
public void Parse_HttpsSpecified_UsesHttps() { string connectionString = "AccountName=some-account-name;AccountKey=some-account-key;"; var result = StorageAccountSettings.Parse(connectionString); Assert.IsTrue(result.BlobEndpoint.StartsWith("https://"), "BlobEndpoint should start with https"); Assert.IsTrue(result.QueueEndpoint.StartsWith("https://"), "QueueEndpoint should start with https"); Assert.IsTrue(result.TableEndpoint.StartsWith("https://"), "TableEndpoint should start with https"); }
public void Parse_UseDevelopmentStorageWithproxy_SettingsIncludeProxy() { string connectionString = "UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://PROXY-HERE"; var result = StorageAccountSettings.Parse(connectionString); Assert.AreEqual("http://PROXY-HERE:10000/devstoreaccount1", result.BlobEndpoint); Assert.AreEqual("http://PROXY-HERE:10001/devstoreaccount1", result.QueueEndpoint); Assert.AreEqual("http://PROXY-HERE:10002/devstoreaccount1", result.TableEndpoint); }
public PeekMessagesRequest(StorageAccountSettings settings, string queueName, int numOfMessages = 1, int?messageTtl = null) : base(settings) { //TODO: add Guard statements against invalid values, short circuit so we don't have the latency roundtrip to the server _queueName = queueName; _numOfMessages = numOfMessages; _messageTtl = messageTtl; }
public ListBlobsRequest(StorageAccountSettings settings, string containerName, string prefix = "", string delimiter = "", string marker = "", int maxResults = 5000, ListBlobsInclude?include = null) : base(settings) { _containerName = containerName; _prefix = prefix; _delimiter = delimiter; _marker = marker; _maxResults = maxResults; _include = include; }
public PutMessageRequest(StorageAccountSettings settings, string queueName, string messageData, int?visibilityTimeout = null, int?messageTtl = null) : base(settings) { //TODO: add Guard statements against invalid values, short circuit so we don't have the latency roundtrip to the server _queueName = queueName; _messageData = messageData; _visibilityTimeout = visibilityTimeout; _messageTtl = messageTtl; }
/// <param name="leaseDurationTimeInSeconds">-1 for infinite, otherwise 15 to 60 seconds is allowed</param> public LeaseContainerChangeRequest(StorageAccountSettings settings, string containerName, string currentLeaseId, string proposedLeaseId) : base(settings) { Guard.ArgumentIsNotNullOrEmpty("containerName", containerName); Guard.ArgumentIsAGuid("currentLeaseId", currentLeaseId); Guard.ArgumentIsAGuid("proposedLeaseId", proposedLeaseId); _containerName = containerName; _currentLeaseId = currentLeaseId; _proposedLeaseId = proposedLeaseId; }
public CreateQueueRequest(StorageAccountSettings settings, string queueName, Dictionary <string, string> metadata = null) : base(settings) { _queueName = queueName; _metadata = metadata; if (_metadata != null) { IdentifierValidation.EnsureNamesAreValidIdentifiers(_metadata.Select(kvp => kvp.Key)); } }
public void Parse_EndointSuffixSupplied_UsesProvidedSuffixForAllAddresses() { string expectedSuffix = "core.expected.address"; string connectionString = String.Format("AccountName=some-account-name;AccountKey=some-account-key;EndpointSuffix={0}", expectedSuffix); var result = StorageAccountSettings.Parse(connectionString); Assert.IsTrue(result.BlobEndpoint.EndsWith(expectedSuffix), String.Format("Expected suffix of '{0} but actual value was {1}", expectedSuffix, result.BlobEndpoint)); Assert.IsTrue(result.QueueEndpoint.EndsWith(expectedSuffix), String.Format("Expected suffix of '{0} but actual value was {1}", expectedSuffix, result.QueueEndpoint)); Assert.IsTrue(result.TableEndpoint.EndsWith(expectedSuffix), String.Format("Expected suffix of '{0} but actual value was {1}", expectedSuffix, result.TableEndpoint)); }
public LeaseContainerBreakRequest(StorageAccountSettings settings, string containerName, string leaseId, int leaseBreakPeriod) : base(settings) { Guard.ArgumentIsNotNullOrEmpty("containerName", containerName); Guard.ArgumentIsAGuid("leaseId", leaseId); Guard.ArgumentInRanges <int>("leaseBreakPeriod", leaseBreakPeriod, new GuardRange <int>(0, 60)); _containerName = containerName; _leaseId = leaseId; _leaseBreakPeriod = leaseBreakPeriod; }
private void RegisterServices(IServiceCollection services) { var storageAccount = "cosmoshoroscopob34c"; var storageKey = "ortdcoPVj90rv0GyPGDzMN/jN+5K0izumxFbIqvRM6MiDcXQwcNLSJomGeDQE3RdfhowIyH9MQw856fikwiIrw=="; var containerName = "teste"; var settings = new StorageAccountSettings(storageAccount, storageKey, containerName); services.AddTransient <StorageAccountSettings>(provider => { return(settings); }); services.AddTransient <ISheetReader, SheetProcess>(); }
public static string GenerateSharedKeySignatureString(WebRequest request, Dictionary<string,string> queryStringParameters, StorageAccountSettings settings) { var canonicalizedHeaders = request.Headers.AllKeys .Where(k => k.StartsWith("x-ms-")) .OrderBy(k => k.ToLower()) .Select(k => k.ToLower() + ":" + request.Headers[k].Replace('\r',' ').Replace('\n',' ').TrimStart()); var queryStrings = queryStringParameters.OrderBy(kvp => kvp.Key) .Select(kvp => kvp.Key + ":" + kvp.Value); string canonicalizedResource = "/" + settings.AccountName + String.Join("", request.RequestUri.Segments) + "\n" + String.Join("\n", queryStrings); canonicalizedResource = canonicalizedResource.TrimEnd(new char[] { '\n' }); string contentLength = ""; if (request.Method == "POST" || request.Method == "PUT" || request.Method == "DELETE") contentLength = request.ContentLength.ToString(); string stringToSign = String.Format( /* Method */ "{0}\n" /* Content-Encoding */ + "{1}\n" /* Content-Language */ + "{2}\n" /* Content-Length */ + "{3}\n" /* Content-MD5 */ + "{4}\n" /* Content-Type */ + "{5}\n" /* Date */ + "{6}\n" /* If-Modified-Since */ + "{7}\n" /* If-Match */ + "{8}\n" /* If-None-Match */ + "{9}\n" /* If-Unmodified-Since */ + "{10}\n" /* Range */ + "{11}\n" /* Canonicalized Headers */ + "{12}\n" /* Canonicalilzed Resource */ + "{13}", request.Method, request.Headers[ProtocolConstants.Headers.ContentEncoding], request.Headers[ProtocolConstants.Headers.ContentLanguage], contentLength, request.Headers[ProtocolConstants.Headers.ContentMD5], request.ContentType, "", "", "", "", "", "", String.Join("\n", canonicalizedHeaders), canonicalizedResource); return settings.ComputeMacSha256(stringToSign); }
public void SetupFixture() { _settings = new SettingsFake(); WebRequest.RegisterPrefix("test", TestableWebRequestCreateFactory.GetFactory()); }
public void Parse_TableEndpointSpecified_OverridesDefaultValueForTableStorage() { string expectedEndpoint = "http://expected.endpoint.here"; string connectionString = String.Format("AccountName=some-account-name;AccountKey=some-account-key;TableEndpoint={0}", expectedEndpoint); var result = StorageAccountSettings.Parse(connectionString); var defaultStorageSettings = new StorageAccountSettings("some-account-name", "", true); Assert.AreEqual(defaultStorageSettings.BlobEndpoint, result.BlobEndpoint); Assert.AreEqual(defaultStorageSettings.QueueEndpoint, result.QueueEndpoint); Assert.AreEqual(expectedEndpoint, result.TableEndpoint); }
public BlobServiceClientEx(StorageAccountSettings account, int maxSingleBlobUploadSize = BlobServiceConstants.MaxSingleBlobUploadSize) : base(account) { _maxSingleBlobUploadSize = maxSingleBlobUploadSize; }