Skip to content

Commit d24e152

Browse files
committed
Added HttpBinding support back in.
1 parent 854ea69 commit d24e152

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

src/WebJobs.Script/Binding/FunctionBinding.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ internal static Collection<FunctionBinding> GetBindings(ScriptHostConfiguration
5353
{
5454
throw new InvalidOperationException("Http binding can only be used for output.");
5555
}
56+
bindings.Add(new HttpBinding(config, bindingMetadata, FileAccess.Write));
5657
break;
5758
default:
5859
FunctionBinding binding = null;

src/WebJobs.Script/Binding/Http/HttpBinding.cs

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33

44
using System;
55
using System.Collections.Generic;
6+
using System.Collections.ObjectModel;
67
using System.Dynamic;
78
using System.Globalization;
89
using System.IO;
910
using System.Net;
11+
using System.Reflection.Emit;
12+
using System.Threading.Tasks;
1013
using Microsoft.AspNetCore.Http;
1114
using Microsoft.AspNetCore.Mvc;
1215
using Microsoft.AspNetCore.Mvc.WebApiCompatShim;
@@ -16,8 +19,36 @@
1619

1720
namespace Microsoft.Azure.WebJobs.Script.Binding
1821
{
19-
public class HttpBinding
22+
public class HttpBinding : FunctionBinding
2023
{
24+
public HttpBinding(ScriptHostConfiguration config, BindingMetadata metadata, FileAccess access)
25+
: base(config, metadata, access)
26+
{
27+
}
28+
29+
public override Collection<CustomAttributeBuilder> GetCustomAttributes(Type parameterType)
30+
{
31+
return null;
32+
}
33+
34+
public override Task BindAsync(BindingContext context)
35+
{
36+
HttpRequest request = (HttpRequest)context.TriggerValue;
37+
38+
object content = context.Value;
39+
if (content is Stream)
40+
{
41+
// for script language functions (e.g. PowerShell, BAT, etc.) the value
42+
// will be a Stream which we need to convert to string
43+
ConvertStreamToValue((Stream)content, DataType.String, ref content);
44+
}
45+
46+
IActionResult response = CreateResult(request, content);
47+
request.HttpContext.Items[ScriptConstants.AzureFunctionsHttpResponseKey] = response;
48+
49+
return Task.CompletedTask;
50+
}
51+
2152
internal static IActionResult CreateResult(HttpRequest request, object content)
2253
{
2354
string stringContent = content as string;

0 commit comments

Comments
 (0)