Example #1
0
        public static IEnumerator PostTweet(string text, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback)
        {
            if (string.IsNullOrEmpty(text) || text.Length > 140)
            {
                Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", text));

                callback(false);
            }
            else
            {
                Dictionary <string, string> parameters = new Dictionary <string, string>();
                parameters.Add("status", text);

                // Add data to the form to post.
                WWWForm form = new WWWForm();
                form.AddField("status", text);

                // HTTP header
                Dictionary <string, string> headers = new Dictionary <string, string>();
                headers["Authorization"] = GetHeaderWithAccessToken("POST", PostTweetURL, consumerKey, consumerSecret, response, parameters);

                WWW web = new WWW(PostTweetURL, form.data, headers);
                yield return(web);

                if (!string.IsNullOrEmpty(web.error))
                {
                    Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", web.error, web.text));
                    callback(false);
                }
                else
                {
                    string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value;

                    if (!string.IsNullOrEmpty(error))
                    {
                        Debug.Log(string.Format("PostTweet - failed. {0}", error));
                        callback(false);
                    }
                    else
                    {
                        callback(true);
                    }

                    Debug.Log("PostTweet - " + web.text);
                }
            }
        }
Example #2
0
        public static IEnumerator PostTweet(string text, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback)
        {
            if (string.IsNullOrEmpty(text) || text.Length > 140)
            {
                Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", text));

                callback(false);
            }
            else
            {
                Dictionary<string, string> parameters = new Dictionary<string, string>();
                parameters.Add("status", text);

                // Add data to the form to post.
                WWWForm form = new WWWForm();
                form.AddField("status", text);

                // HTTP header
                var headers = new Hashtable();
                headers["Authorization"] = GetHeaderWithAccessToken("POST", PostTweetURL, consumerKey, consumerSecret, response, parameters);

                WWW web = new WWW(PostTweetURL, form.data, headers);
                yield return web;

                if (!string.IsNullOrEmpty(web.error))
                {
                    Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", web.error, web.text));
                    callback(false);
                }
                else
                {
                    string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value;

                    if (!string.IsNullOrEmpty(error))
                    {
                        Debug.Log(string.Format("PostTweet - failed. {0}", error));
                        callback(false);
                    }
                    else
                    {
                        callback(true);
                    }
                }
            }
        }
Example #3
0
        public static IEnumerator PostTweet(string text, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback)
        {
            if (string.IsNullOrEmpty(text) || text.Length > 140)
            {
                Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", text));

                callback(false);
            }
            else
            {
                string url = string.Format(PostTweetURL, UrlEncode(text));
                Dictionary<string, string> parameters = new Dictionary<string, string>();

                parameters.Add("status", text);

                // Need to fill body since Unity doesn't like an empty request body.
                byte[] dummmy = new byte[1];
                dummmy[0] = 0;

                // HTTP header
                Hashtable headers = new Hashtable();
                headers["Authorization"] = GetHeaderWithAccessToken("POST", url, consumerKey, consumerSecret, response, parameters);

                WWW web = new WWW(url, dummmy, headers);
                yield return web;

                if (!string.IsNullOrEmpty(web.error))
                {
                    Debug.Log(string.Format("PostTweet - failed. {0}", web.error));
                    callback(false);
                }
                else
                {
                    string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value;

                    if (!string.IsNullOrEmpty(error))
                    {
                        Debug.Log(string.Format("PostTweet - failed. {0}", error));
                        callback(false);
                    }
                    else
                    {
                       callback(true);
                    }
                }
            }
        }
        //ファイルパスから画像ツイート
        public static IEnumerator PostTweetWithMedia(string text, string imagePath, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback)
        {
            if (string.IsNullOrEmpty(text) || text.Length > 140)
            {
                Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", text));

                callback(false);
            }
            else
            {
                FileStream   fileStream = new FileStream(imagePath, FileMode.Open, FileAccess.Read);
                BinaryReader bin        = new BinaryReader(fileStream);
                byte[]       bytes      = bin.ReadBytes((int)bin.BaseStream.Length);
                var          bs64       = Convert.ToBase64String(bytes);
                bin.Close();

                Dictionary <string, string> mediaParameters = new Dictionary <string, string>
                {
                    { "media_data", bs64 }
                };
                WWWForm mediaForm = new WWWForm();
                mediaForm.AddField("media_data", bs64);
                var mediaHeaders = new Dictionary <string, string>();
                mediaHeaders.Add("Authorization", GetHeaderWithAccessToken("POST", UploadMediaURL, consumerKey, consumerSecret, response, mediaParameters));
                WWW mediaWeb = new WWW(UploadMediaURL, mediaForm.data, mediaHeaders);

                yield return(mediaWeb);

                string media_id_string = "";
                if (!string.IsNullOrEmpty(mediaWeb.error))
                {
                    Debug.Log(string.Format("PostMedia - failed. {0}\n{1}", mediaWeb.error, mediaWeb.text));
                    callback(false);
                    yield break;
                }
                else
                {
                    string error = Regex.Match(mediaWeb.text, @"<error>([^&]+)</error>").Groups[1].Value;

                    if (!string.IsNullOrEmpty(error))
                    {
                        Debug.Log(string.Format("PostTweet - failed. {0}", error));
                        callback(false);
                        yield break;
                    }
                    else
                    {
                        var res = JsonUtility.FromJson <mediaResponse>(mediaWeb.text);
                        media_id_string = res.media_id_string;
                    }
                }

                Dictionary <string, string> parameters = new Dictionary <string, string>
                {
                    { "status", text },
                    { "media_ids", media_id_string }
                };
                WWWForm form = new WWWForm();
                form.AddField("status", text);
                form.AddField("media_ids", media_id_string);

                // HTTP header
                var headers = new Dictionary <string, string>();
                headers.Add("Authorization", GetHeaderWithAccessToken("POST", PostTweetURL, consumerKey, consumerSecret, response, parameters));

                WWW web = new WWW(PostTweetURL, form.data, headers);
                yield return(web);

                if (!string.IsNullOrEmpty(web.error))
                {
                    Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", web.error, web.text));
                    callback(false);
                }
                else
                {
                    string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value;

                    if (!string.IsNullOrEmpty(error))
                    {
                        Debug.Log(string.Format("PostTweet - failed. {0}", error));
                        callback(false);
                    }
                    else
                    {
                        callback(true);
                    }
                }
            }
        }
        //Spriteから変換して画像ツイート
        public static IEnumerator PostTweetWithMedia(string _text, Sprite _sprite, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback)
        {
            if (string.IsNullOrEmpty(_text) || _text.Length > 140)
            {
                Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", _text));

                callback(false);
            }
            else
            {
                Texture2D readableTexture = new Texture2D((int)_sprite.rect.width, (int)_sprite.rect.height);
                readableTexture.ReadPixels(_sprite.textureRect, 0, 0);

                var pixels = _sprite.texture.GetPixels((int)_sprite.textureRect.x,
                                                       (int)_sprite.textureRect.y,
                                                       (int)_sprite.textureRect.width,
                                                       (int)_sprite.textureRect.height);

                readableTexture.SetPixels(pixels);
                readableTexture.Apply();

                byte[] bytes = readableTexture.EncodeToPNG();
                var    bs64  = Convert.ToBase64String(bytes);

                Dictionary <string, string> mediaParameters = new Dictionary <string, string>
                {
                    { "media_data", bs64 }
                };
                WWWForm mediaForm = new WWWForm();
                mediaForm.AddField("media_data", bs64);
                var mediaHeaders = new Dictionary <string, string>();
                mediaHeaders.Add("Authorization", GetHeaderWithAccessToken("POST", UploadMediaURL, consumerKey, consumerSecret, response, mediaParameters));
                WWW mediaWeb = new WWW(UploadMediaURL, mediaForm.data, mediaHeaders);

                yield return(mediaWeb);

                string media_id_string = "";
                if (!string.IsNullOrEmpty(mediaWeb.error))
                {
                    Debug.Log(string.Format("PostMedia - failed. {0}\n{1}", mediaWeb.error, mediaWeb.text));
                    callback(false);
                    yield break;
                }
                else
                {
                    string error = Regex.Match(mediaWeb.text, @"<error>([^&]+)</error>").Groups[1].Value;

                    if (!string.IsNullOrEmpty(error))
                    {
                        Debug.Log(string.Format("PostTweet - failed. {0}", error));
                        callback(false);
                        yield break;
                    }
                    else
                    {
                        var res = JsonUtility.FromJson <mediaResponse>(mediaWeb.text);
                        media_id_string = res.media_id_string;
                    }
                }

                Dictionary <string, string> parameters = new Dictionary <string, string>
                {
                    { "status", _text },
                    { "media_ids", media_id_string }
                };
                WWWForm form = new WWWForm();
                form.AddField("status", _text);
                form.AddField("media_ids", media_id_string);

                // HTTP header
                var headers = new Dictionary <string, string>();
                headers.Add("Authorization", GetHeaderWithAccessToken("POST", PostTweetURL, consumerKey, consumerSecret, response, parameters));

                WWW web = new WWW(PostTweetURL, form.data, headers);
                yield return(web);

                if (!string.IsNullOrEmpty(web.error))
                {
                    Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", web.error, web.text));
                    callback(false);
                }
                else
                {
                    string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value;

                    if (!string.IsNullOrEmpty(error))
                    {
                        Debug.Log(string.Format("PostTweet - failed. {0}", error));
                        callback(false);
                    }
                    else
                    {
                        callback(true);
                    }
                }
            }
        }
Example #6
0
 public static IEnumerator PostTweet(string text, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback)
 {
     return(PostTweet(text, "", consumerKey, response, callback));
 }
Example #7
0
        public static IEnumerator PostTweet(byte[] imageInBytes, string consumerKey, string consumerSecret, string accessToken, string accessTokenSecret, PostTweetCallback callback)
        {
            if (imageInBytes.Length == 0)
            {
                callback(false);
            }
            else
            {
                Dictionary <string, string> parameters = new Dictionary <string, string>();
                string encoded64ImageData = System.Convert.ToBase64String(imageInBytes);
                parameters.Add("media_data", encoded64ImageData);

                // Add data to the form to post.
                WWWForm form = new WWWForm();
                form.AddField("media_data", encoded64ImageData);

                // HTTP header
                var headers = new Dictionary <string, string>();
                headers["Authorization"]             = GetHeaderWithAccessToken("POST", UploadMediaURL, consumerKey, consumerSecret, accessToken, accessTokenSecret, parameters);
                headers["Content-Transfer-Encoding"] = "base64";

                WWW web = new WWW(UploadMediaURL, form.data, headers);
                yield return(web);

                if (!string.IsNullOrEmpty(web.error))
                {
                    Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", web.error, web.text));
                    callback(false);
                }
                else
                {
                    string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value;

                    if (!string.IsNullOrEmpty(error))
                    {
                        Debug.Log(string.Format("PostTweet - failed. {0}", error));
                        callback(false);
                    }
                    else
                    {
                        callback(true);

                        // NOW THAT MEDIA IS UPLOADED, TWEET WITH THE ASSOCIATED MEDIA ID
                        string parsedMediaID = web.text.Substring(12, 18);
                        string tweetString   = "What a beautiful bonsai~";

                        parameters = new Dictionary <string, string>();
                        parameters.Add("status", tweetString);
                        parameters.Add("media_ids", parsedMediaID);

                        // Add data to the form to post.
                        form = new WWWForm();
                        form.AddField("status", tweetString);
                        form.AddField("media_ids", parsedMediaID);

                        // HTTP header
                        headers = new Dictionary <string, string>();
                        headers["Authorization"] = GetHeaderWithAccessToken("POST", PostTweetURL, consumerKey, consumerSecret, accessToken, accessTokenSecret, parameters);

                        WWW web2 = new WWW(PostTweetURL, form.data, headers);
                        yield return(web2);

                        if (!string.IsNullOrEmpty(web2.error))
                        {
                            Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", web2.error, web2.text));
                            callback(false);
                        }
                        else
                        {
                            error = Regex.Match(web2.text, @"<error>([^&]+)</error>").Groups[1].Value;

                            if (!string.IsNullOrEmpty(error))
                            {
                                Debug.Log(string.Format("PostTweet - failed. {0}", error));
                                callback(false);
                            }
                            else
                            {
                                callback(true);

                                // Now that the image is uploaded, we need to send a tweet and incorporate the image ID...
                            }
                        }
                    }
                }
            }
        }
Example #8
0
        public static IEnumerator PostTweet(string text, string mediaString, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback)
        {
            if (string.IsNullOrEmpty(text) || text.Length > 140)
            {
                Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", text));

                callback(false);
            }
            else
            {
                Debug.Log("media string>>" + mediaString);
                Dictionary <string, string> mediaParameters = new Dictionary <string, string>();

                mediaParameters.Add("status", text);
                mediaParameters.Add("media_data", mediaString);

                // Add data to the form to post.
                WWWForm mediaForm = new WWWForm();
                mediaForm.AddField("media_data", mediaString);
                mediaForm.AddField("status", text);

                //Debug.Log (System.Convert.ToBase64String (File.ReadAllBytes (filePath)));
                string UploadMediaURL = "https://upload.twitter.com/1.1/media/upload.json";
                // HTTP header
                Dictionary <string, string> mediaHeaders = new Dictionary <string, string>();
                string url  = UploadMediaURL;
                string auth = GetHeaderWithAccessToken("POST", UploadMediaURL, consumerKey, consumerSecret, response, mediaParameters);
                mediaHeaders.Add("Authorization", auth);
                mediaHeaders.Add("Content-Transfer-Encoding", "base64");

                WWW mw = new WWW(UploadMediaURL, mediaForm.data, mediaHeaders);
                yield return(mw);

                string mID = Regex.Match(mw.text, @"(\Dmedia_id\D\W)(\d*)").Groups[2].Value;

                Debug.Log("response from media request : " + mw.text);

                Debug.Log("mID = " + mID);

                if (!string.IsNullOrEmpty(mw.error))
                {
                    Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", mw.error, mw.text));
                    callback(false);
                }
                else
                {
                    string error = Regex.Match(mw.text, @"<error>([^&]+)</error>").Groups[1].Value;

                    if (!string.IsNullOrEmpty(error))
                    {
                        Debug.Log(string.Format("PostTweet - failed. {0}", error));
                        callback(false);
                    }
                    else
                    {
                        callback(true);
                    }
                }

                Dictionary <string, string> parameters = new Dictionary <string, string>();
                parameters.Add("status", text);
                parameters.Add("media_ids", mID);

                // Add data to the form to post.
                WWWForm form = new WWWForm();
                form.AddField("status", text);
                form.AddField("media_ids", mID);

                // HTTP header
                var headers = new Dictionary <string, string>();
                headers["Authorization"] = GetHeaderWithAccessToken("POST", PostTweetURL, consumerKey, consumerSecret, response, parameters);

                WWW web = new WWW(PostTweetURL, form.data, headers);
                yield return(web);

                if (!string.IsNullOrEmpty(web.error))
                {
                    Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", web.error, web.text));
                    callback(false);
                }
                else
                {
                    string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value;

                    if (!string.IsNullOrEmpty(error))
                    {
                        Debug.Log(string.Format("PostTweet - failed. {0}", error));
                        callback(false);
                    }
                    else
                    {
                        callback(true);
                    }
                }
            }
        }
Example #9
0
        public static IEnumerator PostImageTweet(string text, byte[] image, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback) {
            if (string.IsNullOrEmpty(text) || text.Length > 140) {
                Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", text));

                callback(false);
            } else if (image == null || image.Length == 0) {
                Debug.Log("Missing image.");

                callback(false);
            } else {
                Dictionary<string, string> parameters = new Dictionary<string, string>();
                
                var form = new WWWForm();
                form.AddBinaryData("status", UTF8Encoding.UTF8.GetBytes(text));
                form.AddBinaryData("media[]", image, "anuki.jpg", "application/octet-stream");
                var request = new HTTP.Request(PostImageTweetURL, form);
                request.headers.Add("Authorization", GetHeaderWithAccessToken("POST", PostImageTweetURL, consumerKey, consumerSecret, response, parameters));
                yield return request.Send();
                
                if (request.exception != null) {
                    
                    Debug.Log(string.Format("PostImageTweet - failed:\n" + request.exception.Message));
                    callback(false);
                } else {
                    var txt = request.response.Text;

                    if (txt.Contains("\"errors\":")) {
                        Debug.Log(string.Format("PostImageTweet - failed. {0}", txt));
                        callback(false);
                    } else {
                        Debug.Log("Response: " + txt);
                        callback(true);
                    }
                }
            }
        }
Example #10
0
        // Token: 0x06002F3E RID: 12094 RVA: 0x000E51BC File Offset: 0x000E35BC
        public static IEnumerator PostTweet(string text, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback)
        {
            if (string.IsNullOrEmpty(text) || text.Length > 140)
            {
                Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", text));
                callback(false);
            }
            else
            {
                Dictionary <string, string> parameters = new Dictionary <string, string>();
                parameters.Add("status", text);
                WWWForm form = new WWWForm();
                form.AddField("status", text);
                Dictionary <string, string> headers = new Dictionary <string, string>();
                headers["Authorization"] = API.GetHeaderWithAccessToken("POST", "https://api.twitter.com/1.1/statuses/update.json", consumerKey, consumerSecret, response, parameters);
                WWW web = new WWW("https://api.twitter.com/1.1/statuses/update.json", form.data, headers);
                yield return(web);

                if (!string.IsNullOrEmpty(web.error))
                {
                    Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", web.error, web.text));
                    callback(false);
                }
                else
                {
                    string value = Regex.Match(web.text, "<error>([^&]+)</error>").Groups[1].Value;
                    if (!string.IsNullOrEmpty(value))
                    {
                        Debug.Log(string.Format("PostTweet - failed. {0}", value));
                        callback(false);
                    }
                    else
                    {
                        callback(true);
                    }
                }
            }
            yield break;
        }
Example #11
0
        public static IEnumerator PostTweet(string text, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback)
        {
            if (string.IsNullOrEmpty(text) || text.Length > 140)
            {
                Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", text));

                callback(false);
            }
            else
            {
                string url = string.Format(PostTweetURL, UrlEncode(text));
                Dictionary <string, string> parameters = new Dictionary <string, string>();

                parameters.Add("status", text);

                // Need to fill body since Unity doesn't like an empty request body.
                byte[] dummmy = new byte[1];
                dummmy[0] = 0;

                // HTTP header
                Hashtable headers = new Hashtable();
                headers["Authorization"] = GetHeaderWithAccessToken("POST", url, consumerKey, consumerSecret, response, parameters);

                WWW web = new WWW(url, dummmy, headers);
                yield return(web);

                if (!string.IsNullOrEmpty(web.error))
                {
                    Debug.Log(string.Format("PostTweet - failed. {0}", web.error));
                    callback(false);
                }
                else
                {
                    string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value;

                    if (!string.IsNullOrEmpty(error))
                    {
                        Debug.Log(string.Format("PostTweet - failed. {0}", error));
                        callback(false);
                    }
                    else
                    {
                        callback(true);
                    }
                }
            }
        }
Example #12
0
        public static IEnumerator PostTweet(string text, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback)
        {
            if (string.IsNullOrEmpty(text) || text.Length > 140)
            {
                Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", text));

                callback(false);
            }
            else
            {
                Dictionary <string, string> parameters = new Dictionary <string, string>();
                parameters.Add("status", text);

                // Add data to the form to post.
                WWWForm form = new WWWForm();
                form.AddField("status", text);

                // HTTP header
                Dictionary <string, string> headers = new Dictionary <string, string>();
                headers.Add("Authorization", GetHeaderWithAccessToken("POST", PostTweetURL, consumerKey, consumerSecret, response, parameters));
                //var headers = new Hashtable();
                //headers["Authorization"] = GetHeaderWithAccessToken("POST", PostTweetURL, consumerKey, consumerSecret, response, parameters);
                string          method = form.data == null ? "GET" : "POST";
                UnityWebRequest web    = new UnityWebRequest(PostTweetURL, method)
                {
                    downloadHandler = new DownloadHandlerBuffer()
                };
                foreach (KeyValuePair <string, string> header in headers)
                {
                    web.SetRequestHeader(header.Key, header.Value);
                }
                yield return(web);

                if (!string.IsNullOrEmpty(web.error))
                {
                    Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", web.error, web.downloadHandler.text));
                    callback(false);
                }
                else
                {
                    string error = Regex.Match(web.downloadHandler.text, @"<error>([^&]+)</error>").Groups[1].Value;

                    if (!string.IsNullOrEmpty(error))
                    {
                        Debug.Log(string.Format("PostTweet - failed. {0}", error));
                        callback(false);
                    }
                    else
                    {
                        callback(true);
                    }
                }
            }
        }