瀏覽代碼

http config

master
anastasijasavov 3 年之前
父節點
當前提交
e2750d93df

+ 1
- 1
IdentityProvider/Program.cs 查看文件

@@ -36,7 +36,7 @@ builder.Services.AddBlazoredLocalStorage();
//call spotify api
builder.Services.AddHttpClient();

builder.Services.AddSingleton<SpotifyDbConfig>();
//builder.Services.AddSingleton<SpotifyDbConfig>();

builder.Services.Configure<SpotifyDbConfig>(
builder.Configuration.GetSection("SpotifyDb"));

+ 1
- 1
IdentityProvider/appsettings.json 查看文件

@@ -8,7 +8,7 @@
"AllowedHosts": "*",
"Kestrel": {
"EndpointDefaults": {
"Protocols": "Http1AndHttp2"
"Protocols": "Http2"
}
},
"SpotifyDb": {

+ 26
- 26
NemAnCore/Pages/Home.razor 查看文件

@@ -45,7 +45,7 @@
TokenMessage token = new() { Token = tokenS, RefreshToken = refreshT };
UserResponse user = new() { Id = userId, RefreshToken = refreshT };
track = await spotifyService.GetCurrentlyPlayingTrack(new SessionMessage { UserId = userId });
//track = await spotifyService.GetCurrentlyPlayingTrack(new SessionMessage { UserId = userId });

@@ -54,42 +54,42 @@

//var trackById = await trackService.GetById(new GrpcShared.DTO.TrackByID.TrackRequest { TrackID = "4fy1A2WBTPX55mUI16TQXa", Token = tokenS });
var items = await spotifyService.GetTopItems(new GrpcShared.DTO.TopItem.TopItemRequest { UserId = userId, IsTracks = false, Offset = 5 });
//var items = await spotifyService.GetTopItems(new GrpcShared.DTO.TopItem.TopItemRequest { UserId = userId, IsTracks = false, Offset = 5 });

await identityService.SaveTrackAsync(new GrpcShared.DTO.Db.SaveTrackRequest
{
TrackId = track.Item!.Id!,
Title = track.Item!.Name!,
Album = track.Item.Album!.Name!,
Artist = track.Item.Artists![0].Name!,
UserId = userId!
});
//await identityService.SaveTrackAsync(new GrpcShared.DTO.Db.SaveTrackRequest
// {
// TrackId = track.Item!.Id!,
// Title = track.Item!.Name!,
// Album = track.Item.Album!.Name!,
// Artist = track.Item.Artists![0].Name!,
// UserId = userId!
// });

//var resp = await identityService.ListUsersAsync(new VoidMessage());

var tokenFromDb = await identityService.GetTokenByIdAsync(new GrpcShared.DTO.Db.DbRequestMessage
{
Id = userId!
});
//var tokenFromDb = await identityService.GetTokenByIdAsync(new GrpcShared.DTO.Db.DbRequestMessage
// {
// Id = userId!
// });

var trackByUser = await identityService.GetTrackByUserAsync(new GrpcShared.DTO.Db.DbRequestMessage
{
Id = userId!
});
//var trackByUser = await identityService.GetTrackByUserAsync(new GrpcShared.DTO.Db.DbRequestMessage
// {
// Id = userId!
// });
//await identityService.DeleteTrackAsync(new GrpcShared.DTO.Db.DbRequestMessage
// {
// Id =
// });
await identityService.SaveTrackAsync(new GrpcShared.DTO.Db.SaveTrackRequest
{
//await identityService.SaveTrackAsync(new GrpcShared.DTO.Db.SaveTrackRequest
// {

TrackId = track.Item.Id!,
Title = track.Item.Name!,
Album = track.Item.Album.Name!,
Artist = track.Item.Artists[0].Name!,
UserId = userId!
});
// TrackId = track.Item.Id!,
// Title = track.Item.Name!,
// Album = track.Item.Album.Name!,
// Artist = track.Item.Artists[0].Name!,
// UserId = userId!
// });
//find id from local storage
//await identityService.DeleteUserAsync(new GrpcShared.DTO.Db.DbRequestMessage
// {

+ 7
- 0
SpotifyWorker/Program.cs 查看文件

@@ -1,10 +1,17 @@
using Grpc.Net.Client;
using Grpc.Net.Client.Web;
using GrpcShared.Interfaces;
using SpotifyService.Services;
using SpotifyWorker;


IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
services.AddHostedService<Worker>();
})
.Build();


await host.RunAsync();

+ 8
- 0
SpotifyWorker/SpotifyWorker.csproj 查看文件

@@ -8,8 +8,16 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Google.Protobuf" Version="3.21.5" />
<PackageReference Include="Grpc" Version="2.46.3" />
<PackageReference Include="Grpc.AspNetCore.Server" Version="2.48.0" />
<PackageReference Include="Grpc.Tools" Version="2.48.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.1" />
<PackageReference Include="protobuf-net.Grpc" Version="1.0.171" />
<PackageReference Include="System.Net.Http" Version="4.3.4" />
</ItemGroup>

<ItemGroup>

+ 72
- 8
SpotifyWorker/Worker.cs 查看文件

@@ -1,25 +1,89 @@
using Grpc.Core;
using Grpc.Net.Client;
using GrpcShared.Interfaces;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Server.Kestrel.Core;
using ProtoBuf.Grpc.Client;
using SpotifyService.Services;

namespace SpotifyWorker
{
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
private HttpClient? _httpClient;
private IStatsService _serviceClient;
public Worker(ILogger<Worker> logger)
{
_logger = logger;
// AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
_serviceClient = GrpcChannel.ForAddress("https://localhost:5051/").CreateGrpcService<IStatsService>();
}
public override Task StartAsync(CancellationToken cancellationToken)
{
_httpClient = new HttpClient();
return base.StartAsync(cancellationToken);
}
//public override Task StartAsync(CancellationToken cancellationToken)
//{
// return base.StartAsync(cancellationToken);
//}
//public class GrpcServerStartup
//{
// public void ConfigureServices(IServiceCollection services)
// {
// services.AddGrpc();
// //services.AddTransient<IStatsService, StatsService>();
// }

// public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
// {
// app.UseRouting();

// app.UseEndpoints(endpoints =>
// {
// endpoints.MapGrpcService<StatsService>();
// });
// }
//}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
// await Host.CreateDefaultBuilder()
//.ConfigureWebHostDefaults(builder =>
//{
// builder
// .ConfigureKestrel(options =>
// {
// options.ListenAnyIP(0, listenOptions =>
// {
// listenOptions.Protocols = HttpProtocols.Http2;
// });
// })
// .UseKestrel()
// .UseStartup<GrpcServerStartup>();
//})
//.Build()
//.StartAsync(stoppingToken);
//await _statsService.GetCurrentlyPlayingTrack(new GrpcShared.DTO.SessionMessage { UserId = "6308a8bfc731f7b44d76ac4e" });
//var result = await _httpClient.GetAsync("url");
//_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
await Task.Delay(5000, stoppingToken);
try
{
var res = await _serviceClient.GetCurrentlyPlayingTrack(new GrpcShared.DTO.SessionMessage { UserId = "6308a8bfc731f7b44d76ac4e" });

}
catch (RpcException e)
{
if (e.StatusCode == StatusCode.Cancelled)
{
return;
}
Console.WriteLine(e.Message);
throw;
}
//res = await _serviceClient.GetCurrentlyPlayingTrack(new GrpcShared.DTO.SessionMessage { UserId = "6308a8bfc731f7b44d76ac4e" });


}
}
}

+ 10
- 0
gRPCServer/GLOBALS.cs 查看文件

@@ -5,5 +5,15 @@ namespace SpotifyService
{
public const String SPOTIFYURL = "https://api.spotify.com/v1/";
public const String MEDIATYPE = "application/json";
public const string CLIENT_ID = "83e1d09876b049c4bb1953185a4b3bfb";
public const string SECRET = "ea752433d0774fad87fab5c1ee788c8d";
public const string REDIRECT_URI = "http://localhost:5051/callback";
public const string SCOPE = "user-read-currently-playing user-read-email user-library-modify user-top-read user-read-private";
/*
"ClientId": "83e1d09876b049c4bb1953185a4b3bfb",
"RedirectURI": "https://localhost:44342/callback",
"Scope": "user-read-currently-playing user-read-email user-library-modify user-top-read user-read-private",
"ClientSecret": "ea752433d0774fad87fab5c1ee788c8d"
*/
}
}

+ 13
- 2
gRPCServer/Services/AuthService.cs 查看文件

@@ -41,7 +41,12 @@ namespace SpotifyService.Services
http.BaseAddress = new Uri(url);

//get client id and secret, and redirect uri from appsettings, convert to base64 and set as header
var secrets = await GetAuthParams();
//var secrets = await GetAuthParams();
var secrets = new CodeRequest {
ClientId = GLOBALS.CLIENT_ID ,
ClientSecret = GLOBALS.SECRET,
RedirectURI = GLOBALS.REDIRECT_URI
};
byte[] contentType = Encoding.UTF8.GetBytes($"{secrets.ClientId}:{secrets.ClientSecret}");
tokenRequest.RedirectUri = secrets.RedirectURI;

@@ -125,7 +130,13 @@ namespace SpotifyService.Services
requestBody["refresh_token"] = tokenM.RefreshToken!;
requestBody["grant_type"] = "refresh_token";

var secrets = await GetAuthParams();
//var secrets = await GetAuthParams();
var secrets = new CodeRequest
{
ClientId = GLOBALS.CLIENT_ID,
ClientSecret = GLOBALS.SECRET,
RedirectURI = GLOBALS.REDIRECT_URI
};
byte[] contentType = Encoding.UTF8.GetBytes($"{secrets.ClientId}:{secrets.ClientSecret}");

//AUTHORIZATION HEADER

+ 2
- 2
gRPCServer/appsettings.json 查看文件

@@ -8,12 +8,12 @@
"AllowedHosts": "*",
"Kestrel": {
"EndpointDefaults": {
"Protocols": "Http1AndHttp2"
"Protocols": "Http2"
}
},
"AuthParams": {
"ClientId": "83e1d09876b049c4bb1953185a4b3bfb",
"RedirectURI": "https://localhost:44342/callback",
"RedirectURI": "http://localhost:5051/callback",
"Scope": "user-read-currently-playing user-read-email user-library-modify user-top-read user-read-private",
"ClientSecret": "ea752433d0774fad87fab5c1ee788c8d"
}

Loading…
取消
儲存