/// <summary> /// Maps FunctionMetadata to FunctionMetadataResponse. /// </summary> /// <param name="functionMetadata">FunctionMetadata to be mapped.</param> /// <param name="hostOptions">The host options</param> /// <returns>Promise of a FunctionMetadataResponse</returns> public static async Task <FunctionMetadataResponse> ToFunctionMetadataResponse(this FunctionMetadata functionMetadata, ScriptJobHostOptions hostOptions, string routePrefix, string baseUrl) { string functionPath = GetFunctionPathOrNull(hostOptions.RootScriptPath, functionMetadata.Name); string functionMetadataFilePath = GetMetadataPathOrNull(functionPath); if (string.IsNullOrEmpty(baseUrl)) { baseUrl = "https://localhost/"; } var response = new FunctionMetadataResponse { Name = functionMetadata.Name, Href = GetFunctionHref(functionMetadata.Name, baseUrl), Config = await GetFunctionConfig(functionMetadata, functionMetadataFilePath), // Properties below this comment are not present in the kudu version. IsDirect = functionMetadata.IsDirect(), IsDisabled = functionMetadata.IsDisabled(), IsProxy = functionMetadata.IsProxy(), Language = functionMetadata.Language, InvokeUrlTemplate = GetFunctionInvokeUrlTemplate(baseUrl, functionMetadata, routePrefix) }; if (!string.IsNullOrEmpty(functionPath)) { response.ScriptRootPathHref = VirtualFileSystem.FilePathToVfsUri(functionPath, baseUrl, hostOptions, isDirectory: true); } if (!string.IsNullOrEmpty(functionMetadataFilePath)) { response.ConfigHref = VirtualFileSystem.FilePathToVfsUri(functionMetadataFilePath, baseUrl, hostOptions); } if (!string.IsNullOrEmpty(hostOptions.TestDataPath)) { var testDataFilePath = functionMetadata.GetTestDataFilePath(hostOptions); response.TestDataHref = VirtualFileSystem.FilePathToVfsUri(testDataFilePath, baseUrl, hostOptions); response.TestData = await GetTestData(testDataFilePath, hostOptions); } if (!string.IsNullOrEmpty(functionMetadata.ScriptFile)) { response.ScriptHref = VirtualFileSystem.FilePathToVfsUri(Path.Combine(hostOptions.RootScriptPath, functionMetadata.ScriptFile), baseUrl, hostOptions); } return(response); }