ShanxiKnowledgeBase/SXKnowledgeBase-master/sxknowledgebase/Assets/Scripts/Public/InterfaceManager.cs

174 lines
6.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using DG.Tweening.Plugins.Core.PathCore;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using UnityEngine;
using UnityEngine.Networking;
public static class InterfaceManager
{
public static string ConfigureAudioPath { get; } = Application.streamingAssetsPath + "/ConfigurationFile/Configure_Audio.json";
public static string ConfigureDevicePath { get; } = Application.streamingAssetsPath + "/ConfigurationFile/Configure_Device.json";
public static string ConfigureApiPath { get; } = Application.streamingAssetsPath + "/ConfigurationFile/Configure_Api.txt";
#region
public static string IpAddress = "";
public static string GET_Data = "Data";
public static string GET_User = "User";
public static Dictionary<string, string> API_DIC = new Dictionary<string, string>();
#endregion
public static IEnumerator Post(string _url, string _post_json_str, Action<string, string> _callback)
{
using (UnityWebRequest _request = new UnityWebRequest())
{
_request.url = _url;
_request.method = "POST";
_request.downloadHandler = new DownloadHandlerBuffer();
int _time_out = 0;
int.TryParse(API_DIC["TIME_OUT"], out _time_out);
_request.timeout = _time_out;
_request.SetRequestHeader("auth_token", GameInit.InfoIni.token);
_request.SetRequestHeader("Content-Type", "application/json;charset=utf-8");
byte[] bodyRaw = Encoding.UTF8.GetBytes(_post_json_str);
_request.uploadHandler = new UploadHandlerRaw(bodyRaw);
yield return _request.SendWebRequest();
if (_request.error != null)
{
Debug.Log("调用接口[" + _url + "]错误!" + _request.error);
_callback?.Invoke(_request.url+":["+_request.error+"]", null);
}
else
{
_callback?.Invoke(null, _request.downloadHandler.text);
}
}
}
public static IEnumerator Get(string _path, Action<string,string> _callback)
{
using (UnityWebRequest _request = UnityWebRequest.Get(_path))
{
int _time_out = 0;
int.TryParse(API_DIC["TIME_OUT"], out _time_out);
_request.timeout = _time_out;
_request.SetRequestHeader("auth_token", GameInit.InfoIni.token);
yield return _request.SendWebRequest();
if (_request.error != null)
{
Debug.Log("调用接口[" + _request.url + "]错误!" + _request.error);
_callback?.Invoke(_request.url + ":[" + _request.error + "]", null);
}
else
{
_callback?.Invoke(null,_request.downloadHandler.text);
}
}
}
public static IEnumerator GetDataFullUrl(string url, Action<string> callback)
{
using (UnityWebRequest _request = UnityWebRequest.Get(url))
{
int _time_out = 0;
int.TryParse(API_DIC["TIME_OUT"], out _time_out);
_request.timeout = _time_out;
yield return _request.SendWebRequest();
if (_request.error != null)
{
Debug.Log("调用接口[" + url + "]错误!" + _request.error);
}
else
{
callback?.Invoke(_request.downloadHandler.text);
}
}
}
/// <summary>
/// 下载图片
/// </summary>
/// <param name="_url"></param>
/// <param name="_callback"></param>
/// <returns></returns>
public static IEnumerator GetSprite(string _url, Action<Sprite> _callback)
{
using (UnityWebRequest _request = UnityWebRequest.Get(_url))
{
int _time_out = 0;
int.TryParse(API_DIC["TIME_OUT"], out _time_out);
_request.timeout = _time_out;
DownloadHandlerTexture _downloadHandlerTexture = new DownloadHandlerTexture(true);
_request.downloadHandler = _downloadHandlerTexture;
yield return _request.SendWebRequest();
if (_request.error != null)
{
Debug.Log("调用接口[" + _url + "]错误!" + _request.error);
}
else
{
var _texture = _downloadHandlerTexture.texture;
Sprite _sprite = Sprite.Create(_texture, new Rect(0, 0, _texture.width, _texture.height), new Vector2(0.5f, 0.5f));
_callback?.Invoke(_sprite);
}
}
}
public static IEnumerator GetAudio(string _url, Action<AudioClip> _callback)
{
using (var _request = UnityWebRequestMultimedia.GetAudioClip(_url, AudioType.MPEG))
{
int _time_out = 0;
int.TryParse(API_DIC["TIME_OUT"], out _time_out);
_request.timeout = _time_out;
yield return _request.SendWebRequest();
if (_request.error != null)
{
Debug.LogError("调用接口[" + _url + "]错误!" + _request.error);
}
else
{
_callback?.Invoke(DownloadHandlerAudioClip.GetContent(_request));
}
}
}
/// <summary>
/// 获取本地文件
/// </summary>
/// <param name="_path"></param>
/// <param name="_callback"></param>
public static void GetLocalFiles(string _path, Action<List<FileInfo>> _callback)
{
if (Directory.Exists(_path))
{
DirectoryInfo direction = new DirectoryInfo(_path);
FileInfo[] files = direction.GetFiles("*", SearchOption.AllDirectories);
List<FileInfo> _result = new List<FileInfo>();
for (int i = 0; i < files.Length; i++)
{
if (files[i].Name.EndsWith(".meta"))
{
continue;
}
_result.Add(files[i]);
//Debug.Log("Name : " + files[i].Name);
//Debug.Log("FullName : " + files[i].FullName);
//Debug.Log("DirectoryName : " + files[i].DirectoryName);
}
_callback?.Invoke(_result);
}
}
}