eea1c0437b89cdf08093a148b3dae1d784c56e56.svn-base 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package io.agora.sample;
  2. import io.agora.media.AccessToken2;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.TreeMap;
  6. public class AccessTokenInspector {
  7. public static void main(String[] args) {
  8. AccessTokenInspector inspector = new AccessTokenInspector();
  9. inspector.inspect(args[0]);
  10. }
  11. void inspect(String input) {
  12. AccessToken2 token = new AccessToken2();
  13. System.out.printf("parsing token: %s\n\n", input);
  14. token.parse(input);
  15. System.out.printf("appId:%s\n", token.appId);
  16. System.out.printf("appCert:%s\n", token.appCert);
  17. System.out.printf("salt:%d\n", token.salt);
  18. System.out.printf("issueTs:%d\n", token.issueTs);
  19. System.out.printf("expire:%d\n", token.expire);
  20. System.out.printf("services:\n");
  21. for (AccessToken2.Service service : token.services.values()) {
  22. System.out.printf("\t{%s}\n", toServiceStr(service));
  23. }
  24. }
  25. String toServiceStr(AccessToken2.Service service) {
  26. if (service.getServiceType() == AccessToken2.SERVICE_TYPE_RTC) {
  27. AccessToken2.ServiceRtc serviceRtc = (AccessToken2.ServiceRtc) service;
  28. return String.format("type:rtc, channel:%s, uid: %s, privileges: [%s]}", serviceRtc.getChannelName(),
  29. serviceRtc.getUid(), toRtcPrivileges(serviceRtc.getPrivileges()));
  30. } else if (service.getServiceType() == AccessToken2.SERVICE_TYPE_RTM) {
  31. AccessToken2.ServiceRtm serviceRtm = (AccessToken2.ServiceRtm) service;
  32. return String.format("type:rtm, user_id:%s, privileges:[%s]", serviceRtm.getUserId(),
  33. toRtmPrivileges(serviceRtm.getPrivileges()));
  34. } else if (service.getServiceType() == AccessToken2.SERVICE_TYPE_STREAMING) {
  35. AccessToken2.ServiceStreaming serviceStreaming = (AccessToken2.ServiceStreaming) service;
  36. return String.format("type:streaming, privileges:[%s]", toStreamingPrivileges(serviceStreaming.getPrivileges()));
  37. } else if (service.getServiceType() == AccessToken2.SERVICE_TYPE_CHAT) {
  38. AccessToken2.ServiceChat serviceChat = (AccessToken2.ServiceChat) service;
  39. return String.format("type:chat, user_id:%s, privileges:[%s]", serviceChat.getUserId(),
  40. toChatPrivileges(serviceChat.getPrivileges()));
  41. }
  42. return "unknown";
  43. }
  44. private String toRtcPrivileges(TreeMap<Short, Integer> privileges) {
  45. List<String> privilegeStrList = new ArrayList<>(privileges.size());
  46. if (privileges.containsKey(AccessToken2.PrivilegeRtc.PRIVILEGE_JOIN_CHANNEL.intValue)) {
  47. privilegeStrList.add(String.format("JOIN_CHANNEL(%d)",
  48. privileges.get(AccessToken2.PrivilegeRtc.PRIVILEGE_JOIN_CHANNEL.intValue)));
  49. }
  50. if (privileges.containsKey(AccessToken2.PrivilegeRtc.PRIVILEGE_PUBLISH_AUDIO_STREAM.intValue)) {
  51. privilegeStrList.add(String.format("PUBLISH_AUDIO_STREAM(%d)",
  52. privileges.get(AccessToken2.PrivilegeRtc.PRIVILEGE_PUBLISH_AUDIO_STREAM.intValue)));
  53. }
  54. if (privileges.containsKey(AccessToken2.PrivilegeRtc.PRIVILEGE_PUBLISH_VIDEO_STREAM.intValue)) {
  55. privilegeStrList.add(String.format("PUBLISH_VIDEO_STREAM(%d)",
  56. privileges.get(AccessToken2.PrivilegeRtc.PRIVILEGE_PUBLISH_VIDEO_STREAM.intValue)));
  57. }
  58. if (privileges.containsKey(AccessToken2.PrivilegeRtc.PRIVILEGE_PUBLISH_DATA_STREAM.intValue)) {
  59. privilegeStrList.add(String.format("PUBLISH_DATA_STREAM(%d)",
  60. privileges.get(AccessToken2.PrivilegeRtc.PRIVILEGE_PUBLISH_DATA_STREAM.intValue)));
  61. }
  62. return String.join(",", privilegeStrList);
  63. }
  64. private String toRtmPrivileges(TreeMap<Short, Integer> privileges) {
  65. List<String> privilegeStrList = new ArrayList<>(privileges.size());
  66. if (privileges.containsKey(AccessToken2.PrivilegeRtm.PRIVILEGE_JOIN_LOGIN.intValue)) {
  67. privilegeStrList.add(String.format("JOIN_LOGIN(%d)",
  68. privileges.get(AccessToken2.PrivilegeRtm.PRIVILEGE_JOIN_LOGIN.intValue)));
  69. }
  70. return String.join(",", privilegeStrList);
  71. }
  72. private String toStreamingPrivileges(TreeMap<Short, Integer> privileges) {
  73. List<String> privilegeStrList = new ArrayList<>(privileges.size());
  74. if (privileges.containsKey(AccessToken2.PrivilegeStreaming.PRIVILEGE_PUBLISH_MIX_STREAM.intValue)) {
  75. privilegeStrList.add(String.format("PUBLISH_MIX_STREAM(%d)",
  76. privileges.get(AccessToken2.PrivilegeStreaming.PRIVILEGE_PUBLISH_MIX_STREAM.intValue)));
  77. }
  78. if (privileges.containsKey(AccessToken2.PrivilegeStreaming.PRIVILEGE_PUBLISH_RAW_STREAM.intValue)) {
  79. privilegeStrList.add(String.format("PUBLISH_RAW_STREAM(%d)",
  80. privileges.get(AccessToken2.PrivilegeStreaming.PRIVILEGE_PUBLISH_RAW_STREAM.intValue)));
  81. }
  82. return String.join(",", privilegeStrList);
  83. }
  84. private String toChatPrivileges(TreeMap<Short, Integer> privileges) {
  85. List<String> privilegeStrList = new ArrayList<>(privileges.size());
  86. if (privileges.containsKey(AccessToken2.PrivilegeChat.PRIVILEGE_CHAT_USER.intValue)) {
  87. privilegeStrList.add(String.format("USER(%d)",
  88. privileges.get(AccessToken2.PrivilegeChat.PRIVILEGE_CHAT_USER.intValue)));
  89. }
  90. if (privileges.containsKey(AccessToken2.PrivilegeChat.PRIVILEGE_CHAT_APP.intValue)) {
  91. privilegeStrList.add(String.format("APP(%d)",
  92. privileges.get(AccessToken2.PrivilegeChat.PRIVILEGE_CHAT_APP.intValue)));
  93. }
  94. return String.join(",", privilegeStrList);
  95. }
  96. }