Skip to content

Commit

Permalink
linvi#492 Added a new UploadMediaCategory enum to simplify the upload…
Browse files Browse the repository at this point in the history
… video/images. 2 new methods are now available in the static class Upload.
  • Loading branch information
linvi committed Oct 3, 2017
1 parent ab4b7a3 commit 2649725
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 2 deletions.
54 changes: 54 additions & 0 deletions Tweetinvi.Controllers/Upload/UploadQueryExecutor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using Tweetinvi.Core.Helpers;
using Tweetinvi.Core.Injectinvi;
using Tweetinvi.Core.Parameters;
using Tweetinvi.Core.Public.Models.Enum;
using Tweetinvi.Core.Web;
using Tweetinvi.Logic.QueryParameters;
using Tweetinvi.Models;
Expand Down Expand Up @@ -37,6 +38,11 @@ public interface IUploadQueryExecutor
/// </summary>
IChunkedUploader CreateChunkedUploader();

/// <summary>
/// Upload a binary in multiple queries.
/// </summary>
IMedia ChunkUploadBinary(byte[] binary, string mediaType, UploadMediaCategory mediaCategory);

/// <summary>
/// Upload a binary in multiple queries.
/// </summary>
Expand All @@ -52,6 +58,11 @@ public interface IUploadQueryExecutor
/// </summary>
IMedia UploadVideo(byte[] binary, string mediaType, string mediaCategory);

/// <summary>
/// Upload a video in multiple queries if necessary.
/// </summary>
IMedia UploadVideo(byte[] binary, UploadMediaCategory mediaCategory);

/// <summary>
/// Add metadata to a media that has been uploaded.
/// </summary>
Expand Down Expand Up @@ -149,6 +160,29 @@ public void UploadMedias(IEnumerable<IMedia> medias, bool forceReUpload = true)
}
}

public IMedia ChunkUploadBinary(byte[] binary, string mediaType, UploadMediaCategory mediaCategory)
{
string category = null;

switch (mediaCategory)
{
case UploadMediaCategory.AmplifyVideo:
category = "amplify_video";
break;
case UploadMediaCategory.TweetVideo:
category = "tweet_video";
break;
case UploadMediaCategory.TweetGif:
category = "tweet_gif";
break;
case UploadMediaCategory.TweetImage:
category = "tweet_image";
break;
}

return ChunkUploadBinary(binary, mediaType, category);
}

public IMedia ChunkUploadBinary(byte[] binary, string mediaType, string mediaCategory = null)
{
var parameters = new UploadQueryParameters()
Expand Down Expand Up @@ -231,6 +265,26 @@ public IMedia UploadVideo(byte[] binary, string mediaType, string mediaCategory)
return ChunkUploadBinary(binary, mediaType, mediaCategory);
}

public IMedia UploadVideo(byte[] binary, UploadMediaCategory mediaCategory)
{
string category = null;

switch (mediaCategory)
{
case UploadMediaCategory.AmplifyVideo:
category = "amplify_video";
break;
case UploadMediaCategory.TweetVideo:
category = "tweet_video";
break;
case UploadMediaCategory.TweetGif:
case UploadMediaCategory.TweetImage:
throw new ArgumentException("Video cannot upload content with TweetGif or TweetImage media category");
}

return UploadVideo(binary, "video/mp4", category);
}

public IChunkedUploader CreateChunkedUploader()
{
return _chunkedUploadFactory.Create();
Expand Down
15 changes: 15 additions & 0 deletions Tweetinvi.Core/Public/Models/Enum/UploadVideoMediaCategory.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
namespace Tweetinvi.Core.Public.Models.Enum
{
/// <summary>
/// List of known media categories. This list might not be complete.
/// Use the string mediaCategory parameter if you need to use another one.
/// </summary>
public enum UploadMediaCategory
{
None,
TweetImage,
TweetGif,
TweetVideo,
AmplifyVideo,
}
}
22 changes: 20 additions & 2 deletions Tweetinvi/Upload.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using System.Threading;
using Tweetinvi.Controllers.Upload;
using Tweetinvi.Core.Parameters;
using Tweetinvi.Core.Public.Models.Enum;
using Tweetinvi.Logic.QueryParameters;
using Tweetinvi.Models;
using Tweetinvi.Models.DTO;
Expand Down Expand Up @@ -82,14 +83,31 @@ public static IMedia UploadImage(byte[] binary)
}

/// <summary>
/// Upload a video to twitter. The mediaCategory needs to be `amplify_video`
/// Upload a video to twitter. The mediaCategory needs to be `amplify_video` or `tweet_video`
/// if you want to use GetMediaStatus.
/// </summary>
/// </summary>
public static IMedia UploadVideo(byte[] binary, string mediaType = "video/mp4", string mediaCategory = null)
{
return UploadQueryExecutor.UploadVideo(binary, mediaType, mediaCategory);
}

/// <summary>
/// Upload a video to twitter. The mediaCategory needs to be `amplify_video` or `tweet_video`
/// if you want to use GetMediaStatus.
/// </summary>
public static IMedia UploadVideo(byte[] binary, UploadMediaCategory mediaCategory)
{
return UploadQueryExecutor.UploadVideo(binary, mediaCategory);
}

/// <summary>
/// Upload a binary using the chunked upload mechanism.
/// </summary>
public static IMedia ChunkUploadBinary(byte[] binary, string mediaType, UploadMediaCategory mediaCategory)
{
return UploadQueryExecutor.ChunkUploadBinary(binary, mediaType, mediaCategory);
}

/// <summary>
/// Upload a binary using the chunked upload mechanism.
/// </summary>
Expand Down

0 comments on commit 2649725

Please sign in to comment.