import {Fragment} from 'react'; import ExternalLink from 'sentry/components/links/externalLink'; import List from 'sentry/components/list'; import ListItem from 'sentry/components/list/listItem'; import {Layout, LayoutProps} from 'sentry/components/onboarding/gettingStartedDoc/layout'; import {ModuleProps} from 'sentry/components/onboarding/gettingStartedDoc/sdkDocumentation'; import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/step'; import {t, tct} from 'sentry/locale'; // Configuration Start export const steps = ({ dsn, sourcePackageRegistries, }: Partial< Pick > = {}): LayoutProps['steps'] => [ { type: StepType.INSTALL, description: (

{tct('Install the [strong:NuGet] package:', { strong: , })}

), configurations: [ { language: 'shell', partialLoading: sourcePackageRegistries?.isLoading, description: t('Package Manager:'), code: `Install-Package Sentry.Google.Cloud.Functions -Version ${ sourcePackageRegistries?.isLoading ? t('\u2026loading') : sourcePackageRegistries?.data?.['sentry.dotnet.google-cloud-function'] ?.version ?? '3.34.0' }`, }, { language: 'shell', partialLoading: sourcePackageRegistries?.isLoading, description: t('Or .NET Core CLI:'), code: `dotnet add package Sentry.Google.Cloud.Functions -v ${ sourcePackageRegistries?.isLoading ? t('\u2026loading') : sourcePackageRegistries?.data?.['sentry.dotnet.google-cloud-function'] ?.version ?? '3.34.0' }`, }, { language: 'xml', partialLoading: sourcePackageRegistries?.isLoading, description: t('Or, manually add the Sentry dependency into your csproj file:'), code: ` `, }, ], }, { type: StepType.CONFIGURE, description: (

{tct( 'Then, add Sentry to the [functionCode:Function] class through [functionStartupCode:FunctionsStartup]:', { functionCode: , functionStartupCode: , } )}

), configurations: [ { language: 'csharp', code: ` // Add the following line: [assembly: FunctionsStartup(typeof(SentryStartup))] public class Function : IHttpFunction { public Task HandleAsync(HttpContext context) { // Your function code here. } } `, }, { language: 'json', description: (

{tct( "Additionally, you'll need to set up your [sentryCode:Sentry] settings on [appsettingsCode:appsettings.json]:", {sentryCode: , appsettingsCode: } )}

), code: ` { "Sentry": { "Dsn": "${dsn}", // Sends Cookies, User Id when one is logged on and user IP address to sentry. It's turned off by default. "SendDefaultPii": true, // When configuring for the first time, to see what the SDK is doing: "Debug": true, // Opt-in for payload submission. "MaxRequestBodySize": "Always", // Set TracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring. // We recommend adjusting this value in production. "TracesSampleRate": 1 } } `, }, ], }, { type: StepType.VERIFY, description: t('To verify your setup, you can capture a message with the SDK:'), configurations: [ { language: 'csharp', code: ` using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Sentry; public Task HandleAsync(HttpContext context) { SentrySdk.CaptureMessage("Hello Sentry"); } `, }, ], }, { title: t('Samples'), description: ( {t( 'See the following examples that demonstrate how to integrate Sentry with various frameworks.' )} {tct('[link:Google Cloud Functions sample]', { link: ( ), })} {tct( '[link:Multiple samples in the [code:dotnet] SDK repository] [strong:(C#)]', { link: ( ), strong: , code: , } )} {tct('[link:Basic F# sample] [strong:(F#)]', { link: , strong: , })} ), }, ]; // Configuration End export function GettingStartedWithGCPFunctions({ dsn, sourcePackageRegistries, ...props }: ModuleProps) { return ; } export default GettingStartedWithGCPFunctions;