├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── CONTENT-REQUEST.yml │ ├── QUESTION.yml │ └── config.yml ├── dependabot.yml ├── pull_request_template.md └── workflows │ ├── code-tour-and-links-watcher.yml │ ├── dotnet6.yml │ ├── dotnetcore31.yml │ ├── links-watcher-schedule.yml │ ├── python.yml │ └── typescript.yml ├── .gitignore ├── .lycheeignore ├── .tours ├── dotnet6 │ ├── http-refit-auth │ │ └── .tours │ │ │ ├── 02-mocking-third-party-apis.tour │ │ │ ├── 03-mocking-a-hypothetical-authentication-server.tour │ │ │ └── 04-authenticating-http-calls.tour │ ├── http-refit │ │ └── .tours │ │ │ ├── 01-defining-a-third-party-rest-api.tour │ │ │ └── 02-adding-custom-api-parameters.tour │ └── http │ │ └── .tours │ │ ├── 01-creating-a-function-app.tour │ │ ├── 02-changing-the-template-for-get-requests.tour │ │ ├── 03-adding-a-bad-request-response.tour │ │ ├── 04-handling-post-requests-with-string-data.tour │ │ ├── 05-handling-post-requests-with-json-data.tour │ │ └── 06-changing-the-route-for-a-custom-greeting.tour ├── dotnetcore31 │ └── http │ │ └── .tours │ │ ├── 01-creating-a-function-app.tour │ │ ├── 03-change-for-post.tour │ │ ├── 04-typed-parameter-for-post.tour │ │ └── 05-change-route-customgreeting.tour ├── python │ └── http │ │ └── .tours │ │ ├── 01creating-a-function-app.tour │ │ ├── 02changing-the-template-for-get-requeststour.tour │ │ ├── 03changing-the-template-for-post-requeststour.tour │ │ ├── 04adding-a-new-function-for-post-requests.tour │ │ └── homework │ │ └── nlp-http-homeweork-python.tour └── typescript │ ├── blob │ └── .tours │ │ ├── 02using-plain-blob-output-bindings.tour │ │ ├── 03using-binding-expressions-for-blob-output-bindings.tour │ │ ├── 04using-payload-data-of-trigger-for-blob-output-bindings.tour │ │ ├── 05using-plain-blob-input-bindings.tour │ │ ├── 06using-blob-storage-sdk-for-reading.tour │ │ ├── 07creating-a-blob-triggered-function.tour │ │ └── homework │ │ └── typescript-blob---homework-improve-your-resume-api.tour │ ├── durable-functions-advanced │ └── .tours │ │ ├── 02-fan-outfan-in.tour │ │ ├── 03-sub-orchestration.tour │ │ ├── 04-external-events.tour │ │ └── homework │ │ └── durable-functions-advanced-homework.tour │ └── http │ └── .tours │ ├── 01creating-a-function-app.tour │ ├── 02changing-the-template-for-get-requests.tour │ ├── 03changing-the-template-for-post-requests.tour │ ├── 04adding-a-new-function-for-post-requests.tour │ └── homework │ └── resume-api---typescript.tour ├── .vscode ├── extensions.json ├── launch.json ├── settings.json └── tasks.json ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── img ├── postman.png └── zappy-university-192.gif ├── lessons ├── PowerShell │ ├── http │ │ ├── README.md │ │ ├── http-homework-powershell.md │ │ ├── http-lesson-powershell-portal.md │ │ └── screen-captures │ │ │ ├── Azure Functions University - Add Function.gif │ │ │ └── azurefuncuniversity-create.gif │ └── prerequisites │ │ └── README.md ├── README.md ├── _lesson_template.md ├── dotnet6 │ ├── deployment │ │ ├── README.md │ │ └── img │ │ │ ├── vscode_azure_function_side_bar.png │ │ │ └── vscode_deployment_notification.png │ ├── http-refit-auth │ │ └── README.md │ ├── http-refit │ │ └── README.md │ ├── http │ │ ├── README.md │ │ └── http-homework-dotnet6.md │ └── prerequisites │ │ └── README.md ├── dotnetcore31 │ ├── blob │ │ ├── README.md │ │ ├── blob-homework-resume-api-dotnet.md │ │ └── img │ │ │ ├── AzureFunctionsStorage.png │ │ │ ├── in-folder.png │ │ │ ├── player-1-in-folder.png │ │ │ ├── samples-workitems-output.png │ │ │ └── storage-explorer-sample-items.png │ ├── configuration │ │ ├── README.md │ │ ├── configuration-homework-dotnet.md │ │ └── img │ │ │ ├── app-config-main-configration-explorer.png │ │ │ ├── app-configuration-access-keys-primary-conn-string-highlighted.png │ │ │ ├── app-configuration-explorer-create-highlighted.png │ │ │ ├── app-configuration-explorer-create-menu.png │ │ │ ├── app-configuration-explorer-create-slidein-filled-in.png │ │ │ ├── app-configuration-side-menu-access-keys-highlighted.png │ │ │ ├── create-resource-app-config-create.png │ │ │ ├── create-resource-app-config-deploy-complete.png │ │ │ ├── create-resource-config-service.png │ │ │ ├── create-resource-search-config-service.png │ │ │ ├── resource-group-config-svc-created.png │ │ │ ├── resource-group-create-resource.png │ │ │ └── review-create-to-create.png │ ├── cosmosdb │ │ ├── README.md │ │ └── img │ │ │ ├── add-container-and-partition.png │ │ │ ├── add-message-and-fillout-data.png │ │ │ ├── add-new-collection-cosmos.png │ │ │ ├── app-settings-keyvault-reference.png │ │ │ ├── connect-local-storage-emulator.png │ │ │ ├── connections-azure-portal.png │ │ │ ├── create-a-new-database-cosmos.png │ │ │ ├── create-function-option.png │ │ │ ├── create-new-local-settings.png │ │ │ ├── create-new-project.png │ │ │ ├── create-queue-option.png │ │ │ ├── deploy-function-image.png │ │ │ ├── keyvault-secrets.png │ │ │ ├── managed-identity.png │ │ │ ├── new-item-cosmos-db.png │ │ │ ├── new-item-cosmos-manual.png │ │ │ ├── new-queue-image.png │ │ │ ├── newplayer-items-queue.png │ │ │ ├── output-messages-deployment.png │ │ │ ├── output-messages-function.png │ │ │ ├── postman-result-route.png │ │ │ ├── primary-connection-string-cosmos.png │ │ │ ├── queue-connection-string.png │ │ │ ├── service-principal-adding.png │ │ │ └── unique-global-name-function.png │ ├── deployment │ │ ├── README.md │ │ └── img │ │ │ ├── vscode_azure_function_side_bar.png │ │ │ └── vscode_deployment_notification.png │ ├── http │ │ ├── README.md │ │ └── http-homework-dotnet.md │ ├── prerequisites │ │ └── README.md │ ├── queue │ │ ├── README.md │ │ ├── img │ │ │ ├── AzureFunctionsStorage.png │ │ │ ├── StorageEmulator_queue1.png │ │ │ └── StorageEmulator_queue2.png │ │ └── queue-homework-resume-api-dotnet.md │ └── table │ │ ├── README.md │ │ ├── img │ │ ├── StorageEmulator_table1.png │ │ ├── StorageEmulator_table2.png │ │ └── StorageEmulator_table3.png │ │ └── table-homework-resume-api-dotnet.md ├── python │ ├── http │ │ ├── README.md │ │ ├── http-homework-python.md │ │ └── http-lesson-deploy.md │ └── prerequisites │ │ └── README.md └── typescript │ ├── blob │ ├── README.md │ ├── blob-homework-ts.md │ └── img │ │ ├── AzureFunctionsStorage.png │ │ ├── in-folder.png │ │ ├── player-1-in-folder.png │ │ ├── primary-connection-string.png │ │ ├── samples-workitems-console-output.png │ │ └── storage-explorer-sample-items.png │ ├── durable-functions │ ├── advanced │ │ ├── README.md │ │ ├── advanced-patterns-homework.md │ │ └── img │ │ │ ├── ParallelExecutionResult.png │ │ │ └── ParallelExecutionStart.png │ └── chaining │ │ ├── README.md │ │ ├── chaining-homework-locationsearch-api-ts.md │ │ ├── chaining-homework-sapapi-ts.md │ │ └── img │ │ ├── ClienFunctionConfig.png │ │ ├── ClienFunctionConfig2.png │ │ ├── DurableFunctionResponse.png │ │ ├── DurableFunctionSimple.png │ │ ├── DurableFunctionSimpleResponse.png │ │ ├── DurableFunctionSimpleResult.png │ │ ├── PackageJsonScripts.png │ │ ├── SchemaDurableFunction0.png │ │ ├── SchemaDurableFunction1.png │ │ ├── SchemaDurableFunction2.png │ │ ├── SchemaDurableFunction3.png │ │ └── functionchaining.png │ ├── http │ ├── README.md │ └── http_homework-ts.md │ └── prerequisites │ └── README.md ├── src ├── PowerShell │ ├── AzureFunctions.Http │ │ ├── .funcignore │ │ ├── .gitignore │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ ├── settings.json │ │ │ └── tasks.json │ │ ├── CustomGreetingHttpTrigger │ │ │ ├── function.json │ │ │ ├── run.ps1 │ │ │ └── sample.dat │ │ ├── HelloWorldHttpTrigger │ │ │ ├── function.json │ │ │ ├── run.ps1 │ │ │ └── sample.dat │ │ ├── host.json │ │ ├── profile.ps1 │ │ ├── proxies.json │ │ └── requirements.psd1 │ └── homework │ │ └── resume-api │ │ ├── .funcignore │ │ ├── .gitignore │ │ ├── GetResume │ │ ├── function.json │ │ └── run.ps1 │ │ ├── host.json │ │ ├── profile.ps1 │ │ ├── proxies.json │ │ └── requirements.psd1 ├── dotnet6 │ ├── http-refit-auth │ │ └── AzFuncUni.Http │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ ├── settings.json │ │ │ └── tasks.json │ │ │ ├── AzFuncUni.Http.csproj │ │ │ ├── HelloWorldHttpTrigger.cs │ │ │ ├── Http │ │ │ ├── AuthenticationHandler.cs │ │ │ ├── GetAccessToken.cs │ │ │ ├── GetRequestResponse.cs │ │ │ ├── IAuthentication.cs │ │ │ ├── IHttpBinOrgApi.cs │ │ │ ├── MockedAuthenticationServerHandler.cs │ │ │ ├── MockedUnauthorizedHandler.cs │ │ │ └── RequestToken.cs │ │ │ ├── Program.cs │ │ │ ├── host.json │ │ │ └── local-tests.http │ ├── http-refit │ │ └── AzFuncUni.Http │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ ├── settings.json │ │ │ └── tasks.json │ │ │ ├── AzFuncUni.Http.csproj │ │ │ ├── Extensions │ │ │ └── NameValueCollectionExtensions.cs │ │ │ ├── HelloWorldHttpTrigger1.cs │ │ │ ├── HelloWorldHttpTrigger2.cs │ │ │ ├── HelloWorldHttpTrigger3.cs │ │ │ ├── Http │ │ │ ├── GetRequestResponse.cs │ │ │ ├── IHttpBinOrgApi.cs │ │ │ └── IHttpBinOrgApi3.cs │ │ │ ├── Program.cs │ │ │ ├── host.json │ │ │ ├── local-tests.http │ │ │ └── local.settings.json │ └── http │ │ ├── AzFuncUni.Http │ │ ├── .gitignore │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ ├── settings.json │ │ │ └── tasks.json │ │ ├── AzFuncUni.Http.csproj │ │ ├── HelloWorldHttpTrigger1.cs │ │ ├── HelloWorldHttpTrigger2.cs │ │ ├── HelloWorldHttpTrigger3.cs │ │ ├── HelloWorldHttpTrigger4.cs │ │ ├── HelloWorldHttpTrigger5.cs │ │ ├── HelloWorldHttpTrigger6.cs │ │ ├── Person.cs │ │ ├── Program.cs │ │ ├── host.json │ │ ├── local-tests.http │ │ └── local.settings.json │ │ └── Homework.Http │ │ ├── .gitignore │ │ ├── .vscode │ │ ├── extensions.json │ │ ├── launch.json │ │ ├── settings.json │ │ └── tasks.json │ │ ├── Homework.Http.csproj │ │ ├── Program.cs │ │ ├── Resume.cs │ │ ├── ResumeApi.cs │ │ ├── host.json │ │ ├── local.http │ │ └── local.settings.json ├── dotnetcore31 │ ├── AzureFunctions.Blob │ │ ├── .gitignore │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ ├── settings.json │ │ │ └── tasks.json │ │ ├── AzureFunctions.Blob.csproj │ │ ├── BlobConfig.cs │ │ ├── Input │ │ │ ├── GetBlobNamesWithContainerBlobInput.cs │ │ │ ├── GetPlayerWithStreamInput.cs │ │ │ └── GetPlayerWithStringInputDynamic.cs │ │ ├── Models │ │ │ └── Player.cs │ │ ├── Output │ │ │ ├── StorePlayerWithContainerBlobOutput.cs │ │ │ ├── StorePlayerWithStreamBlobOutput.cs │ │ │ ├── StorePlayerWithStringBlobOutput.cs │ │ │ └── StorePlayerWithStringBlobOutputDynamic.cs │ │ ├── host.json │ │ ├── local.settings.json │ │ └── player-1.json │ ├── AzureFunctions.Configuration │ │ ├── .gitignore │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ ├── settings.json │ │ │ └── tasks.json │ │ ├── AzureFunctions.Configuration.csproj │ │ ├── FunctionsStartup.cs │ │ ├── IFunctionsHostBuilder.cs │ │ ├── ReadingAppConfigurationVariables.cs │ │ ├── ReadingEnvironmentVariables.cs │ │ ├── host.json │ │ └── local.settings.json │ ├── AzureFunctions.Cosmos │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ ├── settings.json │ │ │ └── tasks.json │ │ ├── AzureFunctions.Cosmos.csproj │ │ ├── Input │ │ │ └── QueryPlayersWithHttpTrigger.cs │ │ ├── Models │ │ │ ├── Player.cs │ │ │ └── TeamPlayer.cs │ │ ├── Output │ │ │ ├── StorePlayerWithDI.cs │ │ │ └── TransformPlayerAndStoreInCosmos.cs │ │ ├── Startup.cs │ │ ├── Trigger │ │ │ └── StoreTeamPlayerInCosmos.cs │ │ ├── host.json │ │ └── local.settings.json │ ├── AzureFunctions.Http │ │ ├── .gitignore │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ ├── settings.json │ │ │ └── tasks.json │ │ ├── AzureFunctions.Http.csproj │ │ ├── CustomGreetingHttpTrigger.cs │ │ ├── HelloWorldHttpTrigger.cs │ │ ├── Person.cs │ │ ├── PersonTypeHttpTrigger.cs │ │ ├── host.json │ │ └── local.settings.json │ ├── AzureFunctions.Queue │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ ├── settings.json │ │ │ └── tasks.json │ │ ├── AzureFunctions.Queue.csproj │ │ ├── Models │ │ │ └── Player.cs │ │ ├── Output │ │ │ ├── NewPlayerWithCloudQueueMessageOutput.cs │ │ │ ├── NewPlayerWithDynamicQueueOutput.cs │ │ │ ├── NewPlayerWithIAsyncCollectorQueueOutput.cs │ │ │ ├── NewPlayerWithStringQueueOutput.cs │ │ │ └── NewPlayerWithTypedQueueOutput.cs │ │ ├── QueueConfig.cs │ │ ├── Trigger │ │ │ └── NewPlayerQueueTrigger.cs │ │ ├── host.json │ │ └── local.settings.json │ ├── AzureFunctions.Table │ │ ├── .gitignore │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ ├── settings.json │ │ │ └── tasks.json │ │ ├── AzureFunctions.Table.csproj │ │ ├── Input │ │ │ ├── GetPlayerByRegionAndIdTableInput.cs │ │ │ └── GetPlayersByRegionAndNickNameCloudTableInput.cs │ │ ├── Models │ │ │ └── PlayerEntity.cs │ │ ├── Output │ │ │ ├── StorePlayerReturnAttributeTableOutput.cs │ │ │ └── StorePlayersWithAsyncCollectorTableOutput.cs │ │ ├── TableConfig.cs │ │ ├── host.json │ │ └── local.settings.json │ └── homework │ │ ├── .vscode │ │ ├── extensions.json │ │ ├── launch.json │ │ ├── settings.json │ │ └── tasks.json │ │ └── resume-api │ │ ├── .gitignore │ │ ├── Resume.cs │ │ ├── ResumeFromBlob.cs │ │ ├── host.json │ │ ├── local.settings.json │ │ ├── resume-api.csproj │ │ └── resume.json ├── python │ ├── AzureFunctions.Http │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ ├── settings.json │ │ │ └── tasks.json │ │ ├── 01CreatingAFunctionApp │ │ │ ├── .funcignore │ │ │ ├── .gitignore │ │ │ ├── HelloWorldHttpTrigger │ │ │ │ ├── __init__.py │ │ │ │ ├── function.json │ │ │ │ └── sample.dat │ │ │ ├── host.json │ │ │ ├── local.settings.json │ │ │ └── requirements.txt │ │ ├── 02ChangingTheTemplateForGetRequest │ │ │ ├── .funcignore │ │ │ ├── .gitignore │ │ │ ├── HelloWorldHttpTrigger │ │ │ │ ├── __init__.py │ │ │ │ ├── function.json │ │ │ │ └── sample.dat │ │ │ ├── host.json │ │ │ ├── local.settings.json │ │ │ └── requirements.txt │ │ ├── 03ChangingTheTemplateForPostRequests │ │ │ ├── .funcignore │ │ │ ├── .gitignore │ │ │ ├── HelloWorldHttpTrigger │ │ │ │ ├── __init__.py │ │ │ │ ├── function.json │ │ │ │ └── sample.dat │ │ │ ├── host.json │ │ │ └── requirements.txt │ │ ├── 04AddingANewFunctionForPostRequests │ │ │ ├── .funcignore │ │ │ ├── .gitignore │ │ │ ├── CustomGreetingHttpTrigger │ │ │ │ ├── __init__.py │ │ │ │ ├── function.json │ │ │ │ └── sample.dat │ │ │ ├── HelloWorldHttpTrigger │ │ │ │ ├── __init__.py │ │ │ │ ├── function.json │ │ │ │ └── sample.dat │ │ │ ├── host.json │ │ │ ├── local.settings.json │ │ │ └── requirements.txt │ │ └── homework │ │ │ ├── homework_resources │ │ │ ├── data │ │ │ │ └── data_sample.txt │ │ │ └── shared_code │ │ │ │ └── nlp_text_processing.py │ │ │ └── homework_solution │ │ │ ├── .funcignore │ │ │ ├── .gitignore │ │ │ ├── host.json │ │ │ ├── local.settings.json │ │ │ ├── requirements.txt │ │ │ ├── response_text_processing │ │ │ ├── __init__.py │ │ │ ├── function.json │ │ │ └── sample.dat │ │ │ └── shared_code │ │ │ └── nlp_text_processing.py │ └── README.md └── typescript │ ├── AzureFunctions.Blob │ ├── .funcignore │ ├── .gitignore │ ├── .vscode │ │ ├── extensions.json │ │ ├── launch.json │ │ ├── settings.json │ │ └── tasks.json │ ├── Exercise2PlainBlobOutputBindings │ │ ├── function.json │ │ ├── index.ts │ │ └── sample.dat │ ├── Exercise3BindingExpressionsForBlobOutputBindings │ │ ├── function.json │ │ ├── index.ts │ │ └── sample.dat │ ├── Exercise4PayloadDataOfTriggerForBlobOutputBindings │ │ ├── function.json │ │ ├── index.ts │ │ └── sample.dat │ ├── Exercise5PlainBlobInputBindings │ │ ├── function.json │ │ ├── index.ts │ │ └── sample.dat │ ├── Exercise6BlobStorageSdkForReading │ │ ├── function.json │ │ ├── index.ts │ │ └── sample.dat │ ├── Exercise7BlobTriggeredFunction │ │ ├── function.json │ │ ├── index.ts │ │ └── sample.dat │ ├── files │ │ └── player-1.json │ ├── host.json │ ├── local.settings.json │ ├── package-lock.json │ ├── package.json │ ├── player-1.json │ ├── proxies.json │ └── tsconfig.json │ ├── AzureFunctions.Http │ ├── .vscode │ │ ├── extensions.json │ │ ├── launch.json │ │ ├── settings.json │ │ └── tasks.json │ ├── 01CreatingAFunctionApp │ │ ├── .funcignore │ │ ├── .gitignore │ │ ├── HelloWorldHttpTrigger │ │ │ ├── function.json │ │ │ ├── index.ts │ │ │ └── sample.dat │ │ ├── host.json │ │ ├── local.settings.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── proxies.json │ │ └── tsconfig.json │ ├── 02ChangingTheTemplateForGetRequest │ │ ├── .funcignore │ │ ├── .gitignore │ │ ├── HelloWorldHttpTrigger │ │ │ ├── function.json │ │ │ ├── index.ts │ │ │ └── sample.dat │ │ ├── host.json │ │ ├── local.settings.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── proxies.json │ │ └── tsconfig.json │ ├── 03ChangingTheTemplateForPostRequests │ │ ├── .funcignore │ │ ├── .gitignore │ │ ├── HelloWorldHttpTrigger │ │ │ ├── function.json │ │ │ ├── index.ts │ │ │ └── sample.dat │ │ ├── host.json │ │ ├── local.settings.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── proxies.json │ │ └── tsconfig.json │ └── 04AddingANewFunctionForPostRequests │ │ ├── .funcignore │ │ ├── .gitignore │ │ ├── CustomGreetingHttpTrigger │ │ ├── function.json │ │ ├── index.ts │ │ └── sample.dat │ │ ├── HelloWorldHttpTrigger │ │ ├── function.json │ │ ├── index.ts │ │ └── sample.dat │ │ ├── host.json │ │ ├── local.settings.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── proxies.json │ │ └── tsconfig.json │ ├── durable-functions │ ├── advanced-patterns │ │ ├── 01DurableFunctionApp-FanOutFanIn │ │ │ ├── .funcignore │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ │ ├── extensions.json │ │ │ │ ├── launch.json │ │ │ │ ├── settings.json │ │ │ │ └── tasks.json │ │ │ ├── AccessCardCreationActivity │ │ │ │ ├── function.json │ │ │ │ └── index.ts │ │ │ ├── ItEquipmentOrderActivity │ │ │ │ ├── function.json │ │ │ │ └── index.ts │ │ │ ├── OnboardingOrchestrator │ │ │ │ ├── function.json │ │ │ │ └── index.ts │ │ │ ├── OnboardingStarter │ │ │ │ ├── function.json │ │ │ │ └── index.ts │ │ │ ├── WelcomeEmailActivity │ │ │ │ ├── function.json │ │ │ │ └── index.ts │ │ │ ├── host.json │ │ │ ├── local.settings.json │ │ │ ├── package-lock.json │ │ │ ├── package.json │ │ │ ├── proxies.json │ │ │ └── tsconfig.json │ │ ├── 02DurableFunctionApp-SubOrchestration │ │ │ ├── .funcignore │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ │ ├── extensions.json │ │ │ │ ├── launch.json │ │ │ │ ├── settings.json │ │ │ │ └── tasks.json │ │ │ ├── AccessCardCreationActivity │ │ │ │ ├── function.json │ │ │ │ └── index.ts │ │ │ ├── ItEquipmentOrderActivity │ │ │ │ ├── function.json │ │ │ │ └── index.ts │ │ │ ├── OnboardingOrchestrator │ │ │ │ ├── function.json │ │ │ │ └── index.ts │ │ │ ├── OnboardingStarter │ │ │ │ ├── function.json │ │ │ │ └── index.ts │ │ │ ├── ParallelOnboardingOrchestrator │ │ │ │ ├── function.json │ │ │ │ └── index.ts │ │ │ ├── WelcomeEmailActivity │ │ │ │ ├── function.json │ │ │ │ └── index.ts │ │ │ ├── host.json │ │ │ ├── local.settings.json │ │ │ ├── package-lock.json │ │ │ ├── package.json │ │ │ ├── proxies.json │ │ │ └── tsconfig.json │ │ └── 03DurableFunctionApp-ExternalEvent │ │ │ ├── .funcignore │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ ├── settings.json │ │ │ └── tasks.json │ │ │ ├── AccessCardCreationActivity │ │ │ ├── function.json │ │ │ └── index.ts │ │ │ ├── CheckItEquipmentValueByRoleActivity │ │ │ ├── function.json │ │ │ └── index.ts │ │ │ ├── ItEquipmentOrderActivity │ │ │ ├── function.json │ │ │ └── index.ts │ │ │ ├── OnboardingOrchestratorExternalEvent │ │ │ ├── function.json │ │ │ └── index.ts │ │ │ ├── OnboardingStarter │ │ │ ├── function.json │ │ │ └── index.ts │ │ │ ├── ParallelOnboardingOrchestrator │ │ │ ├── function.json │ │ │ └── index.ts │ │ │ ├── WelcomeEmailActivity │ │ │ ├── function.json │ │ │ └── index.ts │ │ │ ├── host.json │ │ │ ├── local.settings.json │ │ │ ├── package-lock.json │ │ │ ├── package.json │ │ │ ├── proxies.json │ │ │ └── tsconfig.json │ └── chaining │ │ ├── DurableFunctionApp-Retry │ │ ├── .funcignore │ │ ├── .gitignore │ │ ├── DurableFunctionStarter │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── DurableFunctionsOrchestrator │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── GetRepositoryDetailsByName │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── GetUserDetailsById │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── GitHubInfoOrchestrator │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── HelloCity │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── host.json │ │ ├── local.settings.sample.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── proxies.json │ │ └── tsconfig.json │ │ ├── DurableFunctionApp-Timeout │ │ ├── .funcignore │ │ ├── .gitignore │ │ ├── DurableFunctionStarter │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── DurableFunctionsOrchestrator │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── GetRepositoryDetailsByName │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── GetUserDetailsById │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── GitHubInfoOrchestrator │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── HelloCity │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── host.json │ │ ├── local.settings.sample.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── proxies.json │ │ └── tsconfig.json │ │ └── DurableFunctionApp │ │ ├── .funcignore │ │ ├── .gitignore │ │ ├── DurableFunctionStarter │ │ ├── function.json │ │ └── index.ts │ │ ├── DurableFunctionsOrchestrator │ │ ├── function.json │ │ └── index.ts │ │ ├── GetRepositoryDetailsByName │ │ ├── function.json │ │ └── index.ts │ │ ├── GetUserDetailsById │ │ ├── function.json │ │ └── index.ts │ │ ├── GitHubInfoOrchestrator │ │ ├── function.json │ │ └── index.ts │ │ ├── HelloCity │ │ ├── function.json │ │ └── index.ts │ │ ├── host.json │ │ ├── local.settings.sample.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── proxies.json │ │ └── tsconfig.json │ └── homework │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ ├── settings.json │ └── tasks.json │ ├── durable-functions │ ├── advanced-patterns │ │ ├── .funcignore │ │ ├── .gitignore │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ ├── settings.json │ │ │ └── tasks.json │ │ ├── BookHotelRoomActivity │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── BookTrainTicketActivity │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── BookingOrchestrator │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── BookingOrchestratorExternalEvent │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── BusinessTripBookingStarter │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── BuyConferenceTicketActivity │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── CheckHotelRoomApprovalNeededActivity │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── ParallelBookingOrchestrator │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── host.json │ │ ├── local.settings.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── samplerequests.http │ │ └── tsconfig.json │ └── chaining │ │ ├── bingmaps │ │ ├── .funcignore │ │ ├── .gitignore │ │ ├── GetGeoencodedLocation │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── GetLocationSearchResult │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── LocationSearchHttpStart │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── LocationSearchOrchestrator │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── host.json │ │ ├── local.settings.sample.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── request.http │ │ └── tsconfig.json │ │ └── sapapi │ │ ├── DurableFunctionApp-Retry │ │ ├── .funcignore │ │ ├── .gitignore │ │ ├── DurableFunctionStarter │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── GetPgText │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── GetPoDetails │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── PurchaseInfoOrchestrator │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── demoRequests.http │ │ ├── host.json │ │ ├── local.settings.sample.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── proxies.json │ │ ├── tsconfig.json │ │ └── utils │ │ │ └── purchaseOrderTypes.ts │ │ ├── DurableFunctionApp-Timeout │ │ ├── .funcignore │ │ ├── .gitignore │ │ ├── DurableFunctionStarter │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── GetPgText │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── GetPoDetails │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── PurchaseInfoOrchestrator │ │ │ ├── function.json │ │ │ └── index.ts │ │ ├── demoRequests.http │ │ ├── host.json │ │ ├── local.settings.sample.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── proxies.json │ │ ├── tsconfig.json │ │ └── utils │ │ │ └── purchaseOrderTypes.ts │ │ └── DurableFunctionApp │ │ ├── .funcignore │ │ ├── .gitignore │ │ ├── DurableFunctionStarter │ │ ├── function.json │ │ └── index.ts │ │ ├── GetPgText │ │ ├── function.json │ │ └── index.ts │ │ ├── GetPoDetails │ │ ├── function.json │ │ └── index.ts │ │ ├── PurchaseInfoOrchestrator │ │ ├── function.json │ │ └── index.ts │ │ ├── demoRequests.http │ │ ├── host.json │ │ ├── local.settings.sample.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── proxies.json │ │ ├── tsconfig.json │ │ └── utils │ │ └── purchaseOrderTypes.ts │ ├── resume-api-blob │ ├── .funcignore │ ├── .gitignore │ ├── .vscode │ │ ├── extensions.json │ │ ├── launch.json │ │ ├── settings.json │ │ └── tasks.json │ ├── host.json │ ├── myresume.json │ ├── package.json │ ├── proxies.json │ ├── resume-api-blob │ │ ├── function.json │ │ ├── index.ts │ │ └── sample.dat │ ├── sample.local.settings.json │ └── tsconfig.json │ └── resume-api │ ├── .funcignore │ ├── .gitignore │ ├── host.json │ ├── local.settings.json │ ├── package-lock.json │ ├── package.json │ ├── proxies.json │ ├── resume-api │ ├── function.json │ ├── index.ts │ └── sample.dat │ └── tsconfig.json ├── test ├── dotnetcore31 │ ├── blob │ │ ├── blob_input.http │ │ └── blob_output.http │ ├── cosmosdb │ │ ├── cosmosdb_input.http │ │ └── cosmosdb_output.http │ ├── http │ │ └── httptrigger.http │ ├── queue │ │ └── queue_output.http │ └── table │ │ ├── table_input.http │ │ └── table_output.http ├── python │ └── httptrigger.http └── typescript │ ├── blob │ ├── blobinput.http │ └── bloboutput.http │ ├── durable-functions │ ├── advanced-patterns │ │ └── advanced-patterns.http │ └── chaining │ │ └── chaining.http │ └── http │ └── httptrigger.http └── workspaces ├── PowerShell └── http-powershell.code-workspace ├── deployment.code-workspace ├── dotnet6 ├── deployment-dotnet6.code-workspace ├── http-dotnet6.code-workspace ├── http-refit-auth-dotnet6.code-workspace └── http-refit-dotnet6.code-workspace ├── dotnetcore31 ├── blob-dotnet.code-workspace ├── configuration-dotnet.code-workspace ├── cosmosdb-dotnet.code-workspace ├── http-dotnet.code-workspace ├── queue-dotnet.code-workspace └── table-dotnet.code-workspace ├── python └── http-python.code-workspace └── typescript ├── blob-ts.code-workspace ├── durable-functions-advanced-ts.code-workspace ├── durable-functions-chaining-ts.code-workspace └── http-ts.code-workspace /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # Support us 🙏 2 | 3 | github: [marcduiker] 4 | ko_fi: marcduiker 5 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true -------------------------------------------------------------------------------- /.lycheeignore: -------------------------------------------------------------------------------- 1 | https?://localhost.* 2 | https://sandbox.api.sap.com.* 3 | https://azure-university-app-config.* 4 | https://192.168.7.108.* 5 | http://httpbin.* 6 | language.* 7 | https://docs.github.com* 8 | https://github.com/marcduiker/azure-functions-university/discussions/new?* 9 | https://github.com/marcduiker/functionapp-deployment/generate 10 | https://getresumeapi-azuni.azurewebsites.net* 11 | https://twitter.com/* 12 | https://portal.azure.com* 13 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "streetsidesoftware.code-spell-checker", 4 | "davidanson.vscode-markdownlint", 5 | "blackmist.linkcheckmd" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | ] 5 | } -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.language": "en" 3 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | ] 5 | } -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # LICENSE 2 | 3 | ## Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) 4 | 5 | You are free to: 6 | 7 | - Share — copy and redistribute the material in any medium or format 8 | - Adapt — remix, transform, and build upon the material 9 | 10 | Under the following terms: 11 | 12 | - Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. 13 | 14 | - NonCommercial — You may not use the material for commercial purposes. 15 | 16 | See [creativecommons.org](https://creativecommons.org/licenses/by-nc/4.0/). -------------------------------------------------------------------------------- /img/postman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/img/postman.png -------------------------------------------------------------------------------- /img/zappy-university-192.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/img/zappy-university-192.gif -------------------------------------------------------------------------------- /lessons/PowerShell/http/screen-captures/Azure Functions University - Add Function.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/PowerShell/http/screen-captures/Azure Functions University - Add Function.gif -------------------------------------------------------------------------------- /lessons/PowerShell/http/screen-captures/azurefuncuniversity-create.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/PowerShell/http/screen-captures/azurefuncuniversity-create.gif -------------------------------------------------------------------------------- /lessons/dotnet6/deployment/img/vscode_azure_function_side_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnet6/deployment/img/vscode_azure_function_side_bar.png -------------------------------------------------------------------------------- /lessons/dotnet6/deployment/img/vscode_deployment_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnet6/deployment/img/vscode_deployment_notification.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/blob/img/AzureFunctionsStorage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/blob/img/AzureFunctionsStorage.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/blob/img/in-folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/blob/img/in-folder.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/blob/img/player-1-in-folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/blob/img/player-1-in-folder.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/blob/img/samples-workitems-output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/blob/img/samples-workitems-output.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/blob/img/storage-explorer-sample-items.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/blob/img/storage-explorer-sample-items.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/configuration/img/app-config-main-configration-explorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/configuration/img/app-config-main-configration-explorer.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/configuration/img/app-configuration-access-keys-primary-conn-string-highlighted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/configuration/img/app-configuration-access-keys-primary-conn-string-highlighted.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/configuration/img/app-configuration-explorer-create-highlighted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/configuration/img/app-configuration-explorer-create-highlighted.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/configuration/img/app-configuration-explorer-create-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/configuration/img/app-configuration-explorer-create-menu.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/configuration/img/app-configuration-explorer-create-slidein-filled-in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/configuration/img/app-configuration-explorer-create-slidein-filled-in.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/configuration/img/app-configuration-side-menu-access-keys-highlighted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/configuration/img/app-configuration-side-menu-access-keys-highlighted.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/configuration/img/create-resource-app-config-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/configuration/img/create-resource-app-config-create.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/configuration/img/create-resource-app-config-deploy-complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/configuration/img/create-resource-app-config-deploy-complete.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/configuration/img/create-resource-config-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/configuration/img/create-resource-config-service.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/configuration/img/create-resource-search-config-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/configuration/img/create-resource-search-config-service.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/configuration/img/resource-group-config-svc-created.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/configuration/img/resource-group-config-svc-created.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/configuration/img/resource-group-create-resource.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/configuration/img/resource-group-create-resource.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/configuration/img/review-create-to-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/configuration/img/review-create-to-create.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/add-container-and-partition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/add-container-and-partition.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/add-message-and-fillout-data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/add-message-and-fillout-data.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/add-new-collection-cosmos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/add-new-collection-cosmos.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/app-settings-keyvault-reference.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/app-settings-keyvault-reference.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/connect-local-storage-emulator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/connect-local-storage-emulator.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/connections-azure-portal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/connections-azure-portal.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/create-a-new-database-cosmos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/create-a-new-database-cosmos.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/create-function-option.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/create-function-option.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/create-new-local-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/create-new-local-settings.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/create-new-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/create-new-project.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/create-queue-option.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/create-queue-option.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/deploy-function-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/deploy-function-image.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/keyvault-secrets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/keyvault-secrets.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/managed-identity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/managed-identity.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/new-item-cosmos-db.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/new-item-cosmos-db.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/new-item-cosmos-manual.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/new-item-cosmos-manual.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/new-queue-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/new-queue-image.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/newplayer-items-queue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/newplayer-items-queue.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/output-messages-deployment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/output-messages-deployment.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/output-messages-function.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/output-messages-function.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/postman-result-route.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/postman-result-route.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/primary-connection-string-cosmos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/primary-connection-string-cosmos.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/queue-connection-string.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/queue-connection-string.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/service-principal-adding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/service-principal-adding.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/cosmosdb/img/unique-global-name-function.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/cosmosdb/img/unique-global-name-function.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/deployment/img/vscode_azure_function_side_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/deployment/img/vscode_azure_function_side_bar.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/deployment/img/vscode_deployment_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/deployment/img/vscode_deployment_notification.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/queue/img/AzureFunctionsStorage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/queue/img/AzureFunctionsStorage.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/queue/img/StorageEmulator_queue1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/queue/img/StorageEmulator_queue1.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/queue/img/StorageEmulator_queue2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/queue/img/StorageEmulator_queue2.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/table/img/StorageEmulator_table1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/table/img/StorageEmulator_table1.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/table/img/StorageEmulator_table2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/table/img/StorageEmulator_table2.png -------------------------------------------------------------------------------- /lessons/dotnetcore31/table/img/StorageEmulator_table3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/dotnetcore31/table/img/StorageEmulator_table3.png -------------------------------------------------------------------------------- /lessons/typescript/blob/img/AzureFunctionsStorage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/blob/img/AzureFunctionsStorage.png -------------------------------------------------------------------------------- /lessons/typescript/blob/img/in-folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/blob/img/in-folder.png -------------------------------------------------------------------------------- /lessons/typescript/blob/img/player-1-in-folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/blob/img/player-1-in-folder.png -------------------------------------------------------------------------------- /lessons/typescript/blob/img/primary-connection-string.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/blob/img/primary-connection-string.png -------------------------------------------------------------------------------- /lessons/typescript/blob/img/samples-workitems-console-output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/blob/img/samples-workitems-console-output.png -------------------------------------------------------------------------------- /lessons/typescript/blob/img/storage-explorer-sample-items.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/blob/img/storage-explorer-sample-items.png -------------------------------------------------------------------------------- /lessons/typescript/durable-functions/advanced/img/ParallelExecutionResult.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/durable-functions/advanced/img/ParallelExecutionResult.png -------------------------------------------------------------------------------- /lessons/typescript/durable-functions/advanced/img/ParallelExecutionStart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/durable-functions/advanced/img/ParallelExecutionStart.png -------------------------------------------------------------------------------- /lessons/typescript/durable-functions/chaining/img/ClienFunctionConfig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/durable-functions/chaining/img/ClienFunctionConfig.png -------------------------------------------------------------------------------- /lessons/typescript/durable-functions/chaining/img/ClienFunctionConfig2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/durable-functions/chaining/img/ClienFunctionConfig2.png -------------------------------------------------------------------------------- /lessons/typescript/durable-functions/chaining/img/DurableFunctionResponse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/durable-functions/chaining/img/DurableFunctionResponse.png -------------------------------------------------------------------------------- /lessons/typescript/durable-functions/chaining/img/DurableFunctionSimple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/durable-functions/chaining/img/DurableFunctionSimple.png -------------------------------------------------------------------------------- /lessons/typescript/durable-functions/chaining/img/DurableFunctionSimpleResponse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/durable-functions/chaining/img/DurableFunctionSimpleResponse.png -------------------------------------------------------------------------------- /lessons/typescript/durable-functions/chaining/img/DurableFunctionSimpleResult.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/durable-functions/chaining/img/DurableFunctionSimpleResult.png -------------------------------------------------------------------------------- /lessons/typescript/durable-functions/chaining/img/PackageJsonScripts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/durable-functions/chaining/img/PackageJsonScripts.png -------------------------------------------------------------------------------- /lessons/typescript/durable-functions/chaining/img/SchemaDurableFunction0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/durable-functions/chaining/img/SchemaDurableFunction0.png -------------------------------------------------------------------------------- /lessons/typescript/durable-functions/chaining/img/SchemaDurableFunction1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/durable-functions/chaining/img/SchemaDurableFunction1.png -------------------------------------------------------------------------------- /lessons/typescript/durable-functions/chaining/img/SchemaDurableFunction2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/durable-functions/chaining/img/SchemaDurableFunction2.png -------------------------------------------------------------------------------- /lessons/typescript/durable-functions/chaining/img/SchemaDurableFunction3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/durable-functions/chaining/img/SchemaDurableFunction3.png -------------------------------------------------------------------------------- /lessons/typescript/durable-functions/chaining/img/functionchaining.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcduiker/azure-functions-university/eafae369ebd49d5c56ae564135d1d11295c1ae33/lessons/typescript/durable-functions/chaining/img/functionchaining.png -------------------------------------------------------------------------------- /src/PowerShell/AzureFunctions.Http/.funcignore: -------------------------------------------------------------------------------- 1 | .git* 2 | .vscode 3 | local.settings.json 4 | test -------------------------------------------------------------------------------- /src/PowerShell/AzureFunctions.Http/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Azure Functions artifacts 3 | bin 4 | obj 5 | appsettings.json 6 | local.settings.json -------------------------------------------------------------------------------- /src/PowerShell/AzureFunctions.Http/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions", 4 | "ms-vscode.PowerShell" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /src/PowerShell/AzureFunctions.Http/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to PowerShell Functions", 6 | "type": "PowerShell", 7 | "request": "attach", 8 | "customPipeName": "AzureFunctionsPSWorker", 9 | "runspaceId": 1, 10 | "preLaunchTask": "func: host start" 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /src/PowerShell/AzureFunctions.Http/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": ".", 3 | "azureFunctions.projectLanguage": "PowerShell", 4 | "azureFunctions.projectRuntime": "~3", 5 | "debug.internalConsoleOptions": "neverOpen" 6 | } -------------------------------------------------------------------------------- /src/PowerShell/AzureFunctions.Http/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "type": "func", 6 | "command": "host start", 7 | "problemMatcher": "$func-powershell-watch", 8 | "isBackground": true 9 | } 10 | ] 11 | } -------------------------------------------------------------------------------- /src/PowerShell/AzureFunctions.Http/CustomGreetingHttpTrigger/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "function", 5 | "type": "httpTrigger", 6 | "direction": "in", 7 | "name": "Person", 8 | "methods": [ 9 | "get" 10 | ], 11 | "route": "CustomGreetingHttpTrigger/{greeting:alpha?}" 12 | }, 13 | { 14 | "type": "http", 15 | "direction": "out", 16 | "name": "Response" 17 | } 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /src/PowerShell/AzureFunctions.Http/CustomGreetingHttpTrigger/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } 4 | -------------------------------------------------------------------------------- /src/PowerShell/AzureFunctions.Http/HelloWorldHttpTrigger/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "function", 5 | "type": "httpTrigger", 6 | "direction": "in", 7 | "name": "Person", 8 | "methods": [ 9 | "get", 10 | "post" 11 | ] 12 | }, 13 | { 14 | "type": "http", 15 | "direction": "out", 16 | "name": "Response" 17 | } 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /src/PowerShell/AzureFunctions.Http/HelloWorldHttpTrigger/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } 4 | -------------------------------------------------------------------------------- /src/PowerShell/AzureFunctions.Http/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[1.*, 2.0.0)" 14 | }, 15 | "managedDependency": { 16 | "enabled": true 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/PowerShell/AzureFunctions.Http/proxies.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/proxies", 3 | "proxies": {} 4 | } 5 | -------------------------------------------------------------------------------- /src/PowerShell/AzureFunctions.Http/requirements.psd1: -------------------------------------------------------------------------------- 1 | # This file enables modules to be automatically managed by the Functions service. 2 | # See https://aka.ms/functionsmanageddependency for additional information. 3 | # 4 | @{ 5 | # For latest supported version, go to 'https://www.powershellgallery.com/packages/Az'. 6 | # To use the Az module in your function app, please uncomment the line below. 7 | # 'Az' = '5.*' 8 | } -------------------------------------------------------------------------------- /src/PowerShell/homework/resume-api/.funcignore: -------------------------------------------------------------------------------- 1 | .git* 2 | .vscode 3 | local.settings.json 4 | test -------------------------------------------------------------------------------- /src/PowerShell/homework/resume-api/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Azure Functions artifacts 3 | bin 4 | obj 5 | appsettings.json 6 | local.settings.json -------------------------------------------------------------------------------- /src/PowerShell/homework/resume-api/GetResume/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "anonymous", 5 | "type": "httpTrigger", 6 | "direction": "in", 7 | "name": "Request", 8 | "methods": [ 9 | "get" 10 | ] 11 | }, 12 | { 13 | "type": "http", 14 | "direction": "out", 15 | "name": "Response" 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /src/PowerShell/homework/resume-api/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[1.*, 2.0.0)" 14 | }, 15 | "managedDependency": { 16 | "enabled": true 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/PowerShell/homework/resume-api/proxies.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/proxies", 3 | "proxies": {} 4 | } 5 | -------------------------------------------------------------------------------- /src/PowerShell/homework/resume-api/requirements.psd1: -------------------------------------------------------------------------------- 1 | # This file enables modules to be automatically managed by the Functions service. 2 | # See https://aka.ms/functionsmanageddependency for additional information. 3 | # 4 | @{ 5 | # For latest supported version, go to 'https://www.powershellgallery.com/packages/Az'. 6 | # To use the Az module in your function app, please uncomment the line below. 7 | # 'Az' = '5.*' 8 | } -------------------------------------------------------------------------------- /src/dotnet6/http-refit-auth/AzFuncUni.Http/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions", 4 | "ms-dotnettools.csharp" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /src/dotnet6/http-refit-auth/AzFuncUni.Http/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to .NET Functions", 6 | "type": "coreclr", 7 | "request": "attach", 8 | "processId": "${command:azureFunctions.pickProcess}" 9 | } 10 | ] 11 | } -------------------------------------------------------------------------------- /src/dotnet6/http-refit-auth/AzFuncUni.Http/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": "bin/Release/net6.0/publish", 3 | "azureFunctions.projectLanguage": "C#", 4 | "azureFunctions.projectRuntime": "~4", 5 | "debug.internalConsoleOptions": "neverOpen", 6 | "azureFunctions.preDeployTask": "publish (functions)" 7 | } -------------------------------------------------------------------------------- /src/dotnet6/http-refit-auth/AzFuncUni.Http/Http/GetRequestResponse.cs: -------------------------------------------------------------------------------- 1 | using System.Text.Json.Serialization; 2 | 3 | public sealed class GetRequestResponse 4 | { 5 | public GetRequestResponse() 6 | { 7 | Headers = new Dictionary(); 8 | 9 | } 10 | [JsonPropertyName("data")] 11 | public string Data { get; set; } 12 | [JsonPropertyName("headers")] 13 | public Dictionary Headers { get; set; } 14 | } -------------------------------------------------------------------------------- /src/dotnet6/http-refit-auth/AzFuncUni.Http/Http/IAuthentication.cs: -------------------------------------------------------------------------------- 1 | using Refit; 2 | 3 | public interface IAuthentication 4 | { 5 | 6 | [Post("/oauth/token")] 7 | Task GetAccessToken([Body(BodySerializationMethod.UrlEncoded)] GetAccessTokenRequest request); 8 | } -------------------------------------------------------------------------------- /src/dotnet6/http-refit-auth/AzFuncUni.Http/Http/IHttpBinOrgApi.cs: -------------------------------------------------------------------------------- 1 | using Refit; 2 | 3 | /// 4 | /// This interface represents access to the HttpBin.org API. 5 | /// 6 | public interface IHttpBinOrgApi 7 | { 8 | [Post("/post")] 9 | Task GetRequest(Stream content = null, [Query] IDictionary query = default); 10 | } -------------------------------------------------------------------------------- /src/dotnet6/http-refit-auth/AzFuncUni.Http/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /src/dotnet6/http-refit-auth/AzFuncUni.Http/local-tests.http: -------------------------------------------------------------------------------- 1 | ### Exercise 1 – 4 2 | 3 | POST http://localhost:7071/api/HelloWorldHttpTrigger 4 | Content-Type: text/plain 5 | 6 | AzureFunctionsUniversity 7 | 8 | ### -------------------------------------------------------------------------------- /src/dotnet6/http-refit/AzFuncUni.Http/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions", 4 | "ms-dotnettools.csharp" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /src/dotnet6/http-refit/AzFuncUni.Http/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to .NET Functions", 6 | "type": "coreclr", 7 | "request": "attach", 8 | "processId": "${command:azureFunctions.pickProcess}" 9 | } 10 | ] 11 | } -------------------------------------------------------------------------------- /src/dotnet6/http-refit/AzFuncUni.Http/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": "bin/Release/net6.0/publish", 3 | "azureFunctions.projectLanguage": "C#", 4 | "azureFunctions.projectRuntime": "~4", 5 | "debug.internalConsoleOptions": "neverOpen", 6 | "azureFunctions.preDeployTask": "publish (functions)" 7 | } -------------------------------------------------------------------------------- /src/dotnet6/http-refit/AzFuncUni.Http/Http/GetRequestResponse.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Text.Json.Serialization; 3 | 4 | public sealed class GetRequestResponse 5 | { 6 | public GetRequestResponse() 7 | { 8 | Args = new Dictionary(); 9 | Headers = new Dictionary(); 10 | 11 | } 12 | [JsonPropertyName("args")] 13 | public Dictionary Args { get; set; } 14 | [JsonPropertyName("data")] 15 | public string Data { get; set; } 16 | [JsonPropertyName("headers")] 17 | public Dictionary Headers { get; set; } 18 | } -------------------------------------------------------------------------------- /src/dotnet6/http-refit/AzFuncUni.Http/Http/IHttpBinOrgApi.cs: -------------------------------------------------------------------------------- 1 | using Refit; 2 | using System.Net.Http; 3 | using System.Threading.Tasks; 4 | 5 | /// 6 | /// This interface represents access to the HttpBin.org API. 7 | /// 8 | public interface IHttpBinOrgApi 9 | { 10 | [Get("/status/{code}")] 11 | Task StatusCodes(int code); 12 | 13 | [Post("/post")] 14 | Task GetRequest(); 15 | } 16 | -------------------------------------------------------------------------------- /src/dotnet6/http-refit/AzFuncUni.Http/Http/IHttpBinOrgApi3.cs: -------------------------------------------------------------------------------- 1 | using Refit; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Net.Http; 5 | using System.Threading.Tasks; 6 | 7 | /// 8 | /// This interface represents access to the HttpBin.org API. 9 | /// 10 | public interface IHttpBinOrgApi3 11 | { 12 | [Get("/status/{code}")] 13 | Task StatusCodes(int code); 14 | 15 | [Post("/post")] 16 | Task GetRequest(Stream content = null, [Query] IDictionary query = default); 17 | } 18 | -------------------------------------------------------------------------------- /src/dotnet6/http-refit/AzFuncUni.Http/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /src/dotnet6/http-refit/AzFuncUni.Http/local-tests.http: -------------------------------------------------------------------------------- 1 | ### Exercise 1 POST: 2 | POST http://localhost:7071/api/HelloWorldHttpTrigger1 3 | Content-Type: text/plain 4 | 5 | AzureFunctionsUniversity 6 | 7 | ### Exercise 2 POST: 8 | POST http://localhost:7071/api/HelloWorldHttpTrigger2 9 | Content-Type: text/plain 10 | 11 | AzureFunctionsUniversity 12 | 13 | ### Exercise 3 POST with body: 14 | POST http://localhost:7071/api/HelloWorldHttpTrigger3 15 | Content-Type: text/plain 16 | 17 | AzureFunctionsUniversity 18 | 19 | ### Exercise 3 POST with query string: 20 | POST http://localhost:7071/api/HelloWorldHttpTrigger3?name=World! -------------------------------------------------------------------------------- /src/dotnet6/http-refit/AzFuncUni.Http/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "", 5 | "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/dotnet6/http/AzFuncUni.Http/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions", 4 | "ms-dotnettools.csharp" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /src/dotnet6/http/AzFuncUni.Http/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to .NET Functions", 6 | "type": "coreclr", 7 | "request": "attach", 8 | "processId": "${command:azureFunctions.pickProcess}" 9 | } 10 | ] 11 | } -------------------------------------------------------------------------------- /src/dotnet6/http/AzFuncUni.Http/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": "bin/Release/net6.0/publish", 3 | "azureFunctions.projectLanguage": "C#", 4 | "azureFunctions.projectRuntime": "~4", 5 | "debug.internalConsoleOptions": "neverOpen", 6 | "azureFunctions.preDeployTask": "publish (functions)" 7 | } -------------------------------------------------------------------------------- /src/dotnet6/http/AzFuncUni.Http/Person.cs: -------------------------------------------------------------------------------- 1 | namespace AzFuncUni.Http 2 | { 3 | public record Person 4 | { 5 | public string Name { get; init; } 6 | } 7 | } -------------------------------------------------------------------------------- /src/dotnet6/http/AzFuncUni.Http/Program.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | using Microsoft.Extensions.Configuration; 3 | using Microsoft.Extensions.Hosting; 4 | using Microsoft.Azure.Functions.Worker.Configuration; 5 | 6 | namespace AzFuncUni.Http 7 | { 8 | public class Program 9 | { 10 | public static void Main() 11 | { 12 | var host = new HostBuilder() 13 | .ConfigureFunctionsWorkerDefaults() 14 | .Build(); 15 | 16 | host.Run(); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /src/dotnet6/http/AzFuncUni.Http/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /src/dotnet6/http/AzFuncUni.Http/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "", 5 | "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/dotnet6/http/Homework.Http/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions", 4 | "ms-dotnettools.csharp" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /src/dotnet6/http/Homework.Http/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to .NET Functions", 6 | "type": "coreclr", 7 | "request": "attach", 8 | "processId": "${command:azureFunctions.pickProcess}" 9 | } 10 | ] 11 | } -------------------------------------------------------------------------------- /src/dotnet6/http/Homework.Http/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": "bin/Release/net6.0/publish", 3 | "azureFunctions.projectLanguage": "C#", 4 | "azureFunctions.projectRuntime": "~4", 5 | "debug.internalConsoleOptions": "neverOpen", 6 | "azureFunctions.preDeployTask": "publish (functions)" 7 | } -------------------------------------------------------------------------------- /src/dotnet6/http/Homework.Http/Program.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | using Microsoft.Extensions.Configuration; 3 | using Microsoft.Extensions.Hosting; 4 | using Microsoft.Azure.Functions.Worker.Configuration; 5 | 6 | namespace Homework.Http 7 | { 8 | public class Program 9 | { 10 | public static void Main() 11 | { 12 | var host = new HostBuilder() 13 | .ConfigureFunctionsWorkerDefaults() 14 | .Build(); 15 | 16 | host.Run(); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /src/dotnet6/http/Homework.Http/Resume.cs: -------------------------------------------------------------------------------- 1 | namespace Homework.Http 2 | { 3 | public class Resume 4 | { 5 | public string Name { get; set; } 6 | public string Website { get; set; } 7 | public string Country { get; set; } 8 | public string Skills { get; set; } 9 | public string CurrentRole { get; set; } 10 | } 11 | } -------------------------------------------------------------------------------- /src/dotnet6/http/Homework.Http/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /src/dotnet6/http/Homework.Http/local.http: -------------------------------------------------------------------------------- 1 | GET http://localhost:7071/api/ResumeApiHttpTrigger -------------------------------------------------------------------------------- /src/dotnet6/http/Homework.Http/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "", 5 | "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Blob/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions", 4 | "ms-dotnettools.csharp", 5 | "azurite.azurite" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Blob/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to .NET Functions", 6 | "type": "coreclr", 7 | "request": "attach", 8 | "processId": "${command:azureFunctions.pickProcess}" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Blob/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": "bin/Release/netcoreapp3.1/publish", 3 | "azureFunctions.projectLanguage": "C#", 4 | "azureFunctions.projectRuntime": "~3", 5 | "azureFunctions.preDeployTask": "publish" 6 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Blob/BlobConfig.cs: -------------------------------------------------------------------------------- 1 | namespace AzureFunctionsUniversity.Demo.Blob 2 | { 3 | public static class BlobConfig 4 | { 5 | public const string Container = "players"; 6 | } 7 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Blob/Models/Player.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace AzureFunctionsUniversity.Demo.Blob.Models 4 | { 5 | public class Player 6 | { 7 | public Player() 8 | { 9 | } 10 | 11 | [JsonProperty("id")] 12 | public string Id { get; set; } 13 | 14 | [JsonProperty("nickName")] 15 | public string NickName { get; set; } 16 | 17 | [JsonProperty("email")] 18 | public string Email { get; set; } 19 | 20 | [JsonProperty("region")] 21 | public string Region { get; set; } 22 | } 23 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Blob/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingExcludedTypes": "Request", 6 | "samplingSettings": { 7 | "isEnabled": true 8 | } 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Blob/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "UseDevelopmentStorage=true", 5 | "FUNCTIONS_WORKER_RUNTIME": "dotnet", 6 | "StorageAccount" : "UseDevelopmentStorage=true" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Blob/player-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "1", 3 | "nickName": "Iron Man", 4 | "email": "tony.stark@avengers.com", 5 | "location": { 6 | "region": "california", 7 | "country": "usa" 8 | } 9 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Configuration/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions", 4 | "ms-dotnettools.csharp" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Configuration/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to .NET Functions", 6 | "type": "coreclr", 7 | "request": "attach", 8 | "processId": "${command:azureFunctions.pickProcess}" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Configuration/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": "bin/Release/netcoreapp3.1/publish", 3 | "azureFunctions.projectLanguage": "C#", 4 | "azureFunctions.projectRuntime": "~3", 5 | "azureFunctions.preDeployTask": "publish" 6 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Configuration/IFunctionsHostBuilder.cs: -------------------------------------------------------------------------------- 1 | namespace AzureFunctions.Configuration 2 | { 3 | public interface IFunctionsHostBuilder 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Configuration/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingExcludedTypes": "Request", 6 | "samplingSettings": { 7 | "isEnabled": true 8 | } 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Configuration/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "", 5 | "FUNCTIONS_WORKER_RUNTIME": "dotnet", 6 | "ConfigurationValue": "Value from local Settings", 7 | "AppConfigurationConnectionString": "TODO_ADD_CONNECTIONSTRING_FROM_EXERCISE_5.3" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Cosmos/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions", 4 | "ms-dotnettools.csharp" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Cosmos/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to .NET Functions", 6 | "type": "coreclr", 7 | "request": "attach", 8 | "processId": "${command:azureFunctions.pickProcess}" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Cosmos/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": "bin/Release/netcoreapp3.1/publish", 3 | "azureFunctions.projectLanguage": "C#", 4 | "azureFunctions.projectRuntime": "~3", 5 | "azureFunctions.preDeployTask": "publish" 6 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Cosmos/Models/Player.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace AzureFunctionsUniversity.Cosmos.Models 4 | { 5 | public class Player 6 | { 7 | [JsonProperty("id")] 8 | public string Id { get; set; } 9 | 10 | [JsonProperty("nickName")] 11 | public string NickName { get; set; } 12 | 13 | [JsonProperty("playerId")] 14 | public int PlayerId { get; set; } 15 | 16 | [JsonProperty("region")] 17 | public string Region { get; set; } 18 | } 19 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Cosmos/Models/TeamPlayer.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace AzureFunctionsUniversity.Cosmos.Models 4 | { 5 | public class TeamPlayer 6 | { 7 | [JsonProperty("id")] 8 | public string Id { get; set; } 9 | 10 | [JsonProperty("playerName")] 11 | public string PlayerName { get; set; } 12 | 13 | [JsonProperty("teamId")] 14 | public int TeamId { get; set; } 15 | 16 | [JsonProperty("region")] 17 | public string Region { get; set; } 18 | } 19 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Cosmos/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingExcludedTypes": "Request", 6 | "samplingSettings": { 7 | "isEnabled": true 8 | } 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Cosmos/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "UseDevelopmentStorage=true", 5 | "FUNCTIONS_WORKER_RUNTIME": "dotnet", 6 | "QueueConnection": "UseDevelopmentStorage=true", 7 | "CosmosDBConnection": "AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==" 8 | } 9 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Http/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions", 4 | "ms-dotnettools.csharp" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Http/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to .NET Functions", 6 | "type": "coreclr", 7 | "request": "attach", 8 | "processId": "${command:azureFunctions.pickProcess}" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Http/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": "bin/Release/netcoreapp3.1/publish", 3 | "azureFunctions.projectLanguage": "C#", 4 | "azureFunctions.projectRuntime": "~3", 5 | "azureFunctions.preDeployTask": "publish" 6 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Http/Person.cs: -------------------------------------------------------------------------------- 1 | namespace AzureFunctionsUniversity.Demo 2 | { 3 | public class Person 4 | { 5 | public string Name { get; set; } 6 | } 7 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Http/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingExcludedTypes": "Request", 6 | "samplingSettings": { 7 | "isEnabled": true 8 | } 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Http/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "", 5 | "FUNCTIONS_WORKER_RUNTIME": "dotnet" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Queue/.editorconfig: -------------------------------------------------------------------------------- 1 | # This file is the top-most EditorConfig file 2 | root = true 3 | 4 | # All Files 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 4 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | 12 | [*.cs] 13 | dotnet_sort_system_directives_first = true 14 | 15 | # StyleCop 16 | dotnet_diagnostic.SA0001.severity = none 17 | dotnet_diagnostic.SA1116.severity = none 18 | dotnet_diagnostic.SA1137.severity = none 19 | dotnet_diagnostic.SA1200.severity = none 20 | dotnet_diagnostic.SA1633.severity = none 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Queue/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions", 4 | "ms-dotnettools.csharp", 5 | "azurite.azurite", 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Queue/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to .NET Functions", 6 | "type": "coreclr", 7 | "request": "attach", 8 | "processId": "${command:azureFunctions.pickProcess}" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Queue/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": "bin/Release/netcoreapp3.1/publish", 3 | "azureFunctions.projectLanguage": "C#", 4 | "azureFunctions.projectRuntime": "~3", 5 | "azureFunctions.preDeployTask": "publish" 6 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Queue/Models/Player.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace AzureFunctionsUniversity.Demo.Queue.Models 4 | { 5 | public class Player 6 | { 7 | public Player() 8 | { 9 | } 10 | 11 | [JsonProperty("id")] 12 | public string Id { get; set; } 13 | 14 | [JsonProperty("nickName")] 15 | public string NickName { get; set; } 16 | 17 | [JsonProperty("email")] 18 | public string Email { get; set; } 19 | 20 | [JsonProperty("region")] 21 | public string Region { get; set; } 22 | } 23 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Queue/QueueConfig.cs: -------------------------------------------------------------------------------- 1 | namespace AzureFunctionsUniversity.Demo.Queue 2 | { 3 | public static class QueueConfig 4 | { 5 | public const string NewPlayerItems = "newplayer-items"; 6 | 7 | public const string NewPlayerErrorItems = "newplayer-error-items"; 8 | } 9 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Queue/Trigger/NewPlayerQueueTrigger.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Azure.WebJobs; 2 | using Microsoft.Extensions.Logging; 3 | 4 | namespace AzureFunctionsUniversity.Demo 5 | { 6 | public static class NewPlayerQueueTrigger 7 | { 8 | [FunctionName("NewPlayerQueueTrigger")] 9 | public static void Run( 10 | [QueueTrigger("sample-items", 11 | Connection = "azfuncstor_STORAGE")]string myQueueItem, 12 | ILogger log) 13 | { 14 | log.LogInformation($"C# Queue trigger function processed: {myQueueItem}"); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Queue/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingExcludedTypes": "Request", 6 | "samplingSettings": { 7 | "isEnabled": true 8 | } 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Queue/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "UseDevelopmentStorage=true", 5 | "FUNCTIONS_WORKER_RUNTIME": "dotnet", 6 | "azfuncstor_STORAGE" : "UseDevelopmentStorage=true" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Table/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions", 4 | "ms-dotnettools.csharp" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Table/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to .NET Functions", 6 | "type": "coreclr", 7 | "request": "attach", 8 | "processId": "${command:azureFunctions.pickProcess}" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Table/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": "bin/Release/netcoreapp3.1/publish", 3 | "azureFunctions.projectLanguage": "C#", 4 | "azureFunctions.projectRuntime": "~3", 5 | "azureFunctions.preDeployTask": "publish" 6 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Table/TableConfig.cs: -------------------------------------------------------------------------------- 1 | namespace AzureFunctionsUniversity.Table 2 | { 3 | public static class TableConfig 4 | { 5 | public const string Table = "players"; 6 | } 7 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Table/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingExcludedTypes": "Request", 6 | "samplingSettings": { 7 | "isEnabled": true 8 | } 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /src/dotnetcore31/AzureFunctions.Table/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "UseDevelopmentStorage=true", 5 | "FUNCTIONS_WORKER_RUNTIME": "dotnet" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/dotnetcore31/homework/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions", 4 | "ms-dotnettools.csharp" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /src/dotnetcore31/homework/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to .NET Functions", 6 | "type": "coreclr", 7 | "request": "attach", 8 | "processId": "${command:azureFunctions.pickProcess}" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /src/dotnetcore31/homework/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": "resume-api/bin/Release/netcoreapp3.1/publish", 3 | "azureFunctions.projectLanguage": "C#", 4 | "azureFunctions.projectRuntime": "~3", 5 | "azureFunctions.preDeployTask": "publish" 6 | } -------------------------------------------------------------------------------- /src/dotnetcore31/homework/resume-api/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingExcludedTypes": "Request", 6 | "samplingSettings": { 7 | "isEnabled": true 8 | } 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /src/dotnetcore31/homework/resume-api/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "UseDevelopmentStorage=true", 5 | "FUNCTIONS_WORKER_RUNTIME": "dotnet" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions", 4 | "ms-python.python", 5 | "ms-dotnettools.csharp", 6 | "azurite.azurite", 7 | "streetsidesoftware.code-spell-checker", 8 | "davidanson.vscode-markdownlint", 9 | "blackmist.linkcheckmd", 10 | "vsls-contrib.codetour" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to Python Functions", 6 | "type": "python", 7 | "request": "attach", 8 | "port": 9091, 9 | "preLaunchTask": "func: host start" 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": "src/python/AzureFunctions.Http", 3 | "azureFunctions.projectLanguage": "Python", 4 | "azureFunctions.projectRuntime": "~4", 5 | "debug.internalConsoleOptions": "neverOpen", 6 | "azureFunctions.preDeployTask": "publish", 7 | "cSpell.language": "en", 8 | "azureFunctions.scmDoBuildDuringDeployment": true, 9 | "azureFunctions.pythonVenv": ".venv", 10 | "azureFunctions.projectSubpath": "src/python/AzureFunctions.Http" 11 | } -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/01CreatingAFunctionApp/.funcignore: -------------------------------------------------------------------------------- 1 | .git* 2 | .vscode 3 | local.settings.json 4 | test 5 | .venv -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/01CreatingAFunctionApp/HelloWorldHttpTrigger/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "scriptFile": "__init__.py", 3 | "bindings": [ 4 | { 5 | "authLevel": "function", 6 | "type": "httpTrigger", 7 | "direction": "in", 8 | "name": "req", 9 | "methods": [ 10 | "get", 11 | "post" 12 | ] 13 | }, 14 | { 15 | "type": "http", 16 | "direction": "out", 17 | "name": "$return" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/01CreatingAFunctionApp/HelloWorldHttpTrigger/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/01CreatingAFunctionApp/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[2.*, 3.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/01CreatingAFunctionApp/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "", 5 | "FUNCTIONS_WORKER_RUNTIME": "python" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/01CreatingAFunctionApp/requirements.txt: -------------------------------------------------------------------------------- 1 | # DO NOT include azure-functions-worker in this file 2 | # The Python Worker is managed by Azure Functions platform 3 | # Manually managing azure-functions-worker may cause unexpected issues 4 | 5 | azure-functions 6 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/02ChangingTheTemplateForGetRequest/.funcignore: -------------------------------------------------------------------------------- 1 | .git* 2 | .vscode 3 | local.settings.json 4 | test 5 | .venv -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/02ChangingTheTemplateForGetRequest/HelloWorldHttpTrigger/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "scriptFile": "__init__.py", 3 | "bindings": [ 4 | { 5 | "authLevel": "function", 6 | "type": "httpTrigger", 7 | "direction": "in", 8 | "name": "req", 9 | "methods": [ 10 | "get" 11 | ] 12 | }, 13 | { 14 | "type": "http", 15 | "direction": "out", 16 | "name": "$return" 17 | } 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/02ChangingTheTemplateForGetRequest/HelloWorldHttpTrigger/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/02ChangingTheTemplateForGetRequest/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[2.*, 3.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/02ChangingTheTemplateForGetRequest/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "", 5 | "FUNCTIONS_WORKER_RUNTIME": "python" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/02ChangingTheTemplateForGetRequest/requirements.txt: -------------------------------------------------------------------------------- 1 | # DO NOT include azure-functions-worker in this file 2 | # The Python Worker is managed by Azure Functions platform 3 | # Manually managing azure-functions-worker may cause unexpected issues 4 | 5 | azure-functions 6 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/03ChangingTheTemplateForPostRequests/.funcignore: -------------------------------------------------------------------------------- 1 | .git* 2 | .vscode 3 | local.settings.json 4 | test 5 | .venv -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/03ChangingTheTemplateForPostRequests/HelloWorldHttpTrigger/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "scriptFile": "__init__.py", 3 | "bindings": [ 4 | { 5 | "authLevel": "function", 6 | "type": "httpTrigger", 7 | "direction": "in", 8 | "name": "req", 9 | "methods": [ 10 | "get", 11 | "post" 12 | ] 13 | }, 14 | { 15 | "type": "http", 16 | "direction": "out", 17 | "name": "$return" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/03ChangingTheTemplateForPostRequests/HelloWorldHttpTrigger/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/03ChangingTheTemplateForPostRequests/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[2.*, 3.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/03ChangingTheTemplateForPostRequests/requirements.txt: -------------------------------------------------------------------------------- 1 | # DO NOT include azure-functions-worker in this file 2 | # The Python Worker is managed by Azure Functions platform 3 | # Manually managing azure-functions-worker may cause unexpected issues 4 | 5 | azure-functions 6 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/04AddingANewFunctionForPostRequests/.funcignore: -------------------------------------------------------------------------------- 1 | .git* 2 | .vscode 3 | local.settings.json 4 | test 5 | .venv -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/04AddingANewFunctionForPostRequests/CustomGreetingHttpTrigger/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "scriptFile": "__init__.py", 3 | "bindings": [ 4 | { 5 | "authLevel": "function", 6 | "type": "httpTrigger", 7 | "direction": "in", 8 | "name": "req", 9 | "methods": [ 10 | "post" 11 | ] 12 | }, 13 | { 14 | "type": "http", 15 | "direction": "out", 16 | "name": "$return" 17 | } 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/04AddingANewFunctionForPostRequests/CustomGreetingHttpTrigger/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/04AddingANewFunctionForPostRequests/HelloWorldHttpTrigger/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "scriptFile": "__init__.py", 3 | "bindings": [ 4 | { 5 | "authLevel": "function", 6 | "type": "httpTrigger", 7 | "direction": "in", 8 | "name": "req", 9 | "methods": [ 10 | "get", 11 | "post" 12 | ] 13 | }, 14 | { 15 | "type": "http", 16 | "direction": "out", 17 | "name": "$return" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/04AddingANewFunctionForPostRequests/HelloWorldHttpTrigger/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/04AddingANewFunctionForPostRequests/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[2.*, 3.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/04AddingANewFunctionForPostRequests/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "", 5 | "FUNCTIONS_WORKER_RUNTIME": "python" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/04AddingANewFunctionForPostRequests/requirements.txt: -------------------------------------------------------------------------------- 1 | # DO NOT include azure-functions-worker in this file 2 | # The Python Worker is managed by Azure Functions platform 3 | # Manually managing azure-functions-worker may cause unexpected issues 4 | 5 | azure-functions 6 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/homework/homework_solution/.funcignore: -------------------------------------------------------------------------------- 1 | .git* 2 | .vscode 3 | local.settings.json 4 | test 5 | .venv -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/homework/homework_solution/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[2.*, 3.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/homework/homework_solution/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "", 5 | "FUNCTIONS_WORKER_RUNTIME": "python" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/homework/homework_solution/requirements.txt: -------------------------------------------------------------------------------- 1 | # DO NOT include azure-functions-worker in this file 2 | # The Python Worker is managed by Azure Functions platform 3 | # Manually managing azure-functions-worker may cause unexpected issues 4 | 5 | azure-functions 6 | nltk 7 | numpy 8 | six 9 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/homework/homework_solution/response_text_processing/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "scriptFile": "__init__.py", 3 | "bindings": [ 4 | { 5 | "authLevel": "function", 6 | "type": "httpTrigger", 7 | "direction": "in", 8 | "name": "req", 9 | "methods": [ 10 | "get", 11 | "post" 12 | ] 13 | }, 14 | { 15 | "type": "http", 16 | "direction": "out", 17 | "name": "$return" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /src/python/AzureFunctions.Http/homework/homework_solution/response_text_processing/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } -------------------------------------------------------------------------------- /src/python/README.md: -------------------------------------------------------------------------------- 1 | Python source code for all the lessons goes here. 2 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/.funcignore: -------------------------------------------------------------------------------- 1 | *.js.map 2 | *.ts 3 | .git* 4 | .vscode 5 | local.settings.json 6 | test 7 | tsconfig.json -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to Node Functions", 6 | "type": "node", 7 | "request": "attach", 8 | "port": 9229, 9 | "preLaunchTask": "func: host start" 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": ".", 3 | "azureFunctions.postDeployTask": "npm install", 4 | "azureFunctions.projectLanguage": "TypeScript", 5 | "azureFunctions.projectRuntime": "~3", 6 | "debug.internalConsoleOptions": "neverOpen", 7 | "azureFunctions.preDeployTask": "npm prune" 8 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/Exercise2PlainBlobOutputBindings/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "function", 5 | "type": "httpTrigger", 6 | "direction": "in", 7 | "name": "req", 8 | "methods": [ 9 | "post" 10 | ] 11 | }, 12 | { 13 | "name": "playerBlob", 14 | "type": "blob", 15 | "path": "players/out/stored-input.json", 16 | "direction": "out" 17 | }, 18 | { 19 | "type": "http", 20 | "direction": "out", 21 | "name": "res" 22 | } 23 | ], 24 | "scriptFile": "../dist/Exercise2PlainBlobOutputBindings/index.js" 25 | } 26 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/Exercise2PlainBlobOutputBindings/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/Exercise3BindingExpressionsForBlobOutputBindings/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "function", 5 | "type": "httpTrigger", 6 | "direction": "in", 7 | "name": "req", 8 | "methods": [ 9 | "post" 10 | ] 11 | }, 12 | { 13 | "name": "playerBlob", 14 | "type": "blob", 15 | "path": "players/out/stored-input-{rand-guid}.json", 16 | "direction": "out" 17 | }, 18 | { 19 | "type": "http", 20 | "direction": "out", 21 | "name": "res" 22 | } 23 | ], 24 | "scriptFile": "../dist/Exercise3BindingExpressionsForBlobOutputBindings/index.js" 25 | } 26 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/Exercise3BindingExpressionsForBlobOutputBindings/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/Exercise4PayloadDataOfTriggerForBlobOutputBindings/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/Exercise5PlainBlobInputBindings/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "function", 5 | "type": "httpTrigger", 6 | "direction": "in", 7 | "name": "req", 8 | "methods": [ 9 | "get" 10 | ], 11 | "route": "Exercise5/GetPlayerFromBlob/{id}" 12 | }, 13 | { 14 | "name": "playerBlobIn", 15 | "type": "blob", 16 | "path": "players/in/player-{id}.json", 17 | "direction": "in" 18 | }, 19 | { 20 | "type": "http", 21 | "direction": "out", 22 | "name": "res" 23 | } 24 | ], 25 | "scriptFile": "../dist/Exercise5PlainBlobInputBindings/index.js" 26 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/Exercise5PlainBlobInputBindings/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/Exercise6BlobStorageSdkForReading/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "function", 5 | "type": "httpTrigger", 6 | "direction": "in", 7 | "name": "req", 8 | "methods": [ 9 | "get" 10 | ], 11 | "route": "Exercise6/GetPlayerFromBlob/{id?}" 12 | }, 13 | { 14 | "name": "playerBlobIn", 15 | "type": "blob", 16 | "path": "players/in/player-{id}.json", 17 | "direction": "in" 18 | }, 19 | { 20 | "type": "http", 21 | "direction": "out", 22 | "name": "res" 23 | } 24 | ], 25 | "scriptFile": "../dist/Exercise6BlobStorageSdkForReading/index.js" 26 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/Exercise6BlobStorageSdkForReading/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/Exercise7BlobTriggeredFunction/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "myBlob", 5 | "type": "blobTrigger", 6 | "direction": "in", 7 | "path": "samples-workitems/{name}", 8 | "connection": "azurefuncuniblobts_STORAGE" 9 | } 10 | ], 11 | "scriptFile": "../dist/Exercise7BlobTriggeredFunction/index.js" 12 | } 13 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/Exercise7BlobTriggeredFunction/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Azure Function for Exercise 7: HelloWorldBlobTrigger 3 | */ 4 | 5 | import { AzureFunction, Context } from "@azure/functions" 6 | 7 | const blobTrigger: AzureFunction = async function (context: Context, myBlob: any): Promise { 8 | 9 | context.log("Blob trigger function processed blob \n Name:", context.bindingData.name, "\n Blob Size:", myBlob.length, "Bytes") 10 | 11 | } 12 | 13 | export default blobTrigger 14 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/Exercise7BlobTriggeredFunction/sample.dat: -------------------------------------------------------------------------------- 1 | samples-workitems/workitem.txt -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/files/player-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "1", 3 | "nickName": "Starlord", 4 | "email":"peter.quill@avengers.com", 5 | "location": { 6 | "region": "missouri", 7 | "country": "usa" 8 | } 9 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[1.*, 2.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "UseDevelopmentStorage=true", 5 | "FUNCTIONS_WORKER_RUNTIME": "node", 6 | "azurefuncuniblobts_STORAGE": "UseDevelopmentStorage=true" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "azfuncuni-blob", 3 | "version": "1.0.0", 4 | "description": "", 5 | "scripts": { 6 | "build": "tsc", 7 | "watch": "tsc -w", 8 | "prestart": "npm run build", 9 | "start": "func start", 10 | "test": "echo \"No tests yet...\"" 11 | }, 12 | "dependencies": { 13 | "@azure/storage-blob": "12.5.0" 14 | }, 15 | "devDependencies": { 16 | "@azure/functions": "^1.2.3", 17 | "typescript": "^4.0.0" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/player-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "1", 3 | "nickName": "Iron Man", 4 | "email": "tony.stark@avengers.com", 5 | "location": { 6 | "region": "california", 7 | "country": "usa" 8 | } 9 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/proxies.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/proxies", 3 | "proxies": {} 4 | } 5 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Blob/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "dist", 6 | "rootDir": ".", 7 | "sourceMap": true, 8 | "strict": false 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to Node Functions", 6 | "type": "node", 7 | "request": "attach", 8 | "port": 9229, 9 | "preLaunchTask": "func: host start" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.projectSubpath": "01CreatingAFunctionApp", 3 | "azureFunctions.deploySubpath": "01CreatingAFunctionApp", 4 | "azureFunctions.postDeployTask": "npm install", 5 | "azureFunctions.projectLanguage": "TypeScript", 6 | "azureFunctions.projectRuntime": "~3", 7 | "azureFunctions.preDeployTask": "npm prune" 8 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/01CreatingAFunctionApp/.funcignore: -------------------------------------------------------------------------------- 1 | *.js.map 2 | *.ts 3 | .git* 4 | .vscode 5 | local.settings.json 6 | test 7 | tsconfig.json -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/01CreatingAFunctionApp/HelloWorldHttpTrigger/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "function", 5 | "type": "httpTrigger", 6 | "direction": "in", 7 | "name": "req", 8 | "methods": [ 9 | "get", 10 | "post" 11 | ] 12 | }, 13 | { 14 | "type": "http", 15 | "direction": "out", 16 | "name": "res" 17 | } 18 | ], 19 | "scriptFile": "../dist/HelloWorldHttpTrigger/index.js" 20 | } 21 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/01CreatingAFunctionApp/HelloWorldHttpTrigger/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/01CreatingAFunctionApp/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[1.*, 2.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/01CreatingAFunctionApp/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "", 5 | "FUNCTIONS_WORKER_RUNTIME": "node" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/01CreatingAFunctionApp/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "azurefunctions.http", 3 | "version": "1.0.0", 4 | "description": "", 5 | "scripts": { 6 | "build": "tsc", 7 | "watch": "tsc -w", 8 | "prestart": "npm run build", 9 | "start": "func start", 10 | "test": "echo \"No tests yet...\"" 11 | }, 12 | "devDependencies": { 13 | "@azure/functions": "^1.2.3", 14 | "typescript": "^4.0.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/01CreatingAFunctionApp/proxies.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/proxies", 3 | "proxies": {} 4 | } 5 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/01CreatingAFunctionApp/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "dist", 6 | "rootDir": ".", 7 | "sourceMap": true, 8 | "strict": false 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/02ChangingTheTemplateForGetRequest/.funcignore: -------------------------------------------------------------------------------- 1 | *.js.map 2 | *.ts 3 | .git* 4 | .vscode 5 | local.settings.json 6 | test 7 | tsconfig.json -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/02ChangingTheTemplateForGetRequest/HelloWorldHttpTrigger/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "function", 5 | "type": "httpTrigger", 6 | "direction": "in", 7 | "name": "req", 8 | "methods": [ 9 | "get" 10 | ] 11 | }, 12 | { 13 | "type": "http", 14 | "direction": "out", 15 | "name": "res" 16 | } 17 | ], 18 | "scriptFile": "../dist/HelloWorldHttpTrigger/index.js" 19 | } 20 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/02ChangingTheTemplateForGetRequest/HelloWorldHttpTrigger/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/02ChangingTheTemplateForGetRequest/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[1.*, 2.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/02ChangingTheTemplateForGetRequest/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "", 5 | "FUNCTIONS_WORKER_RUNTIME": "node" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/02ChangingTheTemplateForGetRequest/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "azurefunctions.http", 3 | "version": "1.0.0", 4 | "description": "", 5 | "scripts": { 6 | "build": "tsc", 7 | "watch": "tsc -w", 8 | "prestart": "npm run build", 9 | "start": "func start", 10 | "test": "echo \"No tests yet...\"" 11 | }, 12 | "devDependencies": { 13 | "@azure/functions": "^1.2.3", 14 | "typescript": "^4.0.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/02ChangingTheTemplateForGetRequest/proxies.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/proxies", 3 | "proxies": {} 4 | } 5 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/02ChangingTheTemplateForGetRequest/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "dist", 6 | "rootDir": ".", 7 | "sourceMap": true, 8 | "strict": false 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/03ChangingTheTemplateForPostRequests/.funcignore: -------------------------------------------------------------------------------- 1 | *.js.map 2 | *.ts 3 | .git* 4 | .vscode 5 | local.settings.json 6 | test 7 | tsconfig.json -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/03ChangingTheTemplateForPostRequests/HelloWorldHttpTrigger/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "function", 5 | "type": "httpTrigger", 6 | "direction": "in", 7 | "name": "req", 8 | "methods": [ 9 | "get", 10 | "post" 11 | ] 12 | }, 13 | { 14 | "type": "http", 15 | "direction": "out", 16 | "name": "res" 17 | } 18 | ], 19 | "scriptFile": "../dist/HelloWorldHttpTrigger/index.js" 20 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/03ChangingTheTemplateForPostRequests/HelloWorldHttpTrigger/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/03ChangingTheTemplateForPostRequests/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[1.*, 2.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/03ChangingTheTemplateForPostRequests/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "", 5 | "FUNCTIONS_WORKER_RUNTIME": "node" 6 | } 7 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/03ChangingTheTemplateForPostRequests/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "azurefunctions.http", 3 | "version": "1.0.0", 4 | "description": "", 5 | "scripts": { 6 | "build": "tsc", 7 | "watch": "tsc -w", 8 | "prestart": "npm run build", 9 | "start": "func start", 10 | "test": "echo \"No tests yet...\"" 11 | }, 12 | "devDependencies": { 13 | "@azure/functions": "^1.2.3", 14 | "typescript": "^4.0.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/03ChangingTheTemplateForPostRequests/proxies.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/proxies", 3 | "proxies": {} 4 | } 5 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/03ChangingTheTemplateForPostRequests/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "dist", 6 | "rootDir": ".", 7 | "sourceMap": true, 8 | "strict": false 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/04AddingANewFunctionForPostRequests/.funcignore: -------------------------------------------------------------------------------- 1 | *.js.map 2 | *.ts 3 | .git* 4 | .vscode 5 | local.settings.json 6 | test 7 | tsconfig.json -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/04AddingANewFunctionForPostRequests/CustomGreetingHttpTrigger/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "function", 5 | "type": "httpTrigger", 6 | "direction": "in", 7 | "name": "req", 8 | "methods": [ 9 | "post" 10 | ] 11 | }, 12 | { 13 | "type": "http", 14 | "direction": "out", 15 | "name": "res" 16 | } 17 | ], 18 | "scriptFile": "../dist/CustomGreetingHttpTrigger/index.js" 19 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/04AddingANewFunctionForPostRequests/CustomGreetingHttpTrigger/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/04AddingANewFunctionForPostRequests/HelloWorldHttpTrigger/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "function", 5 | "type": "httpTrigger", 6 | "direction": "in", 7 | "name": "req", 8 | "methods": [ 9 | "get", 10 | "post" 11 | ] 12 | }, 13 | { 14 | "type": "http", 15 | "direction": "out", 16 | "name": "res" 17 | } 18 | ], 19 | "scriptFile": "../dist/HelloWorldHttpTrigger/index.js" 20 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/04AddingANewFunctionForPostRequests/HelloWorldHttpTrigger/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/04AddingANewFunctionForPostRequests/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[1.*, 2.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/04AddingANewFunctionForPostRequests/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "", 5 | "FUNCTIONS_WORKER_RUNTIME": "node" 6 | } 7 | } -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/04AddingANewFunctionForPostRequests/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "azurefunctions.http", 3 | "version": "1.0.0", 4 | "description": "", 5 | "scripts": { 6 | "build": "tsc", 7 | "watch": "tsc -w", 8 | "prestart": "npm run build", 9 | "start": "func start", 10 | "test": "echo \"No tests yet...\"" 11 | }, 12 | "devDependencies": { 13 | "@azure/functions": "^1.2.3", 14 | "typescript": "^4.0.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/04AddingANewFunctionForPostRequests/proxies.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/proxies", 3 | "proxies": {} 4 | } 5 | -------------------------------------------------------------------------------- /src/typescript/AzureFunctions.Http/04AddingANewFunctionForPostRequests/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "dist", 6 | "rootDir": ".", 7 | "sourceMap": true, 8 | "strict": false 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/01DurableFunctionApp-FanOutFanIn/.funcignore: -------------------------------------------------------------------------------- 1 | *.js.map 2 | *.ts 3 | .git* 4 | .vscode 5 | local.settings.json 6 | test 7 | tsconfig.json -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/01DurableFunctionApp-FanOutFanIn/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/01DurableFunctionApp-FanOutFanIn/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to Node Functions", 6 | "type": "node", 7 | "request": "attach", 8 | "port": 9229, 9 | "preLaunchTask": "func: host start" 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/01DurableFunctionApp-FanOutFanIn/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": ".", 3 | "azureFunctions.postDeployTask": "npm install (functions)", 4 | "azureFunctions.projectLanguage": "TypeScript", 5 | "azureFunctions.projectRuntime": "~3", 6 | "debug.internalConsoleOptions": "neverOpen", 7 | "azureFunctions.preDeployTask": "npm prune (functions)" 8 | } -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/01DurableFunctionApp-FanOutFanIn/AccessCardCreationActivity/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "input", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/AccessCardCreationActivity/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/01DurableFunctionApp-FanOutFanIn/AccessCardCreationActivity/index.ts: -------------------------------------------------------------------------------- 1 | import { AzureFunction, Context } from "@azure/functions" 2 | 3 | const activityFunction: AzureFunction = async function (context: Context): Promise { 4 | 5 | const message = `Access card created for ${context.bindings.input.name} starting on ${context.bindings.input.startdate}` 6 | 7 | context.log(message) 8 | 9 | return message 10 | 11 | } 12 | 13 | export default activityFunction 14 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/01DurableFunctionApp-FanOutFanIn/ItEquipmentOrderActivity/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "input", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/ItEquipmentOrderActivity/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/01DurableFunctionApp-FanOutFanIn/ItEquipmentOrderActivity/index.ts: -------------------------------------------------------------------------------- 1 | import { AzureFunction, Context } from "@azure/functions" 2 | 3 | const activityFunction: AzureFunction = async function (context: Context): Promise { 4 | 5 | const message = `Role specific IT equipment (role: ${context.bindings.input.role}) was ordered for ${context.bindings.input.name} starting on ${context.bindings.input.startdate}` 6 | 7 | context.log(message) 8 | 9 | return message 10 | 11 | } 12 | 13 | export default activityFunction 14 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/01DurableFunctionApp-FanOutFanIn/OnboardingOrchestrator/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "context", 5 | "type": "orchestrationTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/OnboardingOrchestrator/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/01DurableFunctionApp-FanOutFanIn/OnboardingStarter/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "anonymous", 5 | "name": "req", 6 | "type": "httpTrigger", 7 | "direction": "in", 8 | "route": "orchestrators/{functionName}", 9 | "methods": [ 10 | "post" 11 | ] 12 | }, 13 | { 14 | "name": "$return", 15 | "type": "http", 16 | "direction": "out" 17 | }, 18 | { 19 | "name": "starter", 20 | "type": "orchestrationClient", 21 | "direction": "in" 22 | } 23 | ], 24 | "scriptFile": "../dist/OnboardingStarter/index.js" 25 | } 26 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/01DurableFunctionApp-FanOutFanIn/OnboardingStarter/index.ts: -------------------------------------------------------------------------------- 1 | import * as df from "durable-functions" 2 | import { AzureFunction, Context, HttpRequest } from "@azure/functions" 3 | 4 | const httpStart: AzureFunction = async function (context: Context, req: HttpRequest): Promise { 5 | const client = df.getClient(context); 6 | const instanceId = await client.startNew(req.params.functionName, undefined, req.body) 7 | 8 | context.log(`Started orchestration with ID = '${instanceId}'.`) 9 | 10 | return client.createCheckStatusResponse(context.bindingData.req, instanceId) 11 | } 12 | 13 | export default httpStart 14 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/01DurableFunctionApp-FanOutFanIn/WelcomeEmailActivity/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "input", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/WelcomeEmailActivity/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/01DurableFunctionApp-FanOutFanIn/WelcomeEmailActivity/index.ts: -------------------------------------------------------------------------------- 1 |  2 | import { AzureFunction, Context } from "@azure/functions" 3 | 4 | const activityFunction: AzureFunction = async function (context: Context): Promise { 5 | 6 | const message = `Welcome ${context.bindings.input.name}! Happy to have you on board and see you on ${context.bindings.input.startdate}!` 7 | 8 | context.log(message) 9 | 10 | return message 11 | 12 | } 13 | 14 | export default activityFunction 15 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/01DurableFunctionApp-FanOutFanIn/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[2.*, 3.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/01DurableFunctionApp-FanOutFanIn/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "UseDevelopmentStorage=true", 5 | "FUNCTIONS_WORKER_RUNTIME": "node" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/01DurableFunctionApp-FanOutFanIn/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "onboardingbydurablefunction", 3 | "version": "1.0.0", 4 | "description": "", 5 | "scripts": { 6 | "build": "tsc", 7 | "watch": "tsc -w", 8 | "prestart": "npm run build", 9 | "start": "func start", 10 | "test": "echo \"No tests yet...\"" 11 | }, 12 | "dependencies": { 13 | "@types/node": "^10.14.2", 14 | "durable-functions": "^1.5.4" 15 | }, 16 | "devDependencies": { 17 | "@azure/functions": "^1.2.3", 18 | "typescript": "^4.0.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/01DurableFunctionApp-FanOutFanIn/proxies.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/proxies", 3 | "proxies": {} 4 | } 5 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/01DurableFunctionApp-FanOutFanIn/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "dist", 6 | "rootDir": ".", 7 | "sourceMap": true, 8 | "strict": false 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/02DurableFunctionApp-SubOrchestration/.funcignore: -------------------------------------------------------------------------------- 1 | *.js.map 2 | *.ts 3 | .git* 4 | .vscode 5 | local.settings.json 6 | test 7 | tsconfig.json -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/02DurableFunctionApp-SubOrchestration/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/02DurableFunctionApp-SubOrchestration/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to Node Functions", 6 | "type": "node", 7 | "request": "attach", 8 | "port": 9229, 9 | "preLaunchTask": "func: host start" 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/02DurableFunctionApp-SubOrchestration/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": ".", 3 | "azureFunctions.postDeployTask": "npm install (functions)", 4 | "azureFunctions.projectLanguage": "TypeScript", 5 | "azureFunctions.projectRuntime": "~3", 6 | "debug.internalConsoleOptions": "neverOpen", 7 | "azureFunctions.preDeployTask": "npm prune (functions)" 8 | } -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/02DurableFunctionApp-SubOrchestration/AccessCardCreationActivity/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "input", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/AccessCardCreationActivity/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/02DurableFunctionApp-SubOrchestration/AccessCardCreationActivity/index.ts: -------------------------------------------------------------------------------- 1 | import { AzureFunction, Context } from "@azure/functions" 2 | 3 | const activityFunction: AzureFunction = async function (context: Context): Promise { 4 | 5 | const message = `Access card created for ${context.bindings.input.name} starting on ${context.bindings.input.startdate}` 6 | 7 | context.log(message) 8 | 9 | return message 10 | 11 | } 12 | 13 | export default activityFunction 14 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/02DurableFunctionApp-SubOrchestration/ItEquipmentOrderActivity/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "input", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/ItEquipmentOrderActivity/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/02DurableFunctionApp-SubOrchestration/ItEquipmentOrderActivity/index.ts: -------------------------------------------------------------------------------- 1 | import { AzureFunction, Context } from "@azure/functions" 2 | 3 | const activityFunction: AzureFunction = async function (context: Context): Promise { 4 | 5 | const message = `Role specific IT equipment (role: ${context.bindings.input.role}) was ordered for ${context.bindings.input.name} starting on ${context.bindings.input.startdate}` 6 | 7 | context.log(message) 8 | 9 | return message 10 | 11 | } 12 | 13 | export default activityFunction 14 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/02DurableFunctionApp-SubOrchestration/OnboardingOrchestrator/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "context", 5 | "type": "orchestrationTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/OnboardingOrchestrator/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/02DurableFunctionApp-SubOrchestration/OnboardingStarter/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "anonymous", 5 | "name": "req", 6 | "type": "httpTrigger", 7 | "direction": "in", 8 | "route": "orchestrators/{functionName}", 9 | "methods": [ 10 | "post" 11 | ] 12 | }, 13 | { 14 | "name": "$return", 15 | "type": "http", 16 | "direction": "out" 17 | }, 18 | { 19 | "name": "starter", 20 | "type": "orchestrationClient", 21 | "direction": "in" 22 | } 23 | ], 24 | "scriptFile": "../dist/OnboardingStarter/index.js" 25 | } 26 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/02DurableFunctionApp-SubOrchestration/OnboardingStarter/index.ts: -------------------------------------------------------------------------------- 1 | import * as df from "durable-functions" 2 | import { AzureFunction, Context, HttpRequest } from "@azure/functions" 3 | 4 | const httpStart: AzureFunction = async function (context: Context, req: HttpRequest): Promise { 5 | const client = df.getClient(context) 6 | const instanceId = await client.startNew(req.params.functionName, undefined, req.body) 7 | 8 | context.log(`Started orchestration with ID = '${instanceId}'.`) 9 | 10 | return client.createCheckStatusResponse(context.bindingData.req, instanceId) 11 | } 12 | 13 | export default httpStart 14 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/02DurableFunctionApp-SubOrchestration/ParallelOnboardingOrchestrator/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "context", 5 | "type": "orchestrationTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/ParallelOnboardingOrchestrator/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/02DurableFunctionApp-SubOrchestration/WelcomeEmailActivity/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "input", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/WelcomeEmailActivity/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/02DurableFunctionApp-SubOrchestration/WelcomeEmailActivity/index.ts: -------------------------------------------------------------------------------- 1 |  2 | import { AzureFunction, Context } from "@azure/functions" 3 | 4 | const activityFunction: AzureFunction = async function (context: Context): Promise { 5 | 6 | const message = `Welcome ${context.bindings.input.name}! Happy to have you on board and see you on ${context.bindings.input.startdate}!` 7 | 8 | context.log(message) 9 | 10 | return message 11 | 12 | } 13 | 14 | export default activityFunction 15 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/02DurableFunctionApp-SubOrchestration/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[2.*, 3.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/02DurableFunctionApp-SubOrchestration/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "UseDevelopmentStorage=true", 5 | "FUNCTIONS_WORKER_RUNTIME": "node" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/02DurableFunctionApp-SubOrchestration/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "onboardingbydurablefunction", 3 | "version": "1.0.0", 4 | "description": "", 5 | "scripts": { 6 | "build": "tsc", 7 | "watch": "tsc -w", 8 | "prestart": "npm run build", 9 | "start": "func start", 10 | "test": "echo \"No tests yet...\"" 11 | }, 12 | "dependencies": { 13 | "@types/node": "^10.14.2", 14 | "durable-functions": "^1.5.4" 15 | }, 16 | "devDependencies": { 17 | "@azure/functions": "^1.2.3", 18 | "typescript": "^4.0.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/02DurableFunctionApp-SubOrchestration/proxies.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/proxies", 3 | "proxies": {} 4 | } 5 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/02DurableFunctionApp-SubOrchestration/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "dist", 6 | "rootDir": ".", 7 | "sourceMap": true, 8 | "strict": false 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/.funcignore: -------------------------------------------------------------------------------- 1 | *.js.map 2 | *.ts 3 | .git* 4 | .vscode 5 | local.settings.json 6 | test 7 | tsconfig.json -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to Node Functions", 6 | "type": "node", 7 | "request": "attach", 8 | "port": 9229, 9 | "preLaunchTask": "func: host start" 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": ".", 3 | "azureFunctions.postDeployTask": "npm install (functions)", 4 | "azureFunctions.projectLanguage": "TypeScript", 5 | "azureFunctions.projectRuntime": "~3", 6 | "debug.internalConsoleOptions": "neverOpen", 7 | "azureFunctions.preDeployTask": "npm prune (functions)" 8 | } -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/AccessCardCreationActivity/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "input", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/AccessCardCreationActivity/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/AccessCardCreationActivity/index.ts: -------------------------------------------------------------------------------- 1 | import { AzureFunction, Context } from "@azure/functions" 2 | 3 | const activityFunction: AzureFunction = async function (context: Context): Promise { 4 | 5 | const message = `Access card created for ${context.bindings.input.name} starting on ${context.bindings.input.startdate}` 6 | 7 | context.log(message) 8 | 9 | return message 10 | 11 | } 12 | 13 | export default activityFunction 14 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/CheckItEquipmentValueByRoleActivity/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "input", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/CheckItEquipmentValueByRoleActivity/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/CheckItEquipmentValueByRoleActivity/index.ts: -------------------------------------------------------------------------------- 1 | import { AzureFunction, Context } from "@azure/functions" 2 | 3 | const activityFunction: AzureFunction = async function (context: Context): Promise { 4 | 5 | if (context.bindings.input.role === "sales"){ 6 | 7 | return `approval needed` 8 | 9 | } 10 | else{ 11 | 12 | return `approved` 13 | 14 | } 15 | 16 | } 17 | 18 | export default activityFunction 19 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/ItEquipmentOrderActivity/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "input", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/ItEquipmentOrderActivity/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/ItEquipmentOrderActivity/index.ts: -------------------------------------------------------------------------------- 1 | import { AzureFunction, Context } from "@azure/functions" 2 | 3 | const activityFunction: AzureFunction = async function (context: Context): Promise { 4 | 5 | const message = `Role specific IT equipment (role: ${context.bindings.input.role}) was ordered for ${context.bindings.input.name} starting on ${context.bindings.input.startdate}` 6 | 7 | context.log(message) 8 | 9 | return message 10 | 11 | } 12 | 13 | export default activityFunction 14 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/OnboardingOrchestratorExternalEvent/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "context", 5 | "type": "orchestrationTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/OnboardingOrchestratorExternalEvent/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/OnboardingStarter/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "anonymous", 5 | "name": "req", 6 | "type": "httpTrigger", 7 | "direction": "in", 8 | "route": "orchestrators/{functionName}", 9 | "methods": [ 10 | "post" 11 | ] 12 | }, 13 | { 14 | "name": "$return", 15 | "type": "http", 16 | "direction": "out" 17 | }, 18 | { 19 | "name": "starter", 20 | "type": "orchestrationClient", 21 | "direction": "in" 22 | } 23 | ], 24 | "scriptFile": "../dist/OnboardingStarter/index.js" 25 | } 26 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/OnboardingStarter/index.ts: -------------------------------------------------------------------------------- 1 | import * as df from "durable-functions" 2 | import { AzureFunction, Context, HttpRequest } from "@azure/functions" 3 | 4 | const httpStart: AzureFunction = async function (context: Context, req: HttpRequest): Promise { 5 | const client = df.getClient(context) 6 | const instanceId = await client.startNew(req.params.functionName, undefined, req.body) 7 | 8 | context.log(`Started orchestration with ID = '${instanceId}'.`) 9 | 10 | return client.createCheckStatusResponse(context.bindingData.req, instanceId) 11 | } 12 | 13 | export default httpStart 14 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/ParallelOnboardingOrchestrator/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "context", 5 | "type": "orchestrationTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/ParallelOnboardingOrchestrator/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/WelcomeEmailActivity/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "input", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/WelcomeEmailActivity/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/WelcomeEmailActivity/index.ts: -------------------------------------------------------------------------------- 1 |  2 | import { AzureFunction, Context } from "@azure/functions" 3 | 4 | const activityFunction: AzureFunction = async function (context: Context): Promise { 5 | 6 | const message = `Welcome ${context.bindings.input.name}! Happy to have you on board and see you on ${context.bindings.input.startdate}!` 7 | 8 | context.log(message) 9 | 10 | return message 11 | 12 | } 13 | 14 | export default activityFunction 15 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[2.*, 3.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "UseDevelopmentStorage=true", 5 | "FUNCTIONS_WORKER_RUNTIME": "node" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "onboardingbydurablefunction", 3 | "version": "1.0.0", 4 | "description": "", 5 | "scripts": { 6 | "build": "tsc", 7 | "watch": "tsc -w", 8 | "prestart": "npm run build", 9 | "start": "func start", 10 | "test": "echo \"No tests yet...\"" 11 | }, 12 | "dependencies": { 13 | "@types/node": "^10.14.2", 14 | "durable-functions": "^1.5.4", 15 | "luxon": "^2.5.2" 16 | }, 17 | "devDependencies": { 18 | "@azure/functions": "^1.2.3", 19 | "typescript": "^4.0.0" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/proxies.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/proxies", 3 | "proxies": {} 4 | } 5 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/advanced-patterns/03DurableFunctionApp-ExternalEvent/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "dist", 6 | "rootDir": ".", 7 | "sourceMap": true, 8 | "strict": false 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Retry/.funcignore: -------------------------------------------------------------------------------- 1 | *.js.map 2 | *.ts 3 | .git* 4 | .vscode 5 | local.settings.json 6 | test 7 | tsconfig.json -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Retry/DurableFunctionStarter/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "anonymous", 5 | "name": "req", 6 | "type": "httpTrigger", 7 | "direction": "in", 8 | "route": "orchestrators/{functionName}", 9 | "methods": [ 10 | "post", 11 | "get" 12 | ] 13 | }, 14 | { 15 | "name": "$return", 16 | "type": "http", 17 | "direction": "out" 18 | }, 19 | { 20 | "name": "starter", 21 | "type": "orchestrationClient", 22 | "direction": "in" 23 | } 24 | ], 25 | "scriptFile": "../dist/DurableFunctionStarter/index.js" 26 | } 27 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Retry/DurableFunctionStarter/index.ts: -------------------------------------------------------------------------------- 1 | import * as df from "durable-functions" 2 | import { AzureFunction, Context, HttpRequest } from "@azure/functions" 3 | 4 | const httpStart: AzureFunction = async function (context: Context, req: HttpRequest): Promise { 5 | const client = df.getClient(context) 6 | const instanceId = await client.startNew(req.params.functionName, undefined, req.body) 7 | 8 | context.log(`Started orchestration with ID = '${instanceId}'.`) 9 | 10 | return client.createCheckStatusResponse(context.bindingData.req, instanceId) 11 | } 12 | 13 | export default httpStart -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Retry/DurableFunctionsOrchestrator/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "context", 5 | "type": "orchestrationTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/DurableFunctionsOrchestrator/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Retry/DurableFunctionsOrchestrator/index.ts: -------------------------------------------------------------------------------- 1 | import * as df from "durable-functions" 2 | 3 | const orchestrator = df.orchestrator(function* (context) { 4 | const outputs = [] 5 | 6 | outputs.push(yield context.df.callActivity("HelloCity", "Tokyo")) 7 | outputs.push(yield context.df.callActivity("HelloCity", "Seattle")) 8 | outputs.push(yield context.df.callActivity("HelloCity", "London")) 9 | 10 | return outputs 11 | }) 12 | 13 | export default orchestrator -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Retry/GetRepositoryDetailsByName/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "name", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/GetRepositoryDetailsByName/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Retry/GetUserDetailsById/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "name", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/GetUserDetailsById/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Retry/GetUserDetailsById/index.ts: -------------------------------------------------------------------------------- 1 | import { AzureFunction, Context } from "@azure/functions" 2 | import { Octokit } from "@octokit/core" 3 | 4 | const activityFunction: AzureFunction = async function (context: Context): Promise { 5 | 6 | const octokit = new Octokit() 7 | 8 | const apiPath = `/users/${context.bindingData.userId.toString()}` 9 | 10 | const searchResult = await octokit.request( apiPath ) 11 | 12 | const userData = searchResult.data 13 | 14 | return userData 15 | 16 | } 17 | 18 | export default activityFunction 19 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Retry/GitHubInfoOrchestrator/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "context", 5 | "type": "orchestrationTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/GitHubInfoOrchestrator/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Retry/HelloCity/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "name", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/HelloCity/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Retry/HelloCity/index.ts: -------------------------------------------------------------------------------- 1 | import { AzureFunction, Context } from "@azure/functions" 2 | 3 | const activityFunction: AzureFunction = async function (context: Context): Promise { 4 | return `Hello ${context.bindings.name}!` 5 | } 6 | 7 | export default activityFunction -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Retry/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[1.*, 2.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Retry/local.settings.sample.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "UseDevelopmentStorage=true", 5 | "FUNCTIONS_WORKER_RUNTIME": "node" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Retry/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "githubexample", 3 | "version": "1.0.0", 4 | "description": "", 5 | "scripts": { 6 | "build": "tsc", 7 | "watch": "tsc -w", 8 | "prestart": "npm run build", 9 | "start": "func start", 10 | "test": "echo \"No tests yet...\"" 11 | }, 12 | "dependencies": { 13 | "@octokit/core": "^3.2.4", 14 | "durable-functions": "^1.4.4" 15 | }, 16 | "devDependencies": { 17 | "@azure/functions": "^1.0.2-beta2", 18 | "typescript": "^3.3.3", 19 | "@types/node": "^14.14.10" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Retry/proxies.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/proxies", 3 | "proxies": {} 4 | } 5 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Retry/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "dist", 6 | "rootDir": ".", 7 | "sourceMap": true, 8 | "strict": false 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Timeout/.funcignore: -------------------------------------------------------------------------------- 1 | *.js.map 2 | *.ts 3 | .git* 4 | .vscode 5 | local.settings.json 6 | test 7 | tsconfig.json -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Timeout/DurableFunctionStarter/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "anonymous", 5 | "name": "req", 6 | "type": "httpTrigger", 7 | "direction": "in", 8 | "route": "orchestrators/{functionName}", 9 | "methods": [ 10 | "post", 11 | "get" 12 | ] 13 | }, 14 | { 15 | "name": "$return", 16 | "type": "http", 17 | "direction": "out" 18 | }, 19 | { 20 | "name": "starter", 21 | "type": "orchestrationClient", 22 | "direction": "in" 23 | } 24 | ], 25 | "scriptFile": "../dist/DurableFunctionStarter/index.js" 26 | } 27 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Timeout/DurableFunctionStarter/index.ts: -------------------------------------------------------------------------------- 1 | import * as df from "durable-functions" 2 | import { AzureFunction, Context, HttpRequest } from "@azure/functions" 3 | 4 | const httpStart: AzureFunction = async function (context: Context, req: HttpRequest): Promise { 5 | const client = df.getClient(context) 6 | const instanceId = await client.startNew(req.params.functionName, undefined, req.body) 7 | 8 | context.log(`Started orchestration with ID = '${instanceId}'.`) 9 | 10 | return client.createCheckStatusResponse(context.bindingData.req, instanceId) 11 | } 12 | 13 | export default httpStart -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Timeout/DurableFunctionsOrchestrator/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "context", 5 | "type": "orchestrationTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/DurableFunctionsOrchestrator/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Timeout/DurableFunctionsOrchestrator/index.ts: -------------------------------------------------------------------------------- 1 | import * as df from "durable-functions" 2 | 3 | const orchestrator = df.orchestrator(function* (context) { 4 | const outputs = [] 5 | 6 | outputs.push(yield context.df.callActivity("HelloCity", "Tokyo")) 7 | outputs.push(yield context.df.callActivity("HelloCity", "Seattle")) 8 | outputs.push(yield context.df.callActivity("HelloCity", "London")) 9 | 10 | return outputs 11 | }) 12 | 13 | export default orchestrator -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Timeout/GetRepositoryDetailsByName/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "name", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/GetRepositoryDetailsByName/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Timeout/GetUserDetailsById/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "name", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/GetUserDetailsById/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Timeout/GetUserDetailsById/index.ts: -------------------------------------------------------------------------------- 1 | import { AzureFunction, Context } from "@azure/functions" 2 | import { Octokit } from "@octokit/core" 3 | 4 | const activityFunction: AzureFunction = async function (context: Context): Promise { 5 | 6 | const octokit = new Octokit() 7 | 8 | const apiPath = `/users/${context.bindingData.userId.toString()}` 9 | 10 | const searchResult = await octokit.request( apiPath ) 11 | 12 | const userData = searchResult.data 13 | 14 | return userData 15 | 16 | } 17 | 18 | export default activityFunction 19 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Timeout/GitHubInfoOrchestrator/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "context", 5 | "type": "orchestrationTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/GitHubInfoOrchestrator/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Timeout/HelloCity/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "name", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/HelloCity/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Timeout/HelloCity/index.ts: -------------------------------------------------------------------------------- 1 | import { AzureFunction, Context } from "@azure/functions" 2 | 3 | const activityFunction: AzureFunction = async function (context: Context): Promise { 4 | return `Hello ${context.bindings.name}!` 5 | } 6 | 7 | export default activityFunction -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Timeout/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[1.*, 2.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Timeout/local.settings.sample.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "UseDevelopmentStorage=true", 5 | "FUNCTIONS_WORKER_RUNTIME": "node" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Timeout/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "githubexample", 3 | "version": "1.0.0", 4 | "description": "", 5 | "scripts": { 6 | "build": "tsc", 7 | "watch": "tsc -w", 8 | "prestart": "npm run build", 9 | "start": "func start", 10 | "test": "echo \"No tests yet...\"" 11 | }, 12 | "dependencies": { 13 | "@octokit/core": "^3.2.4", 14 | "durable-functions": "^1.4.4", 15 | "moment": "^2.29.4" 16 | }, 17 | "devDependencies": { 18 | "@azure/functions": "^1.0.2-beta2", 19 | "typescript": "^3.3.3", 20 | "@types/node": "^14.14.10" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Timeout/proxies.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/proxies", 3 | "proxies": {} 4 | } 5 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp-Timeout/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "dist", 6 | "rootDir": ".", 7 | "sourceMap": true, 8 | "strict": false, 9 | "esModuleInterop": true 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp/.funcignore: -------------------------------------------------------------------------------- 1 | *.js.map 2 | *.ts 3 | .git* 4 | .vscode 5 | local.settings.json 6 | test 7 | tsconfig.json -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp/DurableFunctionStarter/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "anonymous", 5 | "name": "req", 6 | "type": "httpTrigger", 7 | "direction": "in", 8 | "route": "orchestrators/{functionName}", 9 | "methods": [ 10 | "post", 11 | "get" 12 | ] 13 | }, 14 | { 15 | "name": "$return", 16 | "type": "http", 17 | "direction": "out" 18 | }, 19 | { 20 | "name": "starter", 21 | "type": "orchestrationClient", 22 | "direction": "in" 23 | } 24 | ], 25 | "scriptFile": "../dist/DurableFunctionStarter/index.js" 26 | } 27 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp/DurableFunctionStarter/index.ts: -------------------------------------------------------------------------------- 1 | import * as df from "durable-functions" 2 | import { AzureFunction, Context, HttpRequest } from "@azure/functions" 3 | 4 | const httpStart: AzureFunction = async function (context: Context, req: HttpRequest): Promise { 5 | const client = df.getClient(context) 6 | const instanceId = await client.startNew(req.params.functionName, undefined, req.body) 7 | 8 | context.log(`Started orchestration with ID = '${instanceId}'.`) 9 | 10 | return client.createCheckStatusResponse(context.bindingData.req, instanceId) 11 | } 12 | 13 | export default httpStart -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp/DurableFunctionsOrchestrator/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "context", 5 | "type": "orchestrationTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/DurableFunctionsOrchestrator/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp/DurableFunctionsOrchestrator/index.ts: -------------------------------------------------------------------------------- 1 | import * as df from "durable-functions" 2 | 3 | const orchestrator = df.orchestrator(function* (context) { 4 | const outputs = [] 5 | 6 | outputs.push(yield context.df.callActivity("HelloCity", "Tokyo")) 7 | outputs.push(yield context.df.callActivity("HelloCity", "Seattle")) 8 | outputs.push(yield context.df.callActivity("HelloCity", "London")) 9 | 10 | return outputs 11 | }) 12 | 13 | export default orchestrator -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp/GetRepositoryDetailsByName/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "name", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/GetRepositoryDetailsByName/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp/GetUserDetailsById/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "name", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/GetUserDetailsById/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp/GetUserDetailsById/index.ts: -------------------------------------------------------------------------------- 1 | import { AzureFunction, Context } from "@azure/functions" 2 | import { Octokit } from "@octokit/core" 3 | 4 | const activityFunction: AzureFunction = async function (context: Context): Promise { 5 | 6 | const octokit = new Octokit() 7 | 8 | const apiPath = `/users/${context.bindingData.userId.toString()}` 9 | 10 | const searchResult = await octokit.request( apiPath ) 11 | 12 | const userData = searchResult.data 13 | 14 | return userData 15 | 16 | } 17 | 18 | export default activityFunction 19 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp/GitHubInfoOrchestrator/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "context", 5 | "type": "orchestrationTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/GitHubInfoOrchestrator/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp/GitHubInfoOrchestrator/index.ts: -------------------------------------------------------------------------------- 1 | import * as df from "durable-functions" 2 | 3 | const orchestrator = df.orchestrator(function* (context) { 4 | 5 | const userId:string = yield context.df.callActivity("GetRepositoryDetailsByName", context.bindingData.input) 6 | 7 | context.bindingData.input.userId = userId 8 | 9 | const userInfos = yield context.df.callActivity("GetUserDetailsById", context.bindingData.input) 10 | 11 | return userInfos 12 | }) 13 | 14 | export default orchestrator 15 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp/HelloCity/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "name", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/HelloCity/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp/HelloCity/index.ts: -------------------------------------------------------------------------------- 1 | import { AzureFunction, Context } from "@azure/functions" 2 | 3 | const activityFunction: AzureFunction = async function (context: Context): Promise { 4 | return `Hello ${context.bindings.name}!` 5 | } 6 | 7 | export default activityFunction -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[1.*, 2.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp/local.settings.sample.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "UseDevelopmentStorage=true", 5 | "FUNCTIONS_WORKER_RUNTIME": "node" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "githubexample", 3 | "version": "1.0.0", 4 | "description": "", 5 | "scripts": { 6 | "build": "tsc", 7 | "watch": "tsc -w", 8 | "prestart": "npm run build", 9 | "start": "func start", 10 | "test": "echo \"No tests yet...\"" 11 | }, 12 | "dependencies": { 13 | "@octokit/core": "^3.2.4", 14 | "durable-functions": "^1.4.4" 15 | }, 16 | "devDependencies": { 17 | "@azure/functions": "^1.0.2-beta2", 18 | "typescript": "^3.3.3", 19 | "@types/node": "^14.14.10" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp/proxies.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/proxies", 3 | "proxies": {} 4 | } 5 | -------------------------------------------------------------------------------- /src/typescript/durable-functions/chaining/DurableFunctionApp/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "dist", 6 | "rootDir": ".", 7 | "sourceMap": true, 8 | "strict": false 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /src/typescript/homework/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to Node Functions", 6 | "type": "node", 7 | "request": "attach", 8 | "port": 9229, 9 | "preLaunchTask": "func: host start" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /src/typescript/homework/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": "resume-api", 3 | "azureFunctions.postDeployTask": "npm install", 4 | "azureFunctions.projectLanguage": "TypeScript", 5 | "azureFunctions.projectRuntime": "~3", 6 | "azureFunctions.preDeployTask": "npm prune" 7 | } -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/.funcignore: -------------------------------------------------------------------------------- 1 | *.js.map 2 | *.ts 3 | .git* 4 | .vscode 5 | local.settings.json 6 | test 7 | tsconfig.json -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to Node Functions", 6 | "type": "node", 7 | "request": "attach", 8 | "port": 9229, 9 | "preLaunchTask": "func: host start" 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": ".", 3 | "azureFunctions.postDeployTask": "npm install (functions)", 4 | "azureFunctions.projectLanguage": "TypeScript", 5 | "azureFunctions.projectRuntime": "~4", 6 | "debug.internalConsoleOptions": "neverOpen", 7 | "azureFunctions.preDeployTask": "npm prune (functions)" 8 | } -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/BookHotelRoomActivity/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "input", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/BookHotelRoomActivity/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/BookHotelRoomActivity/index.ts: -------------------------------------------------------------------------------- 1 | import { AzureFunction, Context } from "@azure/functions" 2 | 3 | const activityFunction: AzureFunction = async function (context: Context): Promise { 4 | 5 | const message = `Hotel room for ${context.bindings.input.name} for arrival date ${context.bindings.input.startdate} was booked in hotel ${context.bindings.input.hotel}` 6 | 7 | context.log(message) 8 | 9 | return message 10 | } 11 | 12 | export default activityFunction; 13 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/BookTrainTicketActivity/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "input", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/BookTrainTicketActivity/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/BookTrainTicketActivity/index.ts: -------------------------------------------------------------------------------- 1 | import { AzureFunction, Context } from "@azure/functions" 2 | 3 | const activityFunction: AzureFunction = async function (context: Context): Promise { 4 | 5 | const message = `Train ticket was booked for ${context.bindings.input.name} on travel date ${context.bindings.input.startdate}` 6 | 7 | context.log(message) 8 | 9 | return message 10 | 11 | } 12 | 13 | export default activityFunction 14 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/BookingOrchestrator/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "context", 5 | "type": "orchestrationTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/BookingOrchestrator/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/BookingOrchestrator/index.ts: -------------------------------------------------------------------------------- 1 | import * as df from "durable-functions" 2 | 3 | const orchestrator = df.orchestrator(function* (context) { 4 | 5 | const bookingTasks = [] 6 | 7 | bookingTasks.push(context.df.callActivity("BuyConferenceTicketActivity", context.bindingData.input)) 8 | bookingTasks.push(context.df.callActivity("BookHotelRoomActivity", context.bindingData.input)) 9 | bookingTasks.push(context.df.callActivity("BookTrainTicketActivity", context.bindingData.input)) 10 | 11 | 12 | const result = yield context.df.Task.all(bookingTasks) 13 | 14 | return result 15 | 16 | 17 | }) 18 | 19 | export default orchestrator 20 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/BookingOrchestratorExternalEvent/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "context", 5 | "type": "orchestrationTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/BookingOrchestratorExternalEvent/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/BusinessTripBookingStarter/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "anonymous", 5 | "name": "req", 6 | "type": "httpTrigger", 7 | "direction": "in", 8 | "route": "orchestrators/{functionName}", 9 | "methods": [ 10 | "post" 11 | ] 12 | }, 13 | { 14 | "name": "$return", 15 | "type": "http", 16 | "direction": "out" 17 | }, 18 | { 19 | "name": "starter", 20 | "type": "orchestrationClient", 21 | "direction": "in" 22 | } 23 | ], 24 | "scriptFile": "../dist/BusinessTripBookingStarter/index.js" 25 | } 26 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/BusinessTripBookingStarter/index.ts: -------------------------------------------------------------------------------- 1 | import * as df from "durable-functions" 2 | import { AzureFunction, Context, HttpRequest } from "@azure/functions" 3 | 4 | const httpStart: AzureFunction = async function (context: Context, req: HttpRequest): Promise { 5 | const client = df.getClient(context); 6 | const instanceId = await client.startNew(req.params.functionName, undefined, req.body) 7 | 8 | context.log(`Started orchestration with ID = '${instanceId}'.`) 9 | 10 | return client.createCheckStatusResponse(context.bindingData.req, instanceId); 11 | } 12 | 13 | export default httpStart 14 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/BuyConferenceTicketActivity/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "input", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/BuyConferenceTicketActivity/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/BuyConferenceTicketActivity/index.ts: -------------------------------------------------------------------------------- 1 | import { AzureFunction, Context } from "@azure/functions" 2 | 3 | const activityFunction: AzureFunction = async function (context: Context): Promise { 4 | 5 | const message = `Conference ticket for ${context.bindings.input.name} was bought` 6 | 7 | context.log(message) 8 | 9 | return message 10 | 11 | 12 | 13 | } 14 | 15 | export default activityFunction 16 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/CheckHotelRoomApprovalNeededActivity/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "input", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/CheckHotelRoomApprovalNeededActivity/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/CheckHotelRoomApprovalNeededActivity/index.ts: -------------------------------------------------------------------------------- 1 | import { AzureFunction, Context } from "@azure/functions" 2 | 3 | const activityFunction: AzureFunction = async function (context: Context): Promise { 4 | 5 | if (context.bindings.input.hotel === "Adlon Berlin") { 6 | 7 | return `approval needed` 8 | 9 | } 10 | else { 11 | 12 | return `approved` 13 | 14 | } 15 | 16 | } 17 | 18 | export default activityFunction 19 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/ParallelBookingOrchestrator/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "context", 5 | "type": "orchestrationTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/ParallelBookingOrchestrator/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[2.*, 3.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "UseDevelopmentStorage=true", 5 | "FUNCTIONS_WORKER_RUNTIME": "node" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "travelbookinghomework", 3 | "version": "1.0.0", 4 | "description": "", 5 | "scripts": { 6 | "build": "tsc", 7 | "watch": "tsc -w", 8 | "prestart": "npm run build", 9 | "start": "func start", 10 | "test": "echo \"No tests yet...\"" 11 | }, 12 | "devDependencies": { 13 | "@azure/functions": "^1.2.3", 14 | "typescript": "^4.0.0" 15 | }, 16 | "dependencies": { 17 | "@types/node": "^10.14.2", 18 | "durable-functions": "^1.5.4", 19 | "luxon": "^2.5.2" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/advanced-patterns/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "dist", 6 | "rootDir": ".", 7 | "sourceMap": true, 8 | "strict": false 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/bingmaps/.funcignore: -------------------------------------------------------------------------------- 1 | *.js.map 2 | *.ts 3 | .git* 4 | .vscode 5 | local.settings.json 6 | test 7 | tsconfig.json -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/bingmaps/GetGeoencodedLocation/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "name", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/GetGeoencodedLocation/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/bingmaps/GetLocationSearchResult/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "name", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/GetLocationSearchResult/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/bingmaps/LocationSearchHttpStart/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "anonymous", 5 | "name": "req", 6 | "type": "httpTrigger", 7 | "direction": "in", 8 | "route": "orchestrators/{functionName}", 9 | "methods": [ 10 | "post", 11 | "get" 12 | ] 13 | }, 14 | { 15 | "name": "$return", 16 | "type": "http", 17 | "direction": "out" 18 | }, 19 | { 20 | "name": "starter", 21 | "type": "orchestrationClient", 22 | "direction": "in" 23 | } 24 | ], 25 | "scriptFile": "../dist/LocationSearchHttpStart/index.js" 26 | } -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/bingmaps/LocationSearchHttpStart/index.ts: -------------------------------------------------------------------------------- 1 | import * as df from "durable-functions" 2 | import { AzureFunction, Context, HttpRequest } from "@azure/functions" 3 | 4 | const httpStart: AzureFunction = async function (context: Context, req: HttpRequest): Promise { 5 | const client = df.getClient(context) 6 | const instanceId = await client.startNew(req.params.functionName, undefined, req.body) 7 | 8 | context.log(`Started orchestration with ID = '${instanceId}'.`) 9 | 10 | return client.createCheckStatusResponse(context.bindingData.req, instanceId) 11 | } 12 | 13 | export default httpStart -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/bingmaps/LocationSearchOrchestrator/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "context", 5 | "type": "orchestrationTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/LocationSearchOrchestrator/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/bingmaps/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[1.*, 2.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/bingmaps/local.settings.sample.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "UseDevelopmentStorage=true", 5 | "FUNCTIONS_WORKER_RUNTIME": "node", 6 | "BingMapsAPIKey": "" 7 | } 8 | } -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/bingmaps/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "binghomework", 3 | "version": "1.0.0", 4 | "description": "", 5 | "scripts": { 6 | "build": "tsc", 7 | "watch": "tsc -w", 8 | "prestart": "npm run build", 9 | "start": "func start", 10 | "test": "echo \"No tests yet...\"" 11 | }, 12 | "dependencies": { 13 | "axios": "^0.21.2", 14 | "durable-functions": "^1.4.4" 15 | }, 16 | "devDependencies": { 17 | "@azure/functions": "^1.2.2", 18 | "typescript": "^3.3.3", 19 | "@types/node": "^14.14.10" 20 | } 21 | } -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/bingmaps/request.http: -------------------------------------------------------------------------------- 1 | ### Sample Search 2 | GET http://localhost:7071/api/orchestrators/LocationSearchOrchestrator HTTP/1.1 3 | content-type: application/json 4 | 5 | { 6 | "location": "Seattle,%20Pioneer%20Square", 7 | "type": "coffee" 8 | } -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/bingmaps/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "dist", 6 | "rootDir": ".", 7 | "sourceMap": true, 8 | "strict": false 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Retry/.funcignore: -------------------------------------------------------------------------------- 1 | *.js.map 2 | *.ts 3 | .git* 4 | .vscode 5 | local.settings.json 6 | test 7 | tsconfig.json -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Retry/DurableFunctionStarter/index.ts: -------------------------------------------------------------------------------- 1 | import * as df from "durable-functions" 2 | import { AzureFunction, Context, HttpRequest } from "@azure/functions" 3 | 4 | const httpStart: AzureFunction = async function (context: Context, req: HttpRequest): Promise { 5 | const client = df.getClient(context); 6 | const instanceId = await client.startNew(req.params.functionName, undefined, req.body); 7 | 8 | context.log(`Started orchestration with ID = '${instanceId}'.`); 9 | 10 | return client.createCheckStatusResponse(context.bindingData.req, instanceId); 11 | }; 12 | 13 | export default httpStart; 14 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Retry/GetPgText/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "name", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/GetPgText/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Retry/GetPoDetails/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "name", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/GetPoDetails/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Retry/PurchaseInfoOrchestrator/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "context", 5 | "type": "orchestrationTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/PurchaseInfoOrchestrator/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Retry/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[1.*, 2.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Retry/local.settings.sample.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "UseDevelopmentStorage=true", 5 | "FUNCTIONS_WORKER_RUNTIME": "node", 6 | "APIHubDestination": "https://sandbox.api.sap.com/s4hanacloud", 7 | "APIHubKey": "" 8 | } 9 | } -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Retry/proxies.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/proxies", 3 | "proxies": {} 4 | } 5 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Retry/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "esModuleInterop": true, 5 | "target": "es6", 6 | "outDir": "dist", 7 | "rootDir": ".", 8 | "sourceMap": true, 9 | "strict": false 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Retry/utils/purchaseOrderTypes.ts: -------------------------------------------------------------------------------- 1 | export interface ProductGroupInfo { 2 | materialGroup: string, 3 | language: string, 4 | materialGroupName: string, 5 | materialGroupText: string 6 | } 7 | 8 | export interface MaterialGroupData { 9 | materialGroupId: string; 10 | } -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Timeout/.funcignore: -------------------------------------------------------------------------------- 1 | *.js.map 2 | *.ts 3 | .git* 4 | .vscode 5 | local.settings.json 6 | test 7 | tsconfig.json -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Timeout/DurableFunctionStarter/index.ts: -------------------------------------------------------------------------------- 1 | import * as df from "durable-functions" 2 | import { AzureFunction, Context, HttpRequest } from "@azure/functions" 3 | 4 | const httpStart: AzureFunction = async function (context: Context, req: HttpRequest): Promise { 5 | const client = df.getClient(context) 6 | const instanceId = await client.startNew(req.params.functionName, undefined, req.body) 7 | 8 | context.log(`Started orchestration with ID = '${instanceId}'.`) 9 | 10 | return client.createCheckStatusResponse(context.bindingData.req, instanceId) 11 | } 12 | 13 | export default httpStart -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Timeout/GetPgText/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "name", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/GetPgText/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Timeout/GetPoDetails/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "name", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/GetPoDetails/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Timeout/PurchaseInfoOrchestrator/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "context", 5 | "type": "orchestrationTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/PurchaseInfoOrchestrator/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Timeout/demoRequests.http: -------------------------------------------------------------------------------- 1 | ### Sample Request for Simple Setup 2 | GET http://localhost:7071/api/orchestrators/DurableFunctionsOrchestrator HTTP/1.1 3 | 4 | 5 | ### Sample Request for Downstream Scenario 6 | GET http://localhost:7071/api/orchestrators/PurchaseInfoOrchestrator HTTP/1.1 7 | content-type: application/json 8 | 9 | { 10 | "purchaseOrderId": "4500000012", 11 | "purchaseOrderItemId": "30", 12 | "languageCode": "DE" 13 | } -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Timeout/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[1.*, 2.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Timeout/local.settings.sample.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "UseDevelopmentStorage=true", 5 | "FUNCTIONS_WORKER_RUNTIME": "node", 6 | "APIHubDestination": "https://sandbox.api.sap.com/s4hanacloud", 7 | "APIHubKey": "" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Timeout/proxies.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/proxies", 3 | "proxies": {} 4 | } 5 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Timeout/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "esModuleInterop": true, 5 | "target": "es6", 6 | "outDir": "dist", 7 | "rootDir": ".", 8 | "sourceMap": true, 9 | "strict": false 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp-Timeout/utils/purchaseOrderTypes.ts: -------------------------------------------------------------------------------- 1 | export interface ProductGroupInfo { 2 | materialGroup: string, 3 | language: string, 4 | materialGroupName: string, 5 | materialGroupText: string 6 | } 7 | 8 | export interface MaterialGroupData { 9 | materialGroupId: string 10 | } -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp/.funcignore: -------------------------------------------------------------------------------- 1 | *.js.map 2 | *.ts 3 | .git* 4 | .vscode 5 | local.settings.json 6 | test 7 | tsconfig.json -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp/DurableFunctionStarter/index.ts: -------------------------------------------------------------------------------- 1 | import * as df from "durable-functions" 2 | import { AzureFunction, Context, HttpRequest } from "@azure/functions" 3 | 4 | const httpStart: AzureFunction = async function (context: Context, req: HttpRequest): Promise { 5 | const client = df.getClient(context) 6 | const instanceId = await client.startNew(req.params.functionName, undefined, req.body) 7 | 8 | context.log(`Started orchestration with ID = '${instanceId}'.`) 9 | 10 | return client.createCheckStatusResponse(context.bindingData.req, instanceId) 11 | } 12 | 13 | export default httpStart -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp/GetPgText/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "name", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/GetPgText/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp/GetPoDetails/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "name", 5 | "type": "activityTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/GetPoDetails/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp/PurchaseInfoOrchestrator/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "name": "context", 5 | "type": "orchestrationTrigger", 6 | "direction": "in" 7 | } 8 | ], 9 | "scriptFile": "../dist/PurchaseInfoOrchestrator/index.js" 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp/demoRequests.http: -------------------------------------------------------------------------------- 1 | ### Sample Request for Simple Setup 2 | GET http://localhost:7071/api/orchestrators/DurableFunctionsOrchestrator HTTP/1.1 3 | 4 | 5 | ### Sample Request for Downstream Scenario 6 | GET http://localhost:7071/api/orchestrators/PurchaseInfoOrchestrator HTTP/1.1 7 | content-type: application/json 8 | 9 | { 10 | "purchaseOrderId": "4500000012", 11 | "purchaseOrderItemId": "30", 12 | "languageCode": "DE" 13 | } -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[1.*, 2.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp/local.settings.sample.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "UseDevelopmentStorage=true", 5 | "FUNCTIONS_WORKER_RUNTIME": "node", 6 | "APIHubDestination": "https://sandbox.api.sap.com/s4hanacloud", 7 | "APIHubKey": "" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp/proxies.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/proxies", 3 | "proxies": {} 4 | } 5 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "esModuleInterop": true, 5 | "target": "es6", 6 | "outDir": "dist", 7 | "rootDir": ".", 8 | "sourceMap": true, 9 | "strict": false 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/typescript/homework/durable-functions/chaining/sapapi/DurableFunctionApp/utils/purchaseOrderTypes.ts: -------------------------------------------------------------------------------- 1 | export interface ProductGroupInfo { 2 | materialGroup: string, 3 | language: string, 4 | materialGroupName: string, 5 | materialGroupText: string 6 | } 7 | 8 | export interface MaterialGroupData { 9 | materialGroupId: string 10 | } -------------------------------------------------------------------------------- /src/typescript/homework/resume-api-blob/.funcignore: -------------------------------------------------------------------------------- 1 | *.js.map 2 | *.ts 3 | .git* 4 | .vscode 5 | local.settings.json 6 | test 7 | tsconfig.json -------------------------------------------------------------------------------- /src/typescript/homework/resume-api-blob/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-azurefunctions" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /src/typescript/homework/resume-api-blob/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to Node Functions", 6 | "type": "node", 7 | "request": "attach", 8 | "port": 9229, 9 | "preLaunchTask": "func: host start" 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /src/typescript/homework/resume-api-blob/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "azureFunctions.deploySubpath": ".", 3 | "azureFunctions.postDeployTask": "npm install", 4 | "azureFunctions.projectLanguage": "TypeScript", 5 | "azureFunctions.projectRuntime": "~3", 6 | "debug.internalConsoleOptions": "neverOpen", 7 | "azureFunctions.preDeployTask": "npm prune" 8 | } -------------------------------------------------------------------------------- /src/typescript/homework/resume-api-blob/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[1.*, 2.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/typescript/homework/resume-api-blob/myresume.json: -------------------------------------------------------------------------------- 1 | { 2 | "firstName": "I am", 3 | "lastName": "Groot", 4 | "location": "Somewhere in the universe", 5 | "currentPosition": "Guardian of the Galaxy" 6 | } -------------------------------------------------------------------------------- /src/typescript/homework/resume-api-blob/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "blobhomework", 3 | "version": "1.0.0", 4 | "description": "", 5 | "scripts": { 6 | "build": "tsc", 7 | "watch": "tsc -w", 8 | "prestart": "npm run build", 9 | "start": "func start", 10 | "test": "echo \"No tests yet...\"" 11 | }, 12 | "devDependencies": { 13 | "@azure/functions": "^1.2.3", 14 | "typescript": "^4.0.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/typescript/homework/resume-api-blob/proxies.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/proxies", 3 | "proxies": {} 4 | } 5 | -------------------------------------------------------------------------------- /src/typescript/homework/resume-api-blob/resume-api-blob/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "function", 5 | "type": "httpTrigger", 6 | "direction": "in", 7 | "name": "req", 8 | "methods": [ 9 | "get" 10 | ] 11 | }, 12 | { 13 | "name": "ResumeBlobIn", 14 | "type": "blob", 15 | "path": "resume/myresume.json", 16 | "direction": "in" 17 | }, 18 | { 19 | "type": "http", 20 | "direction": "out", 21 | "name": "res" 22 | } 23 | ], 24 | "scriptFile": "../dist/resume-api-blob/index.js" 25 | } -------------------------------------------------------------------------------- /src/typescript/homework/resume-api-blob/resume-api-blob/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } -------------------------------------------------------------------------------- /src/typescript/homework/resume-api-blob/sample.local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "UseDevelopmentStorage=true", 5 | "FUNCTIONS_WORKER_RUNTIME": "node" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/typescript/homework/resume-api-blob/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "dist", 6 | "rootDir": ".", 7 | "sourceMap": true, 8 | "strict": false 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/typescript/homework/resume-api/.funcignore: -------------------------------------------------------------------------------- 1 | *.js.map 2 | *.ts 3 | .git* 4 | .vscode 5 | local.settings.json 6 | test 7 | tsconfig.json -------------------------------------------------------------------------------- /src/typescript/homework/resume-api/host.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0", 3 | "logging": { 4 | "applicationInsights": { 5 | "samplingSettings": { 6 | "isEnabled": true, 7 | "excludedTypes": "Request" 8 | } 9 | } 10 | }, 11 | "extensionBundle": { 12 | "id": "Microsoft.Azure.Functions.ExtensionBundle", 13 | "version": "[1.*, 2.0.0)" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/typescript/homework/resume-api/local.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IsEncrypted": false, 3 | "Values": { 4 | "AzureWebJobsStorage": "", 5 | "FUNCTIONS_WORKER_RUNTIME": "node" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/typescript/homework/resume-api/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "http_homework", 3 | "version": "1.0.0", 4 | "description": "", 5 | "scripts": { 6 | "build": "tsc", 7 | "watch": "tsc -w", 8 | "prestart": "npm run build", 9 | "start": "func start", 10 | "test": "echo \"No tests yet...\"" 11 | }, 12 | "devDependencies": { 13 | "@azure/functions": "^1.2.3", 14 | "typescript": "^4.0.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/typescript/homework/resume-api/proxies.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/proxies", 3 | "proxies": {} 4 | } 5 | -------------------------------------------------------------------------------- /src/typescript/homework/resume-api/resume-api/function.json: -------------------------------------------------------------------------------- 1 | { 2 | "bindings": [ 3 | { 4 | "authLevel": "function", 5 | "type": "httpTrigger", 6 | "direction": "in", 7 | "name": "req", 8 | "methods": [ 9 | "get" 10 | ] 11 | }, 12 | { 13 | "type": "http", 14 | "direction": "out", 15 | "name": "res" 16 | } 17 | ], 18 | "scriptFile": "../dist/resume-api/index.js" 19 | } 20 | -------------------------------------------------------------------------------- /src/typescript/homework/resume-api/resume-api/sample.dat: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Azure" 3 | } -------------------------------------------------------------------------------- /src/typescript/homework/resume-api/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "dist", 6 | "rootDir": ".", 7 | "sourceMap": true, 8 | "strict": false 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /test/dotnetcore31/blob/blob_input.http: -------------------------------------------------------------------------------- 1 | # Blob input requests 2 | 3 | @baseUrl = http://localhost:7071/api 4 | @id = 470ef8af-27f9-469f-95a2-48b027e0ffff 5 | 6 | ### Stream 7 | GET {{baseUrl}}/GetPlayerWithStreamInput/{{id}} 8 | 9 | ### Dynamic 10 | GET {{baseUrl}}/GetPlayerWithStringInputDynamic?id={{id}} 11 | 12 | ### BlobList 13 | GET {{baseUrl}}/GetBlobNamesWithContainerBlobInput -------------------------------------------------------------------------------- /test/dotnetcore31/cosmosdb/cosmosdb_input.http: -------------------------------------------------------------------------------- 1 | ### Get Player document from CosmosDB players collection. 2 | @id=da336477-977b-4461-af21-f1b05622d878 3 | @region=Netherlands 4 | GET http://localhost:7071/api/players/{{region}}/{{id}} 5 | -------------------------------------------------------------------------------- /test/dotnetcore31/cosmosdb/cosmosdb_output.http: -------------------------------------------------------------------------------- 1 | ### Store a Player document to the CosmosDB players collection. 2 | 3 | POST http://localhost:7071/api/StorePlayerWithDI 4 | 5 | { 6 | "playerId": {{$randomInt 1 100}}, 7 | "nickName" : "Margaret", 8 | "region" : "United States of America" 9 | } -------------------------------------------------------------------------------- /test/dotnetcore31/http/httptrigger.http: -------------------------------------------------------------------------------- 1 | ### Without query string 2 | GET http://localhost:7071/api/HelloWorldHttpTrigger 3 | 4 | ### With name query string 5 | GET http://localhost:7071/api/HelloWorldHttpTrigger?name=YourName 6 | 7 | ### With name in body 8 | POST http://localhost:7071/api/HelloWorldHttpTrigger 9 | Content-Type: application/json 10 | 11 | { 12 | "name": "Your name" 13 | } 14 | 15 | ### PersonTypeHttpTrigger 16 | POST http://localhost:7071/api/PersonTypeHttpTrigger 17 | Content-Type: application/json 18 | 19 | { 20 | "name": "Your name" 21 | } 22 | 23 | ### With custom route and name query string 24 | GET http://localhost:7071/api/CustomGreetingHttpTrigger/Hi?name=YourName -------------------------------------------------------------------------------- /test/dotnetcore31/table/table_input.http: -------------------------------------------------------------------------------- 1 | # Table Input requests 2 | @baseUrl = http://localhost:7071/api 3 | @region = United States of America 4 | @id = 3c1704f2-19b2-4770-b48a-da6cb75022df 5 | 6 | ### Get a single player by Id 7 | GET {{baseUrl}}/GetPlayerByRegionAndIdTableInput/{{region}}/{{id}} 8 | 9 | ### Get multiple players by region 10 | 11 | @nickName = Mary 12 | GET {{baseUrl}}/GetPlayersByRegionAndNickNameCloudTableInput 13 | ?region={{region}} 14 | &nickName={{nickName}} -------------------------------------------------------------------------------- /test/python/httptrigger.http: -------------------------------------------------------------------------------- 1 | ### Without query string 2 | GET http://localhost:7071/api/HelloWorldHttpTrigger 3 | 4 | ### With name query string 5 | GET http://localhost:7071/api/HelloWorldHttpTrigger?name=YourName 6 | 7 | ### With name in body 8 | POST http://localhost:7071/api/HelloWorldHttpTrigger 9 | Content-Type: application/json 10 | 11 | { 12 | "name": "Your name" 13 | } 14 | 15 | ### PersonTypeHttpTrigger 16 | POST http://localhost:7071/api/CustomGreetingHttpTrigger 17 | Content-Type: application/json 18 | 19 | { 20 | "name": "Your name" 21 | } 22 | -------------------------------------------------------------------------------- /test/typescript/durable-functions/chaining/chaining.http: -------------------------------------------------------------------------------- 1 | ### Sample Request for Downstream Scenario 2 | GET http://localhost:7071/api/orchestrators/GitHubInfoOrchestrator HTTP/1.1 3 | content-type: application/json 4 | 5 | { 6 | "repositoryName": "azure-functions-university" 7 | } 8 | 9 | ### Sample Request for Downstream Scenario with error 10 | GET http://localhost:7071/api/orchestrators/GitHubInfoOrchestrator HTTP/1.1 11 | content-type: application/json 12 | 13 | { 14 | "repositoryName": "azure-functions-university", 15 | "raiseException": "true" 16 | } -------------------------------------------------------------------------------- /test/typescript/http/httptrigger.http: -------------------------------------------------------------------------------- 1 | ### Without query string 2 | GET http://localhost:7071/api/HelloWorldHttpTrigger 3 | 4 | ### With name query string 5 | GET http://localhost:7071/api/HelloWorldHttpTrigger?name=YourName 6 | 7 | ### With name in body 8 | POST http://localhost:7071/api/HelloWorldHttpTrigger 9 | Content-Type: application/json 10 | 11 | { 12 | "name": "Your name" 13 | } 14 | 15 | ### PersonTypeHttpTrigger 16 | POST http://localhost:7071/api/CustomGreetingHttpTrigger 17 | Content-Type: application/json 18 | 19 | { 20 | "name": "Your name" 21 | } 22 | -------------------------------------------------------------------------------- /workspaces/deployment.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "../lessons/dotnetcore31/prerequisites", 5 | "name" : ".NET Prerequisites" 6 | }, 7 | { 8 | "path": "../lessons/deployment", 9 | "name" : "Deployment Lesson" 10 | } 11 | ], 12 | "settings": { 13 | "debug.internalConsoleOptions": "neverOpen" 14 | }, 15 | "extensions": { 16 | "recommendations": [ 17 | "ms-azuretools.vscode-azurefunctions", 18 | "ms-dotnettools.csharp" 19 | ] 20 | } 21 | } -------------------------------------------------------------------------------- /workspaces/dotnet6/deployment-dotnet6.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "../../lessons/dotnet6/prerequisites", 5 | "name" : ".NET Prerequisites" 6 | }, 7 | { 8 | "path": "../../lessons/dotnet6/deployment", 9 | "name" : "Deployment Lesson" 10 | }, 11 | ], 12 | "settings": { 13 | "debug.internalConsoleOptions": "neverOpen" 14 | }, 15 | "extensions": { 16 | "recommendations": [ 17 | "ms-azuretools.vscode-azurefunctions", 18 | "ms-dotnettools.csharp" 19 | ] 20 | } 21 | } -------------------------------------------------------------------------------- /workspaces/dotnet6/http-refit-auth-dotnet6.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "../../lessons/dotnet6/http-refit-auth", 5 | "name": "Advance Scenaros Using Refit Lesson" 6 | }, 7 | { 8 | "path": "../../src/dotnet6/http-refit-auth/AzFuncUni.Http", 9 | "name": "Lesson Source Code" 10 | }, 11 | { 12 | "path": "../../.tours/dotnet6/http-refit-auth", 13 | "name": "(Code Tour files)" 14 | } 15 | ], 16 | "settings": { 17 | "debug.internalConsoleOptions": "neverOpen" 18 | }, 19 | "extensions": { 20 | "recommendations": [ 21 | "ms-azuretools.vscode-azurefunctions", 22 | "ms-dotnettools.csharp", 23 | "vsls-contrib.codetour" 24 | ] 25 | } 26 | } -------------------------------------------------------------------------------- /workspaces/dotnet6/http-refit-dotnet6.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "../../lessons/dotnet6/http-refit", 5 | "name": "HTTP Refit Lesson" 6 | }, 7 | { 8 | "path": "../../src/dotnet6/http-refit/AzFuncUni.Http", 9 | "name": "Lesson Source Code" 10 | }, 11 | { 12 | "path": "../../.tours/dotnet6/http-refit", 13 | "name": "(Code Tour files)" 14 | } 15 | ], 16 | "settings": { 17 | "debug.internalConsoleOptions": "neverOpen" 18 | }, 19 | "extensions": { 20 | "recommendations": [ 21 | "ms-azuretools.vscode-azurefunctions", 22 | "ms-dotnettools.csharp", 23 | "vsls-contrib.codetour" 24 | ] 25 | } 26 | } -------------------------------------------------------------------------------- /workspaces/dotnetcore31/cosmosdb-dotnet.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "../../lessons/dotnetcore31/prerequisites", 5 | "name" : ".NET Prerequisites" 6 | }, 7 | { 8 | "path": "../../lessons/dotnetcore31/cosmosdb", 9 | "name" : "CosmosDB Lesson" 10 | }, 11 | { 12 | "path": "../../src/dotnetcore31/AzureFunctions.Cosmos", 13 | "name" : "AzureFunctions.Cosmos Function App" 14 | } 15 | ], 16 | "settings": { 17 | "debug.internalConsoleOptions": "neverOpen" 18 | }, 19 | "extensions": { 20 | "recommendations": [ 21 | "ms-azuretools.vscode-azurefunctions", 22 | "ms-dotnettools.csharp" 23 | ] 24 | } 25 | } --------------------------------------------------------------------------------