Explorar el Código

get currently playing track added

tags/v1.1.0^2
anastasijasavov hace 3 años
padre
commit
f5b8244489

+ 19
- 19
GrpcShared/DTO/Track/TrackResponse.cs Ver fichero

public class TrackResponse public class TrackResponse
{ {
[ProtoMember(1)] [ProtoMember(1)]
public int? Timestamp{ get; set; }
public string? timestamp{ get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public int? Progress_ms { get; set; }
public int? progress_ms { get; set; }
[ProtoMember(3)] [ProtoMember(3)]
public bool? Is_playing { get; set; }
public bool? is_playing { get; set; }
[ProtoMember(4)] [ProtoMember(4)]
public Item? Item { get; set; }
public Item? item { get; set; }


} }
[ProtoContract] [ProtoContract]
public class Item public class Item
{ {
[ProtoMember(1)] [ProtoMember(1)]
public Album? Album { get; set; }
public Album? album { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public Artist[]? Artists { get; set; }
public Artist[]? artists { get; set; }
[ProtoMember(3)] [ProtoMember(3)]
public string? Id { get; set; }
public string? id { get; set; }
[ProtoMember(4)] [ProtoMember(4)]
public string? Name { get; set; }
public string? name { get; set; }
[ProtoMember(5)] [ProtoMember(5)]
public string? Href { get; set; }
public string? href { get; set; }


} }
[ProtoContract] [ProtoContract]
public class Album public class Album
{ {
[ProtoMember(1)] [ProtoMember(1)]
public string? Id { get; set; }
public string? id { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public string? Name { get; set; }
public string? name { get; set; }
[ProtoMember(3)] [ProtoMember(3)]
public Image[]? Images { get; set; }
public Image[]? images { get; set; }
[ProtoMember(4)] [ProtoMember(4)]
public string? Href { get; set; }
public string? href { get; set; }
} }
[ProtoContract] [ProtoContract]
public class Artist public class Artist
{ {
[ProtoMember(1)] [ProtoMember(1)]
public string? Id { get; set; }
public string? id { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public string? Name { get; set; }
public string? name { get; set; }
[ProtoMember(3)] [ProtoMember(3)]
public string? Href { get; set; }
public string? href { get; set; }
} }
[ProtoContract] [ProtoContract]
public class Image public class Image
{ {
[ProtoMember(1)] [ProtoMember(1)]
public int? Height{ get; set; }
public int? height{ get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public string? Url { get; set; }
public string? url { get; set; }
[ProtoMember(3)] [ProtoMember(3)]
public int? Width { get; set; }
public int? width { get; set; }
} }
} }

+ 1
- 0
IdentityProvider/Program.cs Ver fichero

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


app.MapCodeFirstGrpcReflectionService(); app.MapCodeFirstGrpcReflectionService();



+ 1
- 1
NemAnCore/Pages/FetchData.razor Ver fichero

private async Task Click(){ private async Task Click(){


var token = await sessionStorage.GetItemAsync<string>("token"); var token = await sessionStorage.GetItemAsync<string>("token");
TokenMessage tm = new() { Token = token };
TokenMessage tm = new(token) ;
SearchRequest request = new() { Query = "aitch", Type = "track", Token = token }; SearchRequest request = new() { Query = "aitch", Type = "track", Token = token };
SearchResponse searchResponse = await SearchService.GetListSearchAsync(request); SearchResponse searchResponse = await SearchService.GetListSearchAsync(request);

+ 4
- 12
NemAnCore/Pages/Home.razor Ver fichero

<h3>Home</h3> <h3>Home</h3>


<p>login radi</p> <p>login radi</p>
<AuthorizeView>
<Authorized>
<p>autorizovan si</p>
</Authorized>
<NotAuthorized>
<LoginRedirect/>
</NotAuthorized>
</AuthorizeView>

@code { @code {
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
//string tokenS = await sessionStorage.GetItemAsync<string>("token");
//TokenMessage token = new TokenMessage(tokenS);
string tokenS = await sessionStorage.GetItemAsync<string>("token");
TokenMessage token = new TokenMessage(tokenS);


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

+ 2
- 2
NemAnCore/Pages/Login.razor Ver fichero

</Authorized> </Authorized>
<NotAuthorized> <NotAuthorized>
Nisi autorizovan. Nisi autorizovan.
<button class="btn btn-primary" @onclick="Login">Autorizuj</button>
<button class="btn btn-primary" @onclick="LoginUser">Autorizuj</button>
</NotAuthorized> </NotAuthorized>
</AuthorizeView> </AuthorizeView>


message = "Cao"; message = "Cao";
} }


private async Task Login()
private async Task LoginUser()
{ {
//var response = await SearchService.GetListSearchAsync(new GrpcShared.DTO.Search.SearchRequest() { Query="venom", Type = "track"}); //var response = await SearchService.GetListSearchAsync(new GrpcShared.DTO.Search.SearchRequest() { Query="venom", Type = "track"});
CodeRequest authParams = await AuthService.GetAuthParams(); CodeRequest authParams = await AuthService.GetAuthParams();

+ 0
- 1
NemAnCore/Program.cs Ver fichero

using Grpc.Net.Client; using Grpc.Net.Client;
using Grpc.Net.Client.Web; using Grpc.Net.Client.Web;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Authorization;
using Microsoft.AspNetCore.Components.Web; using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting; using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using NemAnBlazor; using NemAnBlazor;

+ 18
- 18
NemAnCore/Services/AuthClientService.cs Ver fichero

return await _serviceClient.GetAccessToken(request); return await _serviceClient.GetAccessToken(request);
} }


public override async Task<AuthenticationState> GetAuthenticationStateAsync()
{
string token = await _sessionStorage.GetItemAsync<string>("token");
//public override async Task<AuthenticationState> GetAuthenticationStateAsync()
//{
// string token = await _sessionStorage.GetItemAsync<string>("token");


//token = "BQBMgFm6jnFNWWeZEMGIRP_f-ENPid7Kw8JubAyuWAe4JK0S1DPFGlaAdZ_Fey6ePkCnz8-cqC0oyRmrciWUy5ISUTQKDe8PTQn4iBRMYCgM0n4GnS1xAErHJcm4Vpu2TAngk-4vQUOfTQRcedNTfCaHKP4uFJgTlTI7JHGrtB-_EZLnFcZ2OQe31oFQIJ1wM3ZtvwnN";
if (token == null) return new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity()));
// //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 ));
// var userInfo = await _serviceClient.GetUserInfo(new TokenMessage ( token ));


List<Claim> claims = new();
// List<Claim> claims = new();


claims.Add(new Claim("email", userInfo.email!));
claims.Add(new Claim("id", userInfo.id!));
claims.Add(new Claim("name", userInfo.display_name!));
// claims.Add(new Claim("email", userInfo.email!));
// claims.Add(new Claim("id", userInfo.id!));
// claims.Add(new Claim("name", userInfo.display_name!));


ClaimsIdentity identity = new(claims, "jwt");
//ClaimsIdentity identity = new();
ClaimsPrincipal user = new(identity);
AuthenticationState state = new(user);
// ClaimsIdentity identity = new(claims, "jwt");
// //ClaimsIdentity identity = new();
// ClaimsPrincipal user = new(identity);
// AuthenticationState state = new(user);


NotifyAuthenticationStateChanged(Task.FromResult(state));
// NotifyAuthenticationStateChanged(Task.FromResult(state));


return state;
}
// return state;
//}


public async Task<CodeRequest> GetAuthParams() public async Task<CodeRequest> GetAuthParams()
{ {
//token = "BQBMgFm6jnFNWWeZEMGIRP_f-ENPid7Kw8JubAyuWAe4JK0S1DPFGlaAdZ_Fey6ePkCnz8-cqC0oyRmrciWUy5ISUTQKDe8PTQn4iBRMYCgM0n4GnS1xAErHJcm4Vpu2TAngk-4vQUOfTQRcedNTfCaHKP4uFJgTlTI7JHGrtB-_EZLnFcZ2OQe31oFQIJ1wM3ZtvwnN"; //token = "BQBMgFm6jnFNWWeZEMGIRP_f-ENPid7Kw8JubAyuWAe4JK0S1DPFGlaAdZ_Fey6ePkCnz8-cqC0oyRmrciWUy5ISUTQKDe8PTQn4iBRMYCgM0n4GnS1xAErHJcm4Vpu2TAngk-4vQUOfTQRcedNTfCaHKP4uFJgTlTI7JHGrtB-_EZLnFcZ2OQe31oFQIJ1wM3ZtvwnN";
if (token == null) return new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity())); 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(); List<Claim> claims = new();



+ 4
- 4
gRPCServer/Services/StatsService.cs Ver fichero



public async Task<TrackResponse> GetCurrentlyPlayingTrack(TokenMessage token) public async Task<TrackResponse> GetCurrentlyPlayingTrack(TokenMessage token)
{ {
var client = _httpClientFactory.CreateClient();
client.DefaultRequestHeaders.Add(HeaderNames.Authorization, "Bearer " + token);
var searchResult = await client.GetAsync($"player/currently-playing");
var client = _httpClientFactory.CreateClient("HttpClient");
client.DefaultRequestHeaders.Add(HeaderNames.Authorization, "Bearer " + token.Token);
var searchResult = await client.GetAsync($"me/player/currently-playing");


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



Cargando…
Cancelar
Guardar