Pārlūkot izejas kodu

added connection and models for code first approach to identity provider

tags/v1.1.0^2
anastasijasavov pirms 3 gadiem
vecāks
revīzija
62831b1398

+ 131
- 0
Grpc.Shared/DTOs/Search/SearchDTO.cs Parādīt failu

@@ -0,0 +1,131 @@
using ProtoBuf;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;

namespace Grpc.Shared.DTOs.Search
{
[ProtoContract]
internal class SearchDTO
{
public partial class SearchContracts
{
[ProtoMember(1)]
public Tracks? Tracks { get; set; }
}

public partial class Tracks
{
[ProtoMember(1)]
public Uri Href { get; set; }

[ProtoMember(2)]
public Items[]? Items { get; set; }
}

public partial class Items
{
[ProtoMember(1)]
public Album Album { get; set; }

[ProtoMember(2)]
public Artist[] Artists { get; set; }

[ProtoMember(3)]
public long DurationMs { get; set; }

[ProtoMember(4)]
public ExternalUrls ExternalUrls { get; set; }

[ProtoMember(5)]
public Uri Href { get; set; }

[ProtoMember(6)]
public string Id { get; set; }

[ProtoMember(7)]
public string Name { get; set; }

[ProtoMember(8)]
public long Popularity { get; set; }

[ProtoMember(9)]
public long TrackNumber { get; set; }

[ProtoMember(10)]
public string Type { get; set; }

[ProtoMember(11)]
public string Uri { get; set; }
}

public partial class Album
{
[ProtoMember(1)]
public Uri Href { get; set; }

[ProtoMember(2)]
public string Id { get; set; }

[ProtoMember(3)]
public Image[] Images { get; set; }

[ProtoMember(4)]
public string Name { get; set; }

[ProtoMember(5)]
public DateTimeOffset ReleaseDate { get; set; }

[ProtoMember(6)]
public long TotalTracks { get; set; }

[ProtoMember(7)]
public string Type { get; set; }

[ProtoMember(8)]
public string Uri { get; set; }
}

public partial class Image
{
[ProtoMember(1)]
public long Height { get; set; }

[ProtoMember(2)]
public Uri Url { get; set; }

[ProtoMember(3)]
public long Width { get; set; }
}

public partial class Artist
{
[ProtoMember(1)]
public ExternalUrls ExternalUrls { get; set; }

[ProtoMember(2)]
public Uri Href { get; set; }

[ProtoMember(3)]
public string Id { get; set; }

[ProtoMember(4)]
public string Name { get; set; }

[ProtoMember(5)]
public string Type { get; set; }

[ProtoMember(6)]
public string Uri { get; set; }
}

public partial class ExternalUrls
{
[ProtoMember(1)]
public Uri Spotify { get; set; }
}
}
}

+ 14
- 0
Grpc.Shared/DTOs/Search/SearchRequestDTO.cs Parādīt failu

@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Grpc.Shared.DTOs.Search
{
internal class SearchRequestDTO
{

}

}

+ 14
- 0
Grpc.Shared/GrpcShared.csproj Parādīt failu

@@ -0,0 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="protobuf-net.Core" Version="3.1.17" />
<PackageReference Include="System.ServiceModel.Primitives" Version="4.5.3" />
</ItemGroup>

</Project>

+ 34
- 0
Grpc.Shared/Interfaces/ISearchService.cs Parādīt failu

@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;

namespace GrpcShared.Interfaces
{
[ServiceContract]
public interface ISearchService
{
Task<SearchResult> SearchTracks(SearchRequest req);
}

[DataContract]
public class SearchResult
{
[DataMember(Order = 1)]
public string NewQuery { get; set; }
[DataMember(Order = 2)]
public string NewType { get; set; }
}

[DataContract]
public class SearchRequest
{
[DataMember(Order = 1)]
public string Query { get; set; }
[DataMember(Order = 2)]
public string Type { get; set; } = "track";
}
}

+ 26
- 0
GrpcShared/DTO/Auth/AuthRequest.cs Parādīt failu

@@ -0,0 +1,26 @@
using ProtoBuf;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GrpcShared.DTO.Auth
{
[ProtoContract]
public class AuthRequest
{
[ProtoMember(1)]
public string ClientId { get; set; }
[ProtoMember(2)]
public string ClientSecret { get; set; }
[ProtoMember(3)]
public string RedirectURI { get; set; }
[ProtoMember(4)]
public string ResponseType { get; set; } = "track";
[ProtoMember(5)]
public string Scope { get; set; }
[ProtoMember(6)]
public string ShowDialog{ get; set; }
}
}

+ 18
- 0
GrpcShared/DTO/Auth/AuthResponse.cs Parādīt failu

@@ -0,0 +1,18 @@
using ProtoBuf;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GrpcShared.DTO.Auth
{
[ProtoContract]
public class AuthResponse
{
[ProtoMember(1)]
public string AccessToken { get; set; }
[ProtoMember(2)]
public string RefreshToken{ get; set; }
}
}

+ 16
- 0
GrpcShared/DTO/Auth/CodeResponse.cs Parādīt failu

@@ -0,0 +1,16 @@
using ProtoBuf;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GrpcShared.DTO.Auth
{
[ProtoContract]
public class CodeResponse
{
[ProtoMember(1)]
public string Code { get; set; }
}
}

+ 10
- 0
GrpcShared/Interfaces/IAuthService.cs Parādīt failu

@@ -0,0 +1,10 @@
using GrpcShared.DTO.Auth;

namespace IdentityProvider.Services.Interfaces
{
public interface IAuthService
{
Task<CodeResponse> GetCode(AuthRequest request);
Task<AuthResponse> GetAccessToken(CodeResponse code);
}
}

+ 7
- 4
IdentityProvider/IdentityProvider.csproj Parādīt failu

@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
@@ -7,12 +7,15 @@
</PropertyGroup>

<ItemGroup>
<Protobuf Include="Protos\greet.proto" GrpcServices="Server" />
<Protobuf Include="Protos\auth.proto" GrpcServices="Server" />
<PackageReference Include="Grpc.AspNetCore" Version="2.40.0" />
<PackageReference Include="Grpc.AspNetCore.Web" Version="2.47.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="6.0.8" />
<PackageReference Include="protobuf-net.Grpc.AspNetCore" Version="1.0.152" />
<PackageReference Include="protobuf-net.Grpc.AspNetCore.Reflection" Version="1.0.152" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Grpc.AspNetCore" Version="2.40.0" />
<ProjectReference Include="..\GrpcShared\GrpcShared.csproj" />
</ItemGroup>

</Project>

+ 38
- 4
IdentityProvider/Program.cs Parādīt failu

@@ -1,17 +1,51 @@
using IdentityProvider.Services;
using ProtoBuf.Grpc.Server;

var builder = WebApplication.CreateBuilder(args);

// Additional configuration is required to successfully run gRPC on macOS.
// For instructions on how to configure Kestrel and gRPC clients on macOS, visit https://go.microsoft.com/fwlink/?linkid=2099682

// Add services to the container.
builder.Services.AddControllersWithViews();
builder.Services.AddRazorPages();

builder.Services.AddEndpointsApiExplorer();

builder.Services.AddGrpc();
builder.Services.AddCodeFirstGrpc();
builder.Services.AddCodeFirstGrpcReflection();

var app = builder.Build();

// Configure the HTTP request pipeline.
app.MapGrpcService<GreeterService>();
app.MapGet("/", () => "Communication with gRPC endpoints must be made through a gRPC client. To learn how to create a client, visit: https://go.microsoft.com/fwlink/?linkid=2086909");
if (app.Environment.IsDevelopment())
{
app.UseWebAssemblyDebugging();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}

app.UseHttpsRedirection();

app.UseBlazorFrameworkFiles();
app.UseStaticFiles();

app.UseRouting();

app.UseGrpcWeb();

app.MapRazorPages();
app.MapControllers();

//app.MapGrpcService<WeatherService>();
app.MapGrpcService<AuthService>().EnableGrpcWeb();

app.MapCodeFirstGrpcReflectionService();

app.MapFallbackToFile("index.html");

app.Run();
app.Run();

+ 0
- 26
IdentityProvider/Protos/auth.proto Parādīt failu

@@ -1,26 +0,0 @@
syntax = "proto3";

option csharp_namespace = "IdentityProvider.Protos";

package auth;

service AuthorizationService {
rpc RedirectUser(AuthParams) returns (AuthResponse);
rpc GetAccessToken(AuthResponse) returns (AccessResponse);
}

message AuthParams{
string client_id = 1;
string redirect_uri = 2;
string response_type = 3;
string scope = 4;
bool show_dialog = 5;
}

message AuthResponse {
string code = 1;
}

message AccessResponse {
string access_token = 1;
}

+ 0
- 21
IdentityProvider/Protos/greet.proto Parādīt failu

@@ -1,21 +0,0 @@
syntax = "proto3";

option csharp_namespace = "IdentityProvider";

package greet;

// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply);
}

// The request message containing the user's name.
message HelloRequest {
string name = 1;
}

// The response message containing the greetings.
message HelloReply {
string message = 1;
}

+ 12
- 1
IdentityProvider/Services/AuthService.cs Parādīt failu

@@ -1,7 +1,10 @@
//using IdentityProvider.Protos.AuthService;
using GrpcShared.DTO.Auth;
using IdentityProvider.Services.Interfaces;

namespace IdentityProvider.Services
{
public class AuthService
public class AuthService :IAuthService
{
private readonly ILogger<AuthService> _logger;
public AuthService(ILogger<AuthService> logger)
@@ -9,6 +12,14 @@ namespace IdentityProvider.Services
_logger = logger;
}

public Task<AuthResponse> GetAccessToken(CodeResponse code)
{
throw new NotImplementedException();
}

public Task<CodeResponse> GetCode(AuthRequest request)
{
throw new NotImplementedException();
}
}
}

+ 0
- 22
IdentityProvider/Services/GreeterService.cs Parādīt failu

@@ -1,22 +0,0 @@
using Grpc.Core;
using IdentityProvider;

namespace IdentityProvider.Services
{
public class GreeterService : Greeter.GreeterBase
{
private readonly ILogger<GreeterService> _logger;
public GreeterService(ILogger<GreeterService> logger)
{
_logger = logger;
}

public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
{
return Task.FromResult(new HelloReply
{
Message = "Hello " + request.Name
});
}
}
}

+ 5
- 1
NemAnCore/Pages/Index.razor Parādīt failu

@@ -11,5 +11,9 @@ Dobrodošli u našu NemAn aplikaciju.


@code {
private async Task OnInitializedAsync()
{

NavigationManager.NavigateTo();
}
}

Notiek ielāde…
Atcelt
Saglabāt