Kaynağa Gözat

get track by id works

tags/v1.1.0^2
anastasijasavov 3 yıl önce
ebeveyn
işleme
515bc66c14

GrpcShared/DTO/Track/SearchDetails.cs → GrpcShared/DTO/Search/SearchDetails.cs Dosyayı Görüntüle


GrpcShared/DTO/Track/SearchRequest.cs → GrpcShared/DTO/Search/SearchRequest.cs Dosyayı Görüntüle


GrpcShared/DTO/Track/SearchResponse.cs → GrpcShared/DTO/Search/SearchResponse.cs Dosyayı Görüntüle


GrpcShared/DTO/Track/TrackResponse.cs → GrpcShared/DTO/Track/CurrentTrackResponse.cs Dosyayı Görüntüle

namespace GrpcShared.DTO.Track namespace GrpcShared.DTO.Track
{ {
[ProtoContract] [ProtoContract]
public class TrackResponse
public class CurrentTrackResponse
{ {
[ProtoMember(1)] [ProtoMember(1)]
public string? timestamp{ get; set; } public string? timestamp{ get; set; }

+ 21
- 0
GrpcShared/DTO/TrackByID/TrackRequest.cs Dosyayı Görüntüle

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 Dosyayı Görüntüle

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 Dosyayı Görüntüle

[Service] [Service]
public interface IStatsService public interface IStatsService
{ {
Task<TrackResponse> GetCurrentlyPlayingTrack(TokenMessage token);
Task<CurrentTrackResponse> GetCurrentlyPlayingTrack(TokenMessage token);
} }
} }

+ 2
- 0
GrpcShared/Interfaces/ITrackService.cs Dosyayı Görüntüle

using GrpcShared.DTO.Track.MultipleTrack; using GrpcShared.DTO.Track.MultipleTrack;
using GrpcShared.DTO.Track.SaveTracks; using GrpcShared.DTO.Track.SaveTracks;
using GrpcShared.DTO.Track.SingleTrack; using GrpcShared.DTO.Track.SingleTrack;
using GrpcShared.DTO.TrackByID;
using ProtoBuf.Grpc.Configuration; using ProtoBuf.Grpc.Configuration;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
Task<SingleTrackResponse> ListSingleTrackAsync(SingleTrackRequest request); Task<SingleTrackResponse> ListSingleTrackAsync(SingleTrackRequest request);
Task<MultipleTrackResponse> ListMultipleTrackAsync(MultipleTrackRequest request); Task<MultipleTrackResponse> ListMultipleTrackAsync(MultipleTrackRequest request);
Task SaveTracks(SaveTracksRequest request); Task SaveTracks(SaveTracksRequest request);
Task<TrackResponse> GetById(TrackRequest request);
} }
} }

+ 7
- 1
NemAnCore/Pages/Home.razor Dosyayı Görüntüle

@using NemAnBlazor.Services.Interfaces @using NemAnBlazor.Services.Interfaces
@inject Blazored.SessionStorage.ISessionStorageService sessionStorage @inject Blazored.SessionStorage.ISessionStorageService sessionStorage
@inject IStatsClientService spotifyService @inject IStatsClientService spotifyService
@inject ITrackClientService trackService


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


string tokenS = await sessionStorage.GetItemAsync<string>("token"); string tokenS = await sessionStorage.GetItemAsync<string>("token");
TokenMessage token = new TokenMessage(tokenS); 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 Dosyayı Görüntüle

{ {
public interface IStatsClientService public interface IStatsClientService
{ {
Task<TrackResponse> GetCurrentlyPlayingTrack(TokenMessage token);
Task<CurrentTrackResponse> GetCurrentlyPlayingTrack(TokenMessage token);
} }
} }

+ 2
- 0
NemAnCore/Services/Interfaces/ITrackClientService.cs Dosyayı Görüntüle

using GrpcShared.DTO.Track.MultipleTrack; using GrpcShared.DTO.Track.MultipleTrack;
using GrpcShared.DTO.Track.SaveTracks; using GrpcShared.DTO.Track.SaveTracks;
using GrpcShared.DTO.Track.SingleTrack; using GrpcShared.DTO.Track.SingleTrack;
using GrpcShared.DTO.TrackByID;


namespace NemAnBlazor.Services.Interfaces namespace NemAnBlazor.Services.Interfaces
{ {
Task<SingleTrackResponse> GetListSingleTrackAsync(SingleTrackRequest request); Task<SingleTrackResponse> GetListSingleTrackAsync(SingleTrackRequest request);
Task<MultipleTrackResponse> GetListMultipleTrackAsync(MultipleTrackRequest request); Task<MultipleTrackResponse> GetListMultipleTrackAsync(MultipleTrackRequest request);
Task PutSaveTracks(SaveTracksRequest request); Task PutSaveTracks(SaveTracksRequest request);
Task<TrackResponse> GetById(TrackRequest request);
} }
} }

+ 1
- 1
NemAnCore/Services/StatsClientService.cs Dosyayı Görüntüle

{ {
_serviceClient = channel.CreateGrpcService<IStatsService>(); _serviceClient = channel.CreateGrpcService<IStatsService>();
} }
public async Task<TrackResponse> GetCurrentlyPlayingTrack(TokenMessage token)
public async Task<CurrentTrackResponse> GetCurrentlyPlayingTrack(TokenMessage token)
{ {
return await _serviceClient.GetCurrentlyPlayingTrack(token); return await _serviceClient.GetCurrentlyPlayingTrack(token);
} }

+ 5
- 0
NemAnCore/Services/TrackClientService.cs Dosyayı Görüntüle

using GrpcShared.DTO.Track.MultipleTrack; using GrpcShared.DTO.Track.MultipleTrack;
using GrpcShared.DTO.Track.SaveTracks; using GrpcShared.DTO.Track.SaveTracks;
using GrpcShared.DTO.Track.SingleTrack; using GrpcShared.DTO.Track.SingleTrack;
using GrpcShared.DTO.TrackByID;
using GrpcShared.Interfaces; using GrpcShared.Interfaces;
using NemAnBlazor.Services.Interfaces; using NemAnBlazor.Services.Interfaces;
using ProtoBuf.Grpc.Client; using ProtoBuf.Grpc.Client;
{ {
await _serviceClient.SaveTracks(request); await _serviceClient.SaveTracks(request);
} }
public async Task<TrackResponse> GetById(TrackRequest request)
{
return await _serviceClient.GetById(request);
}
} }
} }

+ 2
- 2
gRPCServer/Services/StatsService.cs Dosyayı Görüntüle

_httpClientFactory = httpClientFactory; _httpClientFactory = httpClientFactory;
} }


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



+ 12
- 0
gRPCServer/Services/TrackService.cs Dosyayı Görüntüle

using GrpcShared.DTO.Track.MultipleTrack; using GrpcShared.DTO.Track.MultipleTrack;
using GrpcShared.DTO.Track.SaveTracks; using GrpcShared.DTO.Track.SaveTracks;
using GrpcShared.DTO.Track.SingleTrack; using GrpcShared.DTO.Track.SingleTrack;
using GrpcShared.DTO.TrackByID;
using GrpcShared.Interfaces; using GrpcShared.Interfaces;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.Net.Http.Headers; using Microsoft.Net.Http.Headers;
sb.Length = sb.Length - 3; sb.Length = sb.Length - 3;
return sb.ToString(); 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;
}
} }
} }



Loading…
İptal
Kaydet