소스 검색

adding endpoint for getting the current playback state

tags/v1.1.0^2
anastasijasavov 3 년 전
부모
커밋
bcd02acb3d

+ 7
- 1
GrpcShared/DTO/TokenMessage.cs 파일 보기

@@ -7,9 +7,15 @@ using System.Threading.Tasks;

namespace GrpcShared.DTO
{
[ProtoContract]
[ProtoContract(SkipConstructor = true)]
public class TokenMessage
{
public TokenMessage(string? token)
{
Token = token;
}

[ProtoMember(1)]
public string? Token { get; set; }
}

+ 3
- 2
GrpcShared/Interfaces/IStatsService.cs 파일 보기

@@ -1,4 +1,5 @@
using GrpcShared.DTO.Track;
using GrpcShared.DTO;
using GrpcShared.DTO.Track;
using ProtoBuf.Grpc.Configuration;
using System;
using System.Collections.Generic;
@@ -11,6 +12,6 @@ namespace GrpcShared.Interfaces
[Service]
public interface IStatsService
{
Task<TrackResponse> GetCurrentlyPlayingTrack(string token);
Task<TrackResponse> GetCurrentlyPlayingTrack(TokenMessage token);
}
}

+ 13
- 1
NemAnCore/Pages/Home.razor 파일 보기

@@ -1,16 +1,28 @@
@page "/home"
@attribute [Authorize]
@using GrpcShared.DTO
@using GrpcShared.DTO.Track
@using NemAnBlazor.Services.Interfaces
@inject Blazored.SessionStorage.ISessionStorageService sessionStorage
@inject IStatsClientService spotifyService

<h3>Home</h3>

<p>login radi</p>
<AuthorizeView>
<Authorized>
<p>autorizovan si</p>
</Authorized>
<NotAuthorized>
<LoginRedirect/>
</NotAuthorized>
</AuthorizeView>
@code {
protected override async Task OnInitializedAsync()
{
//string tokenS = await sessionStorage.GetItemAsync<string>("token");
//TokenMessage token = new TokenMessage(tokenS);

//TrackResponse response = await spotifyService.GetCurrentlyPlayingTrack(token);
}
}

+ 1
- 0
NemAnCore/Program.cs 파일 보기

@@ -28,6 +28,7 @@ builder.Services.AddScoped<AuthenticationStateProvider, AuthClientService>();

builder.Services.AddScoped<ITrackClientService, TrackClientService>();
builder.Services.AddScoped<IAuthClientService, AuthClientService>();
builder.Services.AddScoped<IStatsClientService, StatsClientService>();
builder.Services.AddBlazoredSessionStorage();
builder.Services.AddScoped<AuthenticationStateProvider, AuthClientService>();
builder.Services.AddAuthorizationCore();

+ 1
- 1
NemAnCore/Services/AuthClientService.cs 파일 보기

@@ -34,7 +34,7 @@ namespace NemAnBlazor.Services
//token = "BQBMgFm6jnFNWWeZEMGIRP_f-ENPid7Kw8JubAyuWAe4JK0S1DPFGlaAdZ_Fey6ePkCnz8-cqC0oyRmrciWUy5ISUTQKDe8PTQn4iBRMYCgM0n4GnS1xAErHJcm4Vpu2TAngk-4vQUOfTQRcedNTfCaHKP4uFJgTlTI7JHGrtB-_EZLnFcZ2OQe31oFQIJ1wM3ZtvwnN";
if (token == null) return new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity()));
var userInfo = await _serviceClient.GetUserInfo(new TokenMessage { Token = token });
var userInfo = await _serviceClient.GetUserInfo(new TokenMessage ( token ));

List<Claim> claims = new();


+ 5
- 1
NemAnCore/Services/Interfaces/IStatsClientService.cs 파일 보기

@@ -1,6 +1,10 @@
namespace NemAnBlazor.Services.Interfaces
using GrpcShared.DTO;
using GrpcShared.DTO.Track;

namespace NemAnBlazor.Services.Interfaces
{
public interface IStatsClientService
{
Task<TrackResponse> GetCurrentlyPlayingTrack(TokenMessage token);
}
}

+ 16
- 2
NemAnCore/Services/StatsClientService.cs 파일 보기

@@ -1,8 +1,22 @@
using NemAnBlazor.Services.Interfaces;
using Grpc.Net.Client;
using GrpcShared.DTO;
using GrpcShared.DTO.Track;
using GrpcShared.Interfaces;
using NemAnBlazor.Services.Interfaces;
using ProtoBuf.Grpc.Client;

namespace NemAnBlazor.Services
{
public class StatsClientService :IStatsClientService
public class StatsClientService : IStatsClientService
{
private IStatsService _serviceClient;
public StatsClientService(GrpcChannel channel)
{
_serviceClient = channel.CreateGrpcService<IStatsService>();
}
public async Task<TrackResponse> GetCurrentlyPlayingTrack(TokenMessage token)
{
return await _serviceClient.GetCurrentlyPlayingTrack(token);
}
}
}

+ 15
- 3
gRPCServer/Services/StatsService.cs 파일 보기

@@ -1,6 +1,9 @@

using GrpcShared.DTO;
using GrpcShared.DTO.Track;
using GrpcShared.Interfaces;
using Microsoft.Net.Http.Headers;
using Newtonsoft.Json;

namespace SpotifyService.Services
{
@@ -11,10 +14,19 @@ namespace SpotifyService.Services
public StatsService(IHttpClientFactory httpClientFactory)
{
_httpClientFactory = httpClientFactory;
}
public Task<TrackResponse> GetCurrentlyPlayingTrack(string token)
}

public async Task<TrackResponse> GetCurrentlyPlayingTrack(TokenMessage token)
{
return null;
var client = _httpClientFactory.CreateClient();
client.DefaultRequestHeaders.Add(HeaderNames.Authorization, "Bearer " + token);

var searchResult = await client.GetAsync($"player/currently-playing");

var responses = JsonConvert.DeserializeObject<TrackResponse>(await searchResult.Content.ReadAsStringAsync())!;

return responses;

}
}
}

Loading…
취소
저장