Working on the streamig component of Icarus. Enforcing grant permissions for streaming songs. #39

This commit is contained in:
amazing-username
2019-05-28 20:30:21 -04:00
parent 7a4b8cbafb
commit 96c5594193
7 changed files with 51 additions and 7 deletions
+5 -1
View File
@@ -8,7 +8,7 @@ namespace Mear.Constants.API
{ {
#region Fields #region Fields
private static string _apiUrl = @"https://www..com/"; private static string _apiUrl = @"https://www..com/";
private string _apiVersion; private static string _apiVersion = "";
#endregion #endregion
@@ -17,6 +17,10 @@ namespace Mear.Constants.API
{ {
get => _apiUrl; get => _apiUrl;
} }
public static string APIVersion
{
get => _apiVersion;
}
#endregion #endregion
+2 -1
View File
@@ -35,7 +35,8 @@ namespace Mear.Managers
try try
{ {
var client = new RestClient(API.ApiUrl); var client = new RestClient(API.ApiUrl);
var request = new RestRequest(@"api/login", Method.POST); var apiEndpoint = $@"api/{API.APIVersion}/login";
var request = new RestRequest(apiEndpoint, Method.POST);
var userJson = JsonConvert.SerializeObject(_user); var userJson = JsonConvert.SerializeObject(_user);
request.AddParameter("application/json; charset=utf-8", userJson, ParameterType.RequestBody); request.AddParameter("application/json; charset=utf-8", userJson, ParameterType.RequestBody);
+2 -1
View File
@@ -36,7 +36,8 @@ namespace Mear.Managers
try try
{ {
var client = new RestClient(API.ApiUrl); var client = new RestClient(API.ApiUrl);
var request = new RestRequest(@"api/register", Method.POST); var apiEndpoint = $@"api/{API.APIVersion}/register";
var request = new RestRequest(apiEndpoint, Method.POST);
var userJson = JsonConvert.SerializeObject(_user); var userJson = JsonConvert.SerializeObject(_user);
request.AddParameter("application/json; charset=utf-8", userJson, ParameterType.RequestBody); request.AddParameter("application/json; charset=utf-8", userJson, ParameterType.RequestBody);
request.RequestFormat = DataFormat.Json; request.RequestFormat = DataFormat.Json;
+7 -1
View File
@@ -11,6 +11,7 @@ using RestSharp;
using Mear.Constants.API; using Mear.Constants.API;
using Mear.Models; using Mear.Models;
using Mear.Models.Authentication; using Mear.Models.Authentication;
using Mear.Repositories.Database;
namespace Mear.Playback namespace Mear.Playback
{ {
@@ -43,13 +44,18 @@ namespace Mear.Playback
using (var writer = File.OpenWrite(tmpFile)) using (var writer = File.OpenWrite(tmpFile))
{ {
var client = new RestClient(API.ApiUrl); var client = new RestClient(API.ApiUrl);
var request = new RestRequest($@"api/song/stream/{song.Id}", Method.GET); var apiEndpoint = $@"api/{API.APIVersion}/song/stream/{song.Id}"; ;
var request = new RestRequest(apiEndpoint, Method.GET);
var tokRepo = new DBTokenRepository();
var token = tokRepo.RetrieveToken();
request.AddHeader("Authorization", $"Bearer {token.AccessToken}");
request.ResponseWriter = (responseStream) => request.ResponseWriter = (responseStream) =>
responseStream.CopyTo(writer); responseStream.CopyTo(writer);
var response = client.DownloadData(request); var response = client.DownloadData(request);
await CrossMediaManager.Current.Play(tmpFile); await CrossMediaManager.Current.Play(tmpFile);
var title = CrossMediaManager.Current.MediaQueue.Title;
} }
} }
catch (Exception ex) catch (Exception ex)
@@ -31,7 +31,8 @@ namespace Mear.Repositories.Remote
try try
{ {
var client = new RestClient(API.ApiUrl); var client = new RestClient(API.ApiUrl);
var request = new RestRequest(@"api/song", Method.GET); var apiEndpoint = $@"api/{API.APIVersion}/song";
var request = new RestRequest(apiEndpoint, Method.GET);
DBTokenRepository tkRepo = new DBTokenRepository(); DBTokenRepository tkRepo = new DBTokenRepository();
var token = tkRepo.RetrieveToken(); var token = tkRepo.RetrieveToken();
+29
View File
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms; using Xamarin.Forms;
@@ -15,6 +16,7 @@ namespace Mear.ViewModels
{ {
#region Fields #region Fields
private ObservableCollection<Song> _songItems; private ObservableCollection<Song> _songItems;
private Command _refreshSongs;
#endregion #endregion
@@ -24,6 +26,12 @@ namespace Mear.ViewModels
get => _songItems; get => _songItems;
set => _songItems = value; set => _songItems = value;
} }
public Command RefreshSongs
{
get => _refreshSongs;
set => _refreshSongs = value;
}
#endregion #endregion
@@ -31,6 +39,7 @@ namespace Mear.ViewModels
public SongViewModel() public SongViewModel()
{ {
_songItems = new ObservableCollection<Song>(); _songItems = new ObservableCollection<Song>();
_refreshSongs = new Command(async () => await PopulateSongsAsync());
PopulateSongs(); PopulateSongs();
} }
@@ -48,6 +57,26 @@ namespace Mear.ViewModels
_songItems.Add(song); _songItems.Add(song);
} }
} }
private async Task PopulateSongsAsync()
{
try
{
var songRepo = new RemoteSongRepository();
var songs = songRepo.RetrieveSongs().OrderBy(s => s.Title).ToList();
_songItems.Clear();
foreach (var song in songs)
{
_songItems.Add(song);
}
}
catch (Exception ex)
{
var msg = ex.Message;
}
}
#endregion #endregion
} }
} }
+4 -2
View File
@@ -17,11 +17,13 @@
ItemsSource="{Binding SongItems}" ItemsSource="{Binding SongItems}"
VerticalOptions="FillAndExpand" VerticalOptions="FillAndExpand"
HasUnevenRows="False" HasUnevenRows="False"
IsPullToRefreshEnabled="True"
RefreshCommand="{Binding RefreshSongs}"
ItemSelected="SongListView_ItemSelected" > ItemSelected="SongListView_ItemSelected" >
<ListView.ItemTemplate> <ListView.ItemTemplate>
<DataTemplate> <DataTemplate>
<ViewCell Height="100"> <ViewCell Height="150">
<Grid Padding="5"> <Grid MinimumHeightRequest="100" Padding="5">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
</Grid.RowDefinitions> </Grid.RowDefinitions>