forked from nhathuy7996/ReUseScript_Unity
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRequestBase.cs
132 lines (107 loc) · 3.37 KB
/
RequestBase.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using com.adjust.sdk;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.Purchasing.MiniJSON;
public class RequestBase
{
protected string _uri = Constant.HOST_NOR;
protected string uri
{
get
{
#if PRE
_uri = Constant.HOST_PRE;
#elif DEV
_uri = Constant.HOST_DEV;
#endif
return _uri;
}
}
protected UnityWebRequest request;
public RequestBase(string endPoin)
{
this.request = UnityWebRequest.Get(uri + endPoin);
}
public RequestBase(string endPoin, string postData, RequestType type = RequestType.POST )
{
if (!string.IsNullOrEmpty(postData))
{
this.request = new UnityWebRequest(uri + endPoin, type.ToString());
byte[] bodyRaw = Encoding.UTF8.GetBytes(postData);
request.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw);
request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
}
else
this.request = UnityWebRequest.Post(uri + endPoin, "");
}
public RequestBase setHeader(string name, string value)
{
this.request.SetRequestHeader(name, value);
return this;
}
public async Task<RequestBase> Send(System.Action<RequestBase> onDone = null, System.Action<RequestBase> onFail = null)
{
//Debug.LogError(this.request.uri+ " ---- ");
this.request.SetRequestHeader("Content-Type", "application/json");
this.request.SetRequestHeader("Accept", "application/json");
this.request.SendWebRequest();
while (!this.request.isDone)
{
await Task.Delay(10);
}
if (!string.IsNullOrEmpty(access_token))
{
UserDatas.access_token = access_token;
UserDatas.SaveLocalData();
}
if(this.request.result == UnityWebRequest.Result.Success)
{
if (onDone != null)
{
try
{
onDone(this);
}
catch (Exception e)
{
Debug.LogError("request--> " + this.request.uri + "---- invoke done error: \n " + e);
}
}
}
else
{
Debug.LogError("send request--> " + this.request.uri
+ "---- FAIL!!! \n "+this.request.result.ToString()+"\n " + this.request.error);
if (onFail != null)
{
try
{
onFail(this);
}
catch (Exception e)
{
Debug.LogError("request--> " + this.request.uri + "---- invoke fail error: \n " + e);
}
}
}
return this;
}
public string getResHeader(string key) => this.request.GetResponseHeader(key);
public bool isDone => this.request.isDone;
public float progress => this.request.downloadProgress;
public string access_token => this.getResHeader("x-access-token");
public string response => this.request.downloadHandler.text;
public long responseCode => this.request.responseCode;
public enum RequestType
{
GET,
POST,
PUT,
DELETE
}
}