Skip to content

Commit

Permalink
Merge pull request #75 from tapanila/dev
Browse files Browse the repository at this point in the history
      0.3.2
      Fixed nuget package dependencies list
      Added better handling of metadata
  • Loading branch information
Tapanila authored Nov 25, 2016
2 parents f1ed632 + 9ee2a39 commit 7a94a80
Show file tree
Hide file tree
Showing 22 changed files with 243 additions and 67 deletions.
8 changes: 4 additions & 4 deletions SharpCaster.Console/SharpCaster.Console.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,12 @@
<HintPath>..\packages\protobuf-net-sharpcaster.2.0.0.668\lib\portable46-net451+win81+wpa81\protobuf-net.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Rssdp.Native, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Rssdp.2.0.0.1\lib\net40\Rssdp.Native.dll</HintPath>
<Reference Include="Rssdp.Native, Version=2.0.0.2, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Rssdp.2.0.0.5\lib\net40\Rssdp.Native.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Rssdp.Portable, Version=2.0.0.1, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Rssdp.2.0.0.1\lib\net40\Rssdp.Portable.dll</HintPath>
<Reference Include="Rssdp.Portable, Version=2.0.0.4, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Rssdp.2.0.0.5\lib\net40\Rssdp.Portable.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Sockets.Plugin, Version=2.0.2.0, Culture=neutral, processorArchitecture=MSIL">
Expand Down
2 changes: 1 addition & 1 deletion SharpCaster.Console/packages.config
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
<package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="net452" />
<package id="Microsoft.Net.Http" version="2.2.29" targetFramework="net452" />
<package id="protobuf-net-sharpcaster" version="2.0.0.668" targetFramework="net452" />
<package id="Rssdp" version="2.0.0.1" targetFramework="net452" />
<package id="Rssdp" version="2.0.0.5" targetFramework="net452" />
<package id="Sharpcaster.SocketsForPCL" version="2.0.4" targetFramework="net452" />
</packages>
8 changes: 4 additions & 4 deletions SharpCaster.Simple.Android/SharpCaster.Simple.Android.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,12 @@
</Reference>
<Reference Include="Mono.Android" />
<Reference Include="mscorlib" />
<Reference Include="Rssdp.Native, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Rssdp.2.0.0.1\lib\monoandroid\Rssdp.Native.dll</HintPath>
<Reference Include="Rssdp.Native, Version=2.0.0.2, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Rssdp.2.0.0.5\lib\monoandroid\Rssdp.Native.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Rssdp.Portable, Version=2.0.0.1, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Rssdp.2.0.0.1\lib\monoandroid\Rssdp.Portable.dll</HintPath>
<Reference Include="Rssdp.Portable, Version=2.0.0.4, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Rssdp.2.0.0.5\lib\monoandroid\Rssdp.Portable.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Sockets.Plugin, Version=2.0.2.0, Culture=neutral, processorArchitecture=MSIL">
Expand Down
2 changes: 1 addition & 1 deletion SharpCaster.Simple.Android/packages.config
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@
<package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="monoandroid60" />
<package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="monoandroid60" />
<package id="Microsoft.Net.Http" version="2.2.29" targetFramework="monoandroid60" />
<package id="Rssdp" version="2.0.0.1" targetFramework="monoandroid70" />
<package id="Rssdp" version="2.0.0.5" targetFramework="monoandroid70" />
<package id="Sharpcaster.SocketsForPCL" version="2.0.4" targetFramework="monoandroid70" />
</packages>
6 changes: 5 additions & 1 deletion SharpCaster.Simple/MainPageViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
using SharpCaster.Services;
using SharpCaster.Simple.Annotations;
using SharpCaster.Models.ChromecastRequests;
using SharpCaster.Models.Metadata;

namespace SharpCaster.Simple
{
Expand Down Expand Up @@ -243,7 +244,10 @@ public async Task LoadMedia(string title, string description, ImageSource poster
TrackContentId =
"https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/tracks/DesigningForGoogleCast-en.vtt"
};
await _controller.LoadMedia("https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/mp4/DesigningForGoogleCast.mp4", "video/mp4", null, "BUFFERED", 0D, null, new[] { track }, new[] { 100 });

var metadata = new GenericMediaMetadata { title = title};

await _controller.LoadMedia("https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/mp4/DesigningForGoogleCast.mp4", "video/mp4", metadata, "BUFFERED", 0D, null, new[] { track }, new[] { 100 });
}

public async Task Seek(double seconds)
Expand Down
2 changes: 1 addition & 1 deletion SharpCaster.Simple/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2",
"Newtonsoft.Json": "9.0.1",
"protobuf-net-sharpcaster": "2.0.0.668",
"Rssdp": "2.0.0.1",
"Rssdp": "2.0.0.5",
"sharpcaster.SocketsForPCL": "2.0.4"
},
"frameworks": {
Expand Down
2 changes: 0 additions & 2 deletions SharpCaster/ChromeCastClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using SharpCaster.Channels;
using SharpCaster.Controllers;
using SharpCaster.Extensions;
Expand All @@ -12,7 +11,6 @@
using SharpCaster.Models.MediaStatus;
using SharpCaster.Interfaces;
using SharpCaster.Services;
using System.Runtime.InteropServices;

namespace SharpCaster
{
Expand Down
47 changes: 47 additions & 0 deletions SharpCaster/JsonConverters/MetadataTypeConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SharpCaster.Models.Enums;
using SharpCaster.Models.Metadata;

namespace SharpCaster.JsonConverters
{
public class MetadataTypeConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(value);
}

public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{

JObject jObject = JObject.Load(reader);

var value = jObject.GetValue("metadataType").ToString();
MetadataType metadataType;

Enum.TryParse(value, out metadataType);
switch (metadataType)
{
case MetadataType.GENERIC:
return jObject.ToObject<GenericMediaMetadata>();
case MetadataType.MOVIE:
return jObject.ToObject<MovieMediaMetadata>();
case MetadataType.TV_SHOW:
return jObject.ToObject<TvShowMediaMetadata>();
case MetadataType.MUSIC_TRACK:
return jObject.ToObject<MusicTrackMediaMetadata>();
case MetadataType.PHOTO:
return jObject.ToObject<PhotoMediaMetadata>();
default:
throw new ArgumentOutOfRangeException();
}
}

public override bool CanConvert(Type objectType)
{
return true;
}
}
}
49 changes: 49 additions & 0 deletions SharpCaster/JsonConverters/MetadataTypeEnumConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
using System;
using Newtonsoft.Json;
using SharpCaster.Models.Enums;

namespace SharpCaster.JsonConverters
{
public class MetadataTypeEnumConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var metadataType = (MetadataType)value;
switch (metadataType)
{
case MetadataType.GENERIC:
writer.WriteValue(0);
break;
case MetadataType.MOVIE:
writer.WriteValue(1);
break;
case MetadataType.TV_SHOW:
writer.WriteValue(2);
break;
case MetadataType.MUSIC_TRACK:
writer.WriteValue(3);
break;
case MetadataType.PHOTO:
writer.WriteValue(4);
break;
default:
throw new ArgumentOutOfRangeException();
}
}

public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var enumString = (Int64)reader.Value;
MetadataType metadataType;

Enum.TryParse(enumString.ToString(), out metadataType);

return metadataType;
}

public override bool CanConvert(Type objectType)
{
return objectType == typeof(int);
}
}
}
11 changes: 11 additions & 0 deletions SharpCaster/Models/Enums/MetadataTypeEnum.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
namespace SharpCaster.Models.Enums
{
public enum MetadataType
{
GENERIC,
MOVIE,
TV_SHOW,
MUSIC_TRACK,
PHOTO
}
}
3 changes: 3 additions & 0 deletions SharpCaster/Models/MediaStatus/Media.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
using Newtonsoft.Json;
using SharpCaster.JsonConverters;
using SharpCaster.Models.Metadata;

namespace SharpCaster.Models.MediaStatus
Expand All @@ -8,6 +10,7 @@ public class Media
public string contentType { get; set; }
public string streamType { get; set; }
public double duration { get; set; }
[JsonConverter(typeof(MetadataTypeConverter))]
public IMetadata metadata { get; set; }
public object customData { get; set; }
}
Expand Down
6 changes: 5 additions & 1 deletion SharpCaster/Models/Metadata/GenericMediaMetadata.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
using System.Collections.Generic;
using Newtonsoft.Json;
using SharpCaster.JsonConverters;
using SharpCaster.Models.Enums;
using SharpCaster.Models.MediaStatus;

namespace SharpCaster.Models.Metadata
Expand All @@ -7,7 +10,8 @@ namespace SharpCaster.Models.Metadata
public class GenericMediaMetadata : IMetadata
{
public List<ChromecastImage> images { get; set; }
public int metadataType { get; set; }
[JsonConverter(typeof(MetadataTypeEnumConverter))]
public MetadataType metadataType { get; set; }
public string releaseDate { get; set; }
public string subtitle { get; set; }
public string title { get; set; }
Expand Down
6 changes: 5 additions & 1 deletion SharpCaster/Models/Metadata/IMetadata.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
using System.Collections.Generic;
using Newtonsoft.Json;
using SharpCaster.JsonConverters;
using SharpCaster.Models.Enums;
using SharpCaster.Models.MediaStatus;

namespace SharpCaster.Models.Metadata
{
public interface IMetadata
{
List<ChromecastImage> images { get; set; }
int metadataType { get; set; }
[JsonConverter(typeof(MetadataTypeEnumConverter))]
MetadataType metadataType { get; set; }
string title { get; set; }
}
}
10 changes: 9 additions & 1 deletion SharpCaster/Models/Metadata/MovieMediaMetadata.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
using System.Collections.Generic;
using Newtonsoft.Json;
using SharpCaster.JsonConverters;
using SharpCaster.Models.Enums;
using SharpCaster.Models.MediaStatus;

namespace SharpCaster.Models.Metadata
{
//Fields: https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.MovieMediaMetadata
public class MovieMediaMetadata : IMetadata
{
public MovieMediaMetadata()
{
metadataType = MetadataType.MOVIE;
}
public List<ChromecastImage> images { get; set; }
public int metadataType { get; set; }
[JsonConverter(typeof(MetadataTypeEnumConverter))]
public MetadataType metadataType { get; set; }
public string releaseDate { get; set; }
public string subtitle { get; set; }
public string title { get; set; }
Expand Down
10 changes: 9 additions & 1 deletion SharpCaster/Models/Metadata/MusicTrackMediaMetadata.cs
Original file line number Diff line number Diff line change
@@ -1,18 +1,26 @@
using System.Collections.Generic;
using Newtonsoft.Json;
using SharpCaster.JsonConverters;
using SharpCaster.Models.Enums;
using SharpCaster.Models.MediaStatus;

namespace SharpCaster.Models.Metadata
{
//Fields: https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.MusicTrackMediaMetadata
public class MusicTrackMediaMetadata : IMetadata
{
public MusicTrackMediaMetadata()
{
metadataType = MetadataType.MUSIC_TRACK;
}
public string albumArtist { get; set; }
public string albumName { get; set; }
public string artist { get; set; }
public string composer { get; set; }
public int discNumber { get; set; }
public List<ChromecastImage> images { get; set; }
public int metadataType { get; set; }
[JsonConverter(typeof(MetadataTypeEnumConverter))]
public MetadataType metadataType { get; set; }
public string releaseDate { get; set; }
public string songName { get; set; }
public string title { get; set; }
Expand Down
10 changes: 9 additions & 1 deletion SharpCaster/Models/Metadata/PhotoMediaMetadata.cs
Original file line number Diff line number Diff line change
@@ -1,19 +1,27 @@
using System.Collections.Generic;
using Newtonsoft.Json;
using SharpCaster.JsonConverters;
using SharpCaster.Models.Enums;
using SharpCaster.Models.MediaStatus;

namespace SharpCaster.Models.Metadata
{
//Fields: https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.PhotoMediaMetadata
public class PhotoMediaMetadata : IMetadata
{
public PhotoMediaMetadata()
{
metadataType = MetadataType.PHOTO;
}
public string artist { get; set; }
public string creationDateTime { get; set; }
public int height { get; set; }
public List<ChromecastImage> images { get; set; }
public int latitude { get; set; }
public string location { get; set; }
public int longitude { get; set; }
public int metadataType { get; set; }
[JsonConverter(typeof(MetadataTypeEnumConverter))]
public MetadataType metadataType { get; set; }
public string title { get; set; }
public int width { get; set; }
}
Expand Down
25 changes: 25 additions & 0 deletions SharpCaster/Models/Metadata/TvShowMediaMetadata.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using System.Collections.Generic;
using Newtonsoft.Json;
using SharpCaster.JsonConverters;
using SharpCaster.Models.Enums;
using SharpCaster.Models.MediaStatus;

namespace SharpCaster.Models.Metadata
{
//Fields: https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.TvShowMediaMetadata
public class TvShowMediaMetadata : IMetadata
{
public TvShowMediaMetadata()
{
metadataType = MetadataType.TV_SHOW;
}
public int episode { get; set; }
public List<ChromecastImage> images { get; set; }
[JsonConverter(typeof(MetadataTypeEnumConverter))]
public MetadataType metadataType { get; set; }
public string originalAirdate { get; set; }
public int season { get; set; }
public string seriesTitle { get; set; }
public string title { get; set; }
}
}
8 changes: 4 additions & 4 deletions SharpCaster/Services/ChromeCastService.cs
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
using System.Collections.ObjectModel;
using System;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
using SharpCaster.Models;

namespace SharpCaster.Services
{
public class ChromecastService
{
private static ChromecastService _instance;

public static ChromecastService Current => _instance ?? (_instance = new ChromecastService());
private static readonly Lazy<ChromecastService> _current = new Lazy<ChromecastService>(() => new ChromecastService());
public static ChromecastService Current => _current.Value;

public DeviceLocator DeviceLocator { get; }
public ChromeCastClient ChromeCastClient { get; }
Expand Down
Loading

0 comments on commit 7a94a80

Please sign in to comment.