File: Components_Pages_ExternalServices_razor.g.cs
Project: src\playground\ExternalServices\WebFrontEnd\WebFrontEnd.csproj (WebFrontEnd)
#pragma checksum "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor" "{8829d00f-11b8-4213-878b-770e8597ac16}" "427aaeefde656cf38554b772fe4554f4243d9dfed1466c53493b897483fc9f05"
// <auto-generated/>
#pragma warning disable 1591
namespace WebFrontEnd.Components.Pages
{
    #line default
    using global::System;
    using global::System.Collections.Generic;
    using global::System.Linq;
    using global::System.Threading.Tasks;
    using global::Microsoft.AspNetCore.Components;
#nullable restore
#line (1,2)-(1,23) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\_Imports.razor"
using System.Net.Http
 
#nullable disable
    ;
#nullable restore
#line (2,2)-(2,28) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\_Imports.razor"
using System.Net.Http.Json
 
#nullable disable
    ;
#nullable restore
#line (3,2)-(3,45) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\_Imports.razor"
using Microsoft.AspNetCore.Components.Forms
 
#nullable disable
    ;
#nullable restore
#line (4,2)-(4,47) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\_Imports.razor"
using Microsoft.AspNetCore.Components.Routing
 
#nullable disable
    ;
#nullable restore
#line (5,2)-(5,43) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\_Imports.razor"
using Microsoft.AspNetCore.Components.Web
 
#nullable disable
    ;
#nullable restore
#line (6,2)-(6,61) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\_Imports.razor"
using static Microsoft.AspNetCore.Components.Web.RenderMode
 
#nullable disable
    ;
#nullable restore
#line (7,2)-(7,58) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\_Imports.razor"
using Microsoft.AspNetCore.Components.Web.Virtualization
 
#nullable disable
    ;
#nullable restore
#line (8,2)-(8,27) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\_Imports.razor"
using Microsoft.JSInterop
 
#nullable disable
    ;
#nullable restore
#line (9,2)-(9,19) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\_Imports.razor"
using WebFrontEnd
 
#nullable disable
    ;
#nullable restore
#line (10,2)-(10,30) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\_Imports.razor"
using WebFrontEnd.Components
 
#nullable disable
    ;
#nullable restore
#line (2,2)-(2,24) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
using System.Text.Json
 
#nullable disable
    ;
#nullable restore
#line (3,2)-(3,30) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
using System.Text.Json.Nodes
 
#nullable disable
    ;
    #line default
    #line hidden
#nullable restore
#line (4,12)-(4,29) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
[StreamRendering]
 
#line default
#line hidden
#nullable disable
 
    [global::Microsoft.AspNetCore.Components.RouteAttribute(
    // language=Route,Component
#nullable restore
#line (1,7)-(1,27) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
"/external-services"
 
#line default
#line hidden
#nullable disable
    )]
    #nullable restore
    public partial class ExternalServices : global::Microsoft.AspNetCore.Components.ComponentBase
    #nullable disable
    {
        #pragma warning disable 1998
        protected override void BuildRenderTree(global::Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder)
        {
            __builder.OpenComponent<global::Microsoft.AspNetCore.Components.Web.PageTitle>(0);
            __builder.AddAttribute(1, "ChildContent", (global::Microsoft.AspNetCore.Components.RenderFragment)((__builder2) => {
                __builder2.AddContent(2, "External Services");
            }
            ));
            __builder.CloseComponent();
            __builder.AddMarkupContent(3, "\r\n\r\n");
            __builder.AddMarkupContent(4, "<h1>External Services</h1>\r\n\r\n");
            __builder.AddMarkupContent(5, "<p>This component demonstrates communicating with external services.</p>\r\n\r\n");
            __builder.AddMarkupContent(6, "<h2>Direct to External Services</h2>\r\n");
            __builder.OpenElement(7, "p");
            __builder.AddMarkupContent(8, "<strong>NuGet API version: </strong>");
#nullable restore
#line (16,1)-(16,5) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
    
 
#line default
#line hidden
#nullable disable
 
#nullable restore
#line (16,6)-(18,1) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
if (nugetApiVersion == null)
    {
 
#line default
#line hidden
#nullable disable
 
            __builder.AddMarkupContent(9, "<em>loading...</em>");
#nullable restore
#line (19,1)-(22,10) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
    }
    else
    {
         
 
#line default
#line hidden
#nullable disable
 
#nullable restore
#line (22,11)-(22,26) 25 "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
__builder.AddContent(10, nugetApiVersion
 
#line default
#line hidden
#nullable disable
            );
#nullable restore
#line (22,26)-(24,1) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
 
    }
 
#line default
#line hidden
#nullable disable
 
            __builder.CloseElement();
            __builder.AddMarkupContent(11, "\r\n\r\n");
            __builder.OpenElement(12, "p");
            __builder.OpenElement(13, "strong");
            __builder.AddContent(14, "Response from ");
#nullable restore
#line (26,27)-(26,45) 25 "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
__builder.AddContent(15, externalServiceUrl
 
#line default
#line hidden
#nullable disable
            );
            __builder.AddContent(16, ": ");
            __builder.CloseElement();
#nullable restore
#line (27,2)-(29,1) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
if (externalServiceStatus == null)
{
 
#line default
#line hidden
#nullable disable
 
            __builder.AddMarkupContent(17, "<em>loading...</em>");
#nullable restore
#line (30,1)-(33,5) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
}
else
{
    
 
#line default
#line hidden
#nullable disable
 
#nullable restore
#line (33,6)-(33,27) 25 "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
__builder.AddContent(18, externalServiceStatus
 
#line default
#line hidden
#nullable disable
            );
#nullable restore
#line (33,27)-(35,1) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
 
}
 
#line default
#line hidden
#nullable disable
 
            __builder.CloseElement();
            __builder.AddMarkupContent(19, "\r\n\r\n");
            __builder.AddMarkupContent(20, "<h2>Via YARP gateway</h2>\r\n");
            __builder.OpenElement(21, "p");
            __builder.AddMarkupContent(22, "<strong>NuGet API version: </strong>");
#nullable restore
#line (40,1)-(40,5) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
    
 
#line default
#line hidden
#nullable disable
 
#nullable restore
#line (40,6)-(42,1) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
if (gatewayNugetApiVersion == null)
    {
 
#line default
#line hidden
#nullable disable
 
            __builder.AddMarkupContent(23, "<em>loading...</em>");
#nullable restore
#line (43,1)-(46,9) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
    }
    else
    {
        
 
#line default
#line hidden
#nullable disable
 
#nullable restore
#line (46,10)-(46,32) 25 "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
__builder.AddContent(24, gatewayNugetApiVersion
 
#line default
#line hidden
#nullable disable
            );
#nullable restore
#line (46,32)-(48,1) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
 
    }
 
#line default
#line hidden
#nullable disable
 
            __builder.CloseElement();
            __builder.AddMarkupContent(25, "\r\n\r\n");
            __builder.OpenElement(26, "p");
            __builder.OpenElement(27, "strong");
            __builder.AddContent(28, "Response from ");
#nullable restore
#line (51,28)-(51,53) 25 "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
__builder.AddContent(29, gatewayExternalServiceUrl
 
#line default
#line hidden
#nullable disable
            );
            __builder.AddContent(30, ": ");
            __builder.CloseElement();
#nullable restore
#line (52,1)-(52,5) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
    
 
#line default
#line hidden
#nullable disable
 
#nullable restore
#line (52,6)-(54,1) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
if (gatewayExternalServiceStatus == null)
    {
 
#line default
#line hidden
#nullable disable
 
            __builder.AddMarkupContent(31, "<em>loading...</em>");
#nullable restore
#line (55,1)-(58,9) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
    }
    else
    {
        
 
#line default
#line hidden
#nullable disable
 
#nullable restore
#line (58,10)-(58,38) 25 "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
__builder.AddContent(32, gatewayExternalServiceStatus
 
#line default
#line hidden
#nullable disable
            );
#nullable restore
#line (58,38)-(60,1) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
 
    }
 
#line default
#line hidden
#nullable disable
 
            __builder.CloseElement();
        }
        #pragma warning restore 1998
#nullable restore
#line (62,8)-(158,1) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
 
    private string? externalServiceUrl;
    private string? nugetApiVersion;
    private string? externalServiceStatus;
    private string? gatewayExternalServiceUrl;
    private string? gatewayNugetApiVersion;
    private string? gatewayExternalServiceStatus;
 
    protected override async Task OnInitializedAsync()
    {
        var externalServiceClient = HttpClientFactory.CreateClient("external-service");
        externalServiceUrl = externalServiceClient.BaseAddress?.ToString();
        var externalServiceTask = GetExternalServiceStatus(externalServiceClient);
 
        var nugetClient = HttpClientFactory.CreateClient("nuget");
        var nugetTask = GetNuGetVersion(nugetClient);
 
        var gatewayClient = HttpClientFactory.CreateClient("gateway");
        gatewayExternalServiceUrl = new Uri(gatewayClient.BaseAddress!, "/external-service").ToString();
        var gatewayExternalServiceTask = GetExternalServiceStatus(gatewayClient, "external-service");
        var gatewayNugetTask = GetNuGetVersion(gatewayClient, "nuget");
 
        externalServiceStatus = await externalServiceTask;
        nugetApiVersion = await nugetTask;
        gatewayExternalServiceStatus = await gatewayExternalServiceTask;
        gatewayNugetApiVersion = await gatewayNugetTask;
    }
 
    private async Task<string> GetExternalServiceStatus(HttpClient client, string? pathPrefix = null)
    {
        try
        {
            var path = $"{pathPrefix}";
            var response = await client.GetAsync(path);
            return response.StatusCode.ToString();
        }
        catch (Exception ex)
        {
            return $"Error: {ex.Message}";
        }
    }
 
    private async Task<string?> GetNuGetVersion(HttpClient client, string? pathPrefix = null)
    {
        try
        {
            var path = $"{pathPrefix}/v3/index.json";
            var response = await client.GetAsync(path);
            response.EnsureSuccessStatusCode();
 
            using var contentStream = await response.Content.ReadAsStreamAsync();
 
            return await GetPropertyValueAsync(contentStream, "version");
        }
        catch (Exception ex)
        {
            return $"Error: {ex.Message}";
        }
    }
 
    public static async Task<string?> GetPropertyValueAsync(Stream jsonStream, string propertyName)
    {
        // Parse the JSON asynchronously until we get the version property
        var buffer = new byte[256];
        int bytesRead;
        var jsonReaderState = new JsonReaderState();
 
        while ((bytesRead = await jsonStream.ReadAsync(buffer)) > 0)
        {
            var span = new ReadOnlySpan<byte>(buffer, 0, bytesRead);
            var reader = new Utf8JsonReader(span, isFinalBlock: false, state: jsonReaderState);
 
            while (reader.Read())
            {
                if (reader.TokenType == JsonTokenType.PropertyName && reader.ValueTextEquals(propertyName))
                {
                    // Read the next token to get the value
                    if (!reader.Read())
                    {
                        throw new JsonException("Unexpected end after 'version' property.");
                    }
 
                    if (reader.TokenType != JsonTokenType.String && reader.TokenType != JsonTokenType.Number)
                    {
                        throw new JsonException($"Unexpected token type for 'version': {reader.TokenType}");
                    }
 
                    return reader.GetString();
                }
            }
 
            jsonReaderState = reader.CurrentState;
        }
 
        return null; // "version" not found
    }
 
#line default
#line hidden
#nullable disable
 
        [global::Microsoft.AspNetCore.Components.InjectAttribute] private 
#nullable restore
#line (5,9)-(5,27) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
IHttpClientFactory
 
#line default
#line hidden
#nullable disable
         
#nullable restore
#line (5,28)-(5,45) "D:\a\_work\1\s\playground\ExternalServices\WebFrontEnd\Components\Pages\ExternalServices.razor"
HttpClientFactory
 
#line default
#line hidden
#nullable disable
         { get; set; }
         = default!;
    }
}
#pragma warning restore 1591