Skip to content

Instantly share code, notes, and snippets.

@oismaelash
Last active October 21, 2020 09:02
Show Gist options
  • Save oismaelash/7cff9c67f6efd365a780ab494d406fca to your computer and use it in GitHub Desktop.
Save oismaelash/7cff9c67f6efd365a780ab494d406fca to your computer and use it in GitHub Desktop.
using UnityEngine;
using BestHTTP;
using System;
using System.Text;
using System.IO;
using Newtonsoft.Json;
using System.Collections.Generic;
namespace Controllers
{
public class APIController : MonoBehaviour
{
#region VARIABLES
public static APIController Instance;
#endregion
#region MONOBEHAVIOUR_METHODS
private void Awake()
{
Instance = this;
}
#endregion
#region PRIVATE_METHODS
private HTTPRequest CallRequest(string url, HTTPMethods method, OnRequestFinishedDelegate onFinished = null, OnUploadProgressDelegate OnUploadProgress = null)
{
LoadingPopupScreen.Instance.Call(state: true);
HTTPRequest request = new HTTPRequest(new Uri(url), method, onFinished);
request.SetHeader("Authorization", $"Bearer {Constants.TOKEN_DEFAULT}");
request.OnUploadProgress = OnUploadProgress;
return request;
}
#endregion
public void UploadVideo(string pathFile, double timeout, Action<string, Video> onResponse, OnUploadProgressDelegate OnUploadProgress = null)
{
HTTPRequest request = CallRequest(Constants.GET_UPLOAD_VIDEO_ENDPOINT(), HTTPMethods.Post, null, OnUploadProgress);
request.AddHeader("Content-Type", "multipart/form-data");
byte[] fileData = File.ReadAllBytes(pathFile);
request.AddBinaryData("file", fileData, Path.GetFileName(pathFile), "application/octet-stream");
request.Timeout = TimeSpan.FromSeconds(timeout);
request.Callback = (originalRequest, response) =>
{
if (response.IsSuccess)
onResponse?.Invoke(null, JsonConvert.DeserializeObject<Video>(response.DataAsText));
else
onResponse?.Invoke(response.DataAsText, null);
};
request.Send();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment