/traces/TwitterTracer/src/TwitClient.java

https://code.google.com/p/synoptic/ · Java · 153 lines · 120 code · 23 blank · 10 comment · 13 complexity · a4662bf112995419ebf05cbd74e9f610 MD5 · raw file

  1. import java.io.FileOutputStream;
  2. import java.io.PrintWriter;
  3. import java.util.Date;
  4. import java.util.Map.Entry;
  5. import com.google.protobuf.Descriptors.FieldDescriptor;
  6. import Tracer;
  7. import MessageTrace.FullTrace;
  8. import MessageTrace.TraceSet;
  9. import MessageTrace.WrappedMessage;
  10. import net.unto.twitter.Api;
  11. import net.unto.twitter.TwitterProtos.RateLimitStatus;
  12. import net.unto.twitter.TwitterProtos.Relationship;
  13. import net.unto.twitter.TwitterProtos.Results;
  14. import net.unto.twitter.TwitterProtos.Status;
  15. import net.unto.twitter.TwitterProtos.Trends;
  16. import net.unto.twitter.TwitterProtos.User;
  17. import net.unto.twitter.TwitterProtos.Results.Result;
  18. import net.unto.twitter.TwitterProtos.Trends.Trend;
  19. import net.unto.twitter.UtilProtos.Url;
  20. public class TwitClient {
  21. public static final String FILE_NAME = "TwitTrace2";
  22. public static void main(String[] args) throws Exception {
  23. Date current = new Date();
  24. User user;
  25. Tracer.create();
  26. Api api = Api.builder().username("test503p").password("503ptest")
  27. .build();
  28. for (Status status : api.publicTimeline().build().get()) {
  29. System.out.println(String.format("%s wrote '%s'", status.getUser()
  30. .getName(), status.getText()));
  31. // Date current = new Date();
  32. Tracer
  33. .log(1, 0, current.getTime(), "Status", status
  34. .toByteString());
  35. }
  36. Tracer.newTrace();
  37. for (Status status : api.replies().build().get()) {
  38. // Date current = new Date();
  39. Tracer
  40. .log(1, 0, current.getTime(), "Status", status
  41. .toByteString());
  42. }
  43. Tracer.newTrace();
  44. Relationship relationship = api.showFriendships().targetScreenName(
  45. "wired").build().get();
  46. // Date current = new Date();
  47. Tracer.log(1, 0, current.getTime(), "Relationship", relationship
  48. .toByteString());
  49. Tracer.newTrace();
  50. Status status = api.updateStatus("Hello Twitter").build().post();
  51. Tracer.log(1, 0, current.getTime(), "Status", status.toByteString());
  52. Tracer.newTrace();
  53. for (Status s : api.userTimeline().build().get()) {
  54. Tracer.log(1, 0, current.getTime(), "Status", s.toByteString());
  55. }
  56. Tracer.newTrace();
  57. user = api.showUser().id("test503p").build().get();
  58. Tracer.log(1, 0, current.getTime(), "User", user.toByteString());
  59. Tracer.newTrace();
  60. Trends trends = api.trends().build().get();
  61. for (Trend trend : trends.getTrendsList()) {
  62. Tracer.log(1, 0, current.getTime(), "Trend", trend.toByteString());
  63. }
  64. Tracer.newTrace();
  65. Results results = api.search("obama").build().get();
  66. for (Result result : results.getResultsList()) {
  67. System.out.println(result.getText());
  68. Tracer
  69. .log(1, 0, current.getTime(), "Result", result
  70. .toByteString());
  71. }
  72. Tracer.newTrace();
  73. RateLimitStatus rateLimitStatus = api.rateLimitStatus().build().get();
  74. System.out.println(rateLimitStatus.getRemainingHits());
  75. Tracer.log(1, 0, current.getTime(), "RateLimitStatus", rateLimitStatus
  76. .toByteString());
  77. Tracer.newTrace();
  78. user = api.updateProfile().name("New Name").build().post();
  79. Tracer.log(1, 0, current.getTime(), "User", user.toByteString());
  80. Tracer.newTrace();
  81. User leaving = api.leave("wired").build().post();
  82. Tracer.log(1, 0, current.getTime(), "User", leaving.toByteString());
  83. Tracer.newTrace();
  84. User following = api.follow("wired").build().post();
  85. Tracer.log(1, 0, current.getTime(), "User", following.toByteString());
  86. Tracer.newTrace();
  87. for (Status s : api.friendsTimeline().build().get()) {
  88. Tracer.log(1, 0, current.getTime(), "Status", s.toByteString());
  89. }
  90. Tracer.newTrace();
  91. TraceSet result = Tracer.completeSet();
  92. FileOutputStream output = new FileOutputStream(FILE_NAME + ".trace");
  93. result.writeTo(output);
  94. output.close();
  95. PrintWriter txtOut = new PrintWriter(new FileOutputStream(FILE_NAME
  96. + ".txt"));
  97. for (FullTrace t : result.getFullTraceList()) {
  98. for (WrappedMessage m : t.getWrappedMessageList()) {
  99. boolean first = true;
  100. for (Entry<FieldDescriptor, Object> field : m.getAllFields()
  101. .entrySet()) {
  102. if (first)
  103. first = false;
  104. else
  105. txtOut.print(", ");
  106. if (field.getValue().equals("Url get")
  107. || field.getValue().equals("Url post")) {
  108. Url p = Url.parseFrom(m.getTheMessage());
  109. txtOut.print(field.getKey().getName() + " : "
  110. + p.getPath());
  111. } else {
  112. txtOut.print(field.getKey().getName() + " : "
  113. + field.getValue());
  114. }
  115. }
  116. txtOut.println();
  117. /*
  118. * If accessing message contents is necessary (need more than
  119. * meta info) then use code like the following: String msgType =
  120. * m.getType(); if(msgType.equals("Prepare")){ Prepare p =
  121. * Prepare.parseFrom(m.getTheMessage()); p.getWhateverField()...
  122. * }
  123. */
  124. }
  125. txtOut.println();
  126. txtOut.println();
  127. }
  128. txtOut.close();
  129. }
  130. }