GithubHelp home page GithubHelp logo

foobarbecue / twity Goto Github PK

View Code? Open in Web Editor NEW

This project forked from toofusan/twity

0.0 2.0 0.0 34 KB

Twitter API Client for Unity C# (ex-name: twitter-for-unity)

License: MIT License

C# 100.00%

twity's Introduction

Twity

Twitter API Client for Unity C#. (ex-name. twitter-for-unity)

Inspired by Let's Tweet In Unity.

Environment

  • Unity 2017.2.0f3

Available API Methods

REST API

  • GET : Available
  • POST : Available -- Chunked POST "media/upload" (INIT/APPEND/FINALIZE) is not available yet (now in progress)

Streaming API

  • POST statuses/filter : Available(beta)
  • GET statuses/sample : Available(beta)
  • UserStreams : Available(beta)

Usage

Initialize

public class EventHandler : MonoBehaviour {
  void Start () {
    Twity.Oauth.consumerKey       = "...";
    Twity.Oauth.consumerSecret    = "...";
    Twity.Oauth.accessToken       = "...";
    Twity.Oauth.accessTokenSecret = "...";
  }  
}

REST API

GET search/tweets

void Start() {
  Dictionary<string, string> parameters = new Dictionary<string, string>();
  parameters ["q"] = "search word";
  parameters ["count"] = 30.ToString();;
  StartCoroutine (Twity.Client.Get ("search/tweets", parameters, Callback));
}

void Callback(bool success, string response) {
  if (success) {
    Twity.SearchTweetsResponse Response = JsonUtility.FromJson<Twity.SearchTweetsResponse> (response);
  } else {
    Debug.Log (response);
  }
}

GET statuses/home_timeline

void Start() {
  Dictionary<string, string> parameters = new Dictionary<string, string>();
  parameters ["count"] = 30.ToString();;
  StartCoroutine (Twity.Client.Get ("statuses/home_timeline", parameters, Callback));
}

void Callback(bool success, string response) {
  if (success) {
    Twity.StatusesHomeTimelineResponse Response = JsonUtility.FromJson<Twity.StatusesHomeTimelineResponse> (response);
  } else {
    Debug.Log (response);
  }
}

POST statuses/update

void Start() {
  Dictionary<string, string> parameters = new Dictionary<string, string>();
  parameters ["status"] = "Tweet from Unity";
  StartCoroutine (Twity.Client.Post ("statuses/update", parameters, Callback));
}

void Callback(bool success, string response) {
  if (success) {
    Twity.Tweet tweet = JsonUtility.FromJson<Twity.Tweet> (response);
  } else {
    Debug.Log (response);
  }
}

POST statuses/retweet/:id

ex. search tweets with the word "Unity", and retweet 5 tweets.

void start() {
  Dictionary<string, string> parameters = new Dictionary<string, string>();
  parameters ["q"] = "Unity";       // Search keywords
  parameters ["count"] = 5.ToString();   // Number of Tweets
  StartCoroutine (Twity.Client.Get ("search/tweets", parameters, Callback));
}

void Callback(bool success, string response) {
  if (success) {
    Twity.SearchTweetsResponse Response = JsonUtility.FromJson<Twity.SearchTweetsResponse> (response);
    foreach (Twity.Tweet tweet in Response.statuses) { Retweet (tweet); }
  } else {
    Debug.Log (response);
  }
}

void Retweet(Twity.Tweet tweet) {
  Dictionary<string, string> parameters = new Dictionary<string, string>();
  parameters ["id"] = tweet.id_str;
  StartCoroutine (Twity.Client.Post ("statuses/retweet/" + tweet.id_str, parameters, RetweetCallback));
}

void RetweetCallback(bool success, string response) {
  if (success) {
    Debug.Log ("Retweet Done");
  } else {
    Debug.Log (response);
  }
}

POST media/upload

void start() {
  byte[] imgBinary = File.ReadAllBytes(path/to/the/file);
  string imgbase64 = System.Convert.ToBase64String(imgBinary);

  Dictionary<string, string> parameters = new Dictionary<string, string>();
  parameters["media_data"] = imgbase64;
  parameters["additional_owners"] = "additional owner if you have";
  StartCoroutine (Twity.Client.Post ("media/upload", parameters, MediaUploadCallback));
}

void MediaUploadCallback(bool success, string response) {
  if (success) {
    Twity.UploadMedia media = JsonUtility.FromJson<Twity.UploadMedia>(response);

    Dictionary<string, string> parameters = new Dictionary<string, string>();
    parameters["media_ids"] = media.media_id.ToString();
    parameters["status"] = "Tweet text with image";
    StartCoroutine (Twity.Client.Post ("statuses/update", parameters, StatusesUpdateCallback));
  } else {
    Debug.Log (response);
  }
}

void StatusesUpdateCallback(bool success, string response) {
  if (success) {
    Twity.Tweet tweet = JsonUtility.FromJson<Twity.Tweet> (response);
  } else {
    Debug.Log (response);
  }
}

See https://dev.Twity.com/rest/reference for more Methods.

Streaming API

POST statuses/filter

Twity.Stream stream;

void Start() {
  stream = new Stream(Twity.StreamType.PublicFilter);
  Dictionary<string, string> streamParameters = new Dictionary<string, string>();

  List<string> tracks = new List<string>();
  tracks.Add("Unity");
  tracks.Add("Twitter");
  Twity.FilterTrack filterTrack = new Twity.FilterTrack(tracks);
  streamParameters.Add(filterTrack.GetKey(), filterTrack.GetValue());
  StartCoroutine(stream.On(streamParameters, OnStream));
}

void OnStream(string response, Twity.StreamMessageType messageType) {
  try
  {
    if(messageType == Twity.StreamMessageType.Tweet)
    {
      Twity.Tweet tweet = JsonUtility.FromJson<Twity.Tweet>(response);
    }
  }
  catch (System.Exception e)
  {
    Debug.Log(e);
  }
}

User Stream

Twity.Stream stream;

void Start() {
  stream = new Stream(Twity.StreamType.User);
  Dictionary<string, string> streamParameters = new Dictionary<string, string>();

  StartCoroutine(stream.On(streamParameters, OnStream));
}

void OnStream(string response, Twity.StreamMessageType messageType) {
  try
  {
    if(messageType == Twity.StreamMessageType.Tweet)
    {
      Twity.Tweet tweet = JsonUtility.FromJson<Twity.Tweet>(response);
    }
    else if(messageType == Twity.StreamMessageType.StreamEvent)
    {
      Twity.StreamEvent streamEvent = JsonUtility.FromJson<Twity.StreamEvent>(response);
      Debug.Log(streamEvent.event_name); // Response Key 'event' is replaced 'event_name' in this library.
    }
    else if(messageType == Twity.StreamMessageType.FriendsList)
    {
      Twity.FriendsList friendsList = JsonUtility.FromJson<Twity.FriendsList>(response);
    }
  }
  catch (System.Exception e)
  {
    Debug.Log(e);
  }
}

See StreamType and StreamMessageType at TwitterStreamType.cs. and https://dev.Twity.com/streaming/overview/messages-types .

See https://dev.Twity.com/streaming/reference for more Methods.

Response class

See TwitterJson.cs, and https://dev.Twity.com/overview/api/tweets , https://dev.Twity.com/overview/api/users , https://dev.Twity.com/overview/api/entities , https://dev.Twity.com/overview/api/entities-in-twitter-objects .

You can modify TwitterJson.cs to get a response item.

License

  • There are some modified code from other library. Check "TwitterOauth.cs" and "TwitterHelper.cs".
  • For other parts, MIT.

twity's People

Contributors

toofusan avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.