Skip to content

Commit 7cdf784

Browse files
committed
Blob binding ReadWrite support
1 parent 396b58e commit 7cdf784

14 files changed

+104
-13
lines changed

src/WebJobs.Script/Binding/ApiHubBinding.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public ApiHubBinding(ScriptHostConfiguration config, ApiHubBindingMetadata apiHu
3737

3838
public string Path { get; private set; }
3939

40-
public override Collection<CustomAttributeBuilder> GetCustomAttributes()
40+
public override Collection<CustomAttributeBuilder> GetCustomAttributes(Type parameterType)
4141
{
4242
Collection<CustomAttributeBuilder> attributes = new Collection<CustomAttributeBuilder>();
4343

src/WebJobs.Script/Binding/BlobBinding.cs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using Microsoft.Azure.WebJobs.Host.Bindings.Path;
1010
using Microsoft.Azure.WebJobs.Host.Bindings.Runtime;
1111
using Microsoft.Azure.WebJobs.Script.Description;
12+
using Microsoft.WindowsAzure.Storage.Blob;
1213

1314
namespace Microsoft.Azure.WebJobs.Script.Binding
1415
{
@@ -53,12 +54,14 @@ public override async Task BindAsync(BindingContext context)
5354
await BindStreamAsync(context.Value, Access, context.Binder, runtimeContext);
5455
}
5556

56-
public override Collection<CustomAttributeBuilder> GetCustomAttributes()
57+
public override Collection<CustomAttributeBuilder> GetCustomAttributes(Type parameterType)
5758
{
5859
Collection<CustomAttributeBuilder> attributes = new Collection<CustomAttributeBuilder>();
5960

61+
FileAccess access = GetAttributeAccess(parameterType);
62+
6063
var constructorTypes = new Type[] { typeof(string), typeof(FileAccess) };
61-
var constructorArguments = new object[] { Path, Access };
64+
var constructorArguments = new object[] { Path, access };
6265
var attribute = new CustomAttributeBuilder(typeof(BlobAttribute).GetConstructor(constructorTypes), constructorArguments);
6366

6467
attributes.Add(attribute);
@@ -70,5 +73,18 @@ public override Collection<CustomAttributeBuilder> GetCustomAttributes()
7073

7174
return attributes;
7275
}
76+
77+
private FileAccess GetAttributeAccess(Type parameterType)
78+
{
79+
// The types bellow only support Read/Write access.
80+
// When using them we ignore the acces and always assume ReadWrite
81+
if (parameterType == typeof(ICloudBlob) || parameterType == typeof(CloudBlockBlob) ||
82+
parameterType == typeof(CloudPageBlob) || parameterType == typeof(CloudBlobDirectory))
83+
{
84+
return FileAccess.ReadWrite;
85+
}
86+
87+
return Access;
88+
}
7389
}
7490
}

src/WebJobs.Script/Binding/DocumentDBBinding.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public DocumentDBBinding(ScriptHostConfiguration config, DocumentDBBindingMetada
4646

4747
public int CollectionThroughput { get; private set; }
4848

49-
public override Collection<CustomAttributeBuilder> GetCustomAttributes()
49+
public override Collection<CustomAttributeBuilder> GetCustomAttributes(Type parameterType)
5050
{
5151
Type attributeType = typeof(DocumentDBAttribute);
5252

src/WebJobs.Script/Binding/EventHubBinding.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public EventHubBinding(ScriptHostConfiguration config, EventHubBindingMetadata m
3030

3131
public string EventHubName { get; private set; }
3232

33-
public override Collection<CustomAttributeBuilder> GetCustomAttributes()
33+
public override Collection<CustomAttributeBuilder> GetCustomAttributes(Type parameterType)
3434
{
3535
var constructorTypes = new Type[] { typeof(string) };
3636
var constructorArguments = new object[] { EventHubName };

src/WebJobs.Script/Binding/FunctionBinding.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ protected FunctionBinding(ScriptHostConfiguration config, BindingMetadata metada
3232

3333
public abstract Task BindAsync(BindingContext context);
3434

35-
public abstract Collection<CustomAttributeBuilder> GetCustomAttributes();
35+
public abstract Collection<CustomAttributeBuilder> GetCustomAttributes(Type parameterType);
3636

3737
internal static Collection<FunctionBinding> GetBindings(ScriptHostConfiguration config, IEnumerable<BindingMetadata> bindingMetadatas, FileAccess fileAccess)
3838
{

src/WebJobs.Script/Binding/HttpBinding.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public HttpBinding(ScriptHostConfiguration config, BindingMetadata metadata, Fil
2525
{
2626
}
2727

28-
public override Collection<CustomAttributeBuilder> GetCustomAttributes()
28+
public override Collection<CustomAttributeBuilder> GetCustomAttributes(Type parameterType)
2929
{
3030
return null;
3131
}

src/WebJobs.Script/Binding/MobileTableBinding.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) .NET Foundation. All rights reserved.
22
// Licensed under the MIT License. See License.txt in the project root for license information.
33

4+
using System;
45
using System.Collections.ObjectModel;
56
using System.IO;
67
using System.Reflection;
@@ -36,7 +37,7 @@ public MobileTableBinding(ScriptHostConfiguration config, MobileTableBindingMeta
3637

3738
public string ApiKey { get; private set; }
3839

39-
public override Collection<CustomAttributeBuilder> GetCustomAttributes()
40+
public override Collection<CustomAttributeBuilder> GetCustomAttributes(Type parameterType)
4041
{
4142
PropertyInfo[] props = new[]
4243
{

src/WebJobs.Script/Binding/NotificationHubBinding.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public NotificationHubBinding(ScriptHostConfiguration config, NotificationHubBin
3232

3333
public string HubName { get; private set; }
3434

35-
public override Collection<CustomAttributeBuilder> GetCustomAttributes()
35+
public override Collection<CustomAttributeBuilder> GetCustomAttributes(Type parameterType)
3636
{
3737
Type attributeType = typeof(NotificationHubAttribute);
3838
PropertyInfo[] props = new[]

src/WebJobs.Script/Binding/QueueBinding.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public QueueBinding(ScriptHostConfiguration config, QueueBindingMetadata metadat
3030

3131
public string QueueName { get; private set; }
3232

33-
public override Collection<CustomAttributeBuilder> GetCustomAttributes()
33+
public override Collection<CustomAttributeBuilder> GetCustomAttributes(Type parameterType)
3434
{
3535
Collection<CustomAttributeBuilder> attributes = new Collection<CustomAttributeBuilder>();
3636

src/WebJobs.Script/Binding/ServiceBusBinding.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public ServiceBusBinding(ScriptHostConfiguration config, ServiceBusBindingMetada
3131

3232
public string QueueOrTopicName { get; private set; }
3333

34-
public override Collection<CustomAttributeBuilder> GetCustomAttributes()
34+
public override Collection<CustomAttributeBuilder> GetCustomAttributes(Type parameterType)
3535
{
3636
var constructorTypes = new Type[] { typeof(string) };
3737
var constructorArguments = new object[] { QueueOrTopicName };

0 commit comments

Comments
 (0)