Переглянути джерело

get track by id works

tags/v1.1.0^2
anastasijasavov 3 роки тому
джерело
коміт
515bc66c14

GrpcShared/DTO/Track/SearchDetails.cs → GrpcShared/DTO/Search/SearchDetails.cs Переглянути файл


GrpcShared/DTO/Track/SearchRequest.cs → GrpcShared/DTO/Search/SearchRequest.cs Переглянути файл


GrpcShared/DTO/Track/SearchResponse.cs → GrpcShared/DTO/Search/SearchResponse.cs Переглянути файл


GrpcShared/DTO/Track/TrackResponse.cs → GrpcShared/DTO/Track/CurrentTrackResponse.cs Переглянути файл

@@ -8,7 +8,7 @@ using System.Threading.Tasks;
namespace GrpcShared.DTO.Track
{
[ProtoContract]
public class TrackResponse
public class CurrentTrackResponse
{
[ProtoMember(1)]
public string? timestamp{ get; set; }

+ 21
- 0
GrpcShared/DTO/TrackByID/TrackRequest.cs Переглянути файл

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

namespace GrpcShared.DTO.TrackByID
{
[ProtoContract]
public class TrackRequest
{
[ProtoMember(1)]
[JsonProperty("id")]
public string? TrackID { get; set; }
[ProtoMember(2)]
[JsonProperty("token")]
public string? Token { get; set; }
}
}

+ 39
- 0
GrpcShared/DTO/TrackByID/TrackResponse.cs Переглянути файл

@@ -0,0 +1,39 @@
using GrpcShared.DTO.Track;
using Newtonsoft.Json;
using ProtoBuf;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GrpcShared.DTO.TrackByID
{
[ProtoContract]
public class TrackResponse
{
[ProtoMember(1)]
[JsonProperty("album")]
public Album Album { get; set; }

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

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

[ProtoMember(4)]
[JsonProperty("href")]
public Uri Href { get; set; }

[ProtoMember(5)]
[JsonProperty("id")]
public string Id { get; set; }

[ProtoMember(6)]
[JsonProperty("name")]
public string Name { get; set; }
}
}

+ 1
- 1
GrpcShared/Interfaces/IStatsService.cs Переглянути файл

@@ -12,6 +12,6 @@ namespace GrpcShared.Interfaces
[Service]
public interface IStatsService
{
Task<TrackResponse> GetCurrentlyPlayingTrack(TokenMessage token);
Task<CurrentTrackResponse> GetCurrentlyPlayingTrack(TokenMessage token);
}
}

+ 2
- 0
GrpcShared/Interfaces/ITrackService.cs Переглянути файл

@@ -2,6 +2,7 @@
using GrpcShared.DTO.Track.MultipleTrack;
using GrpcShared.DTO.Track.SaveTracks;
using GrpcShared.DTO.Track.SingleTrack;
using GrpcShared.DTO.TrackByID;
using ProtoBuf.Grpc.Configuration;
using System;
using System.Collections.Generic;
@@ -18,5 +19,6 @@ namespace GrpcShared.Interfaces
Task<SingleTrackResponse> ListSingleTrackAsync(SingleTrackRequest request);
Task<MultipleTrackResponse> ListMultipleTrackAsync(MultipleTrackRequest request);
Task SaveTracks(SaveTracksRequest request);
Task<TrackResponse> GetById(TrackRequest request);
}
}

+ 7
- 1
NemAnCore/Pages/Home.razor Переглянути файл

@@ -4,6 +4,7 @@
@using NemAnBlazor.Services.Interfaces
@inject Blazored.SessionStorage.ISessionStorageService sessionStorage
@inject IStatsClientService spotifyService
@inject ITrackClientService trackService

<h3>Home</h3>

@@ -15,6 +16,11 @@
string tokenS = await sessionStorage.GetItemAsync<string>("token");
TokenMessage token = new TokenMessage(tokenS);

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

//napravi komponentu koja ce da prikazuje sta trenutno slusas i passuj joj parametre

//4fy1A2WBTPX55mUI16TQXa
var trackById = await trackService.GetById(new GrpcShared.DTO.TrackByID.TrackRequest { TrackID = "4fy1A2WBTPX55mUI16TQXa", Token = tokenS });
}
}

+ 1
- 1
NemAnCore/Services/Interfaces/IStatsClientService.cs Переглянути файл

@@ -5,6 +5,6 @@ namespace NemAnBlazor.Services.Interfaces
{
public interface IStatsClientService
{
Task<TrackResponse> GetCurrentlyPlayingTrack(TokenMessage token);
Task<CurrentTrackResponse> GetCurrentlyPlayingTrack(TokenMessage token);
}
}

+ 2
- 0
NemAnCore/Services/Interfaces/ITrackClientService.cs Переглянути файл

@@ -2,6 +2,7 @@
using GrpcShared.DTO.Track.MultipleTrack;
using GrpcShared.DTO.Track.SaveTracks;
using GrpcShared.DTO.Track.SingleTrack;
using GrpcShared.DTO.TrackByID;

namespace NemAnBlazor.Services.Interfaces
{
@@ -11,5 +12,6 @@ namespace NemAnBlazor.Services.Interfaces
Task<SingleTrackResponse> GetListSingleTrackAsync(SingleTrackRequest request);
Task<MultipleTrackResponse> GetListMultipleTrackAsync(MultipleTrackRequest request);
Task PutSaveTracks(SaveTracksRequest request);
Task<TrackResponse> GetById(TrackRequest request);
}
}

+ 1
- 1
NemAnCore/Services/StatsClientService.cs Переглянути файл

@@ -14,7 +14,7 @@ namespace NemAnBlazor.Services
{
_serviceClient = channel.CreateGrpcService<IStatsService>();
}
public async Task<TrackResponse> GetCurrentlyPlayingTrack(TokenMessage token)
public async Task<CurrentTrackResponse> GetCurrentlyPlayingTrack(TokenMessage token)
{
return await _serviceClient.GetCurrentlyPlayingTrack(token);
}

+ 5
- 0
NemAnCore/Services/TrackClientService.cs Переглянути файл

@@ -3,6 +3,7 @@ using GrpcShared.DTO.Search;
using GrpcShared.DTO.Track.MultipleTrack;
using GrpcShared.DTO.Track.SaveTracks;
using GrpcShared.DTO.Track.SingleTrack;
using GrpcShared.DTO.TrackByID;
using GrpcShared.Interfaces;
using NemAnBlazor.Services.Interfaces;
using ProtoBuf.Grpc.Client;
@@ -37,5 +38,9 @@ namespace NemAnBlazor.Services
{
await _serviceClient.SaveTracks(request);
}
public async Task<TrackResponse> GetById(TrackRequest request)
{
return await _serviceClient.GetById(request);
}
}
}

+ 2
- 2
gRPCServer/Services/StatsService.cs Переглянути файл

@@ -16,14 +16,14 @@ namespace SpotifyService.Services
_httpClientFactory = httpClientFactory;
}

public async Task<TrackResponse> GetCurrentlyPlayingTrack(TokenMessage token)
public async Task<CurrentTrackResponse> GetCurrentlyPlayingTrack(TokenMessage token)
{
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<CurrentTrackResponse>(await searchResult.Content.ReadAsStringAsync())!;

return responses;


+ 12
- 0
gRPCServer/Services/TrackService.cs Переглянути файл

@@ -5,6 +5,7 @@ using GrpcShared.DTO.Search;
using GrpcShared.DTO.Track.MultipleTrack;
using GrpcShared.DTO.Track.SaveTracks;
using GrpcShared.DTO.Track.SingleTrack;
using GrpcShared.DTO.TrackByID;
using GrpcShared.Interfaces;
using Microsoft.AspNetCore.Authorization;
using Microsoft.Net.Http.Headers;
@@ -133,6 +134,17 @@ namespace SpotifyService.Services
sb.Length = sb.Length - 3;
return sb.ToString();
}

public async Task<TrackResponse> GetById(TrackRequest request)
{
var client = _httpClientFactory.CreateClient("HttpClient");

client.DefaultRequestHeaders.Add(HeaderNames.Authorization, "Bearer " + request.Token);
var track = await client.GetAsync($"tracks/{request.TrackID}");

var response = JsonConvert.DeserializeObject<TrackResponse>(await track!.Content.ReadAsStringAsync())!;
return response;
}
}
}


Завантаження…
Відмінити
Зберегти