Beispiel #1
0
        public static IEnumerator Post(string APIPath, Dictionary <string, string> APIParams, TwitterCallback callback)
        {
            List <string> endpointForFormdata = new List <string>
            {
                "media/upload",
                "account/update_profile_image",
                "account/update_profile_banner",
                "account/update_profile_background_image"
            };

            string REQUEST_URL = "";

            if (APIPath.Contains("media/"))
            {
                REQUEST_URL = "https://upload.twitter.com/1.1/" + APIPath + ".json";
            }
            else
            {
                REQUEST_URL = "https://api.twitter.com/1.1/" + APIPath + ".json";
            }

            WWWForm form = new WWWForm();
            SortedDictionary <string, string> parameters = new SortedDictionary <string, string>();

            if (endpointForFormdata.IndexOf(APIPath) != -1)
            {
                // multipart/form-data

                foreach (KeyValuePair <string, string> parameter in APIParams)
                {
                    if (parameter.Key.Contains("media"))
                    {
                        form.AddBinaryData("media", Convert.FromBase64String(parameter.Value), "", "");
                    }
                    else if (parameter.Key == "image")
                    {
                        form.AddBinaryData("image", Convert.FromBase64String(parameter.Value), "", "");
                    }
                    else if (parameter.Key == "banner")
                    {
                        form.AddBinaryData("banner", Convert.FromBase64String(parameter.Value), "", "");
                    }
                    else
                    {
                        form.AddField(parameter.Key, parameter.Value);
                    }
                }

                UnityWebRequest request = UnityWebRequest.Post(REQUEST_URL, form);
                yield return(SendRequest(request, parameters, "POST", REQUEST_URL, callback));
            }
            else
            {
                // application/x-www-form-urlencoded

                parameters = Helper.ConvertToSortedDictionary(APIParams);
                foreach (KeyValuePair <string, string> parameter in APIParams)
                {
                    form.AddField(parameter.Key, parameter.Value);
                }

                UnityWebRequest request = UnityWebRequest.Post(REQUEST_URL, form);
                request.SetRequestHeader("ContentType", "application/x-www-form-urlencoded");
                yield return(SendRequest(request, parameters, "POST", REQUEST_URL, callback));
            }
        }