test_class.file: BiliLiveLib/src/test/java/charlie/bililivelib/freesilver/FreeSilverProtocolTest.java
test_class.identifier: FreeSilverProtocolTest
test_case.body: @Test
      public void waitToGetSilver() throws Exception {
          FreeSilverProtocol protocol = new FreeSilverProtocol(initSession());
          FreeSilverProtocol.CurrentSilverTaskInfo taskInfo = protocol.getCurrentFreeSilverStatus();
          if (!taskInfo.hasRemaining()) fail();
          FreeSilverProtocol.GetSilverInfo info = null;
          do {
              try {
                  info = protocol.waitToGetSilver();
                  System.out.println(info);
              } catch (Exception e) {
                  //if (e.getMessage().contains("FINISHED"))
                  //return;
                  e.printStackTrace();
              }
          } while (info == null || !info.isEnd());
      }
test_case.class_method_signature: FreeSilverProtocolTest.waitToGetSilver()
test_case.full_signature: @Test public void waitToGetSilver()
test_case.identifier: waitToGetSilver
test_case.invocations: initSession getCurrentFreeSilverStatus hasRemaining fail waitToGetSilver println printStackTrace isEnd
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void waitToGetSilver()
focal_class.declarator: GET_CURRENT_TASK_G = "/FreeSilver/getCurrentTask"
focal_class.modifier: private static final
focal_class.original_string: private static final String GET_CURRENT_TASK_G = "/FreeSilver/getCurrentTask";
focal_class.type: String
focal_class.var_name: GET_CURRENT_TASK_G
focal_class.declarator: GET_TODAY_INFO_G = "/FreeSilver/getTaskInfo"
focal_class.modifier: private static final
focal_class.original_string: private static final String GET_TODAY_INFO_G = "/FreeSilver/getTaskInfo";
focal_class.type: String
focal_class.var_name: GET_TODAY_INFO_G
focal_class.declarator: CAPTCHA_G = "/freeSilver/getCaptcha"
focal_class.modifier: private static final
focal_class.original_string: private static final String CAPTCHA_G = "/freeSilver/getCaptcha";
focal_class.type: String
focal_class.var_name: CAPTCHA_G
focal_class.declarator: GET_AWARD_PATTERN_G =
              "/FreeSilver/getAward?time_start={0,number,###}&time_end={1,number,###}&captcha={2}&_={3,number,###}"
focal_class.modifier: private static final
focal_class.original_string: private static final String GET_AWARD_PATTERN_G =
              "/FreeSilver/getAward?time_start={0,number,###}&time_end={1,number,###}&captcha={2}&_={3,number,###}";
focal_class.type: String
focal_class.var_name: GET_AWARD_PATTERN_G
focal_class.declarator: EXCEPTION_KEY = "exception.freeSilver"
focal_class.modifier: private static final
focal_class.original_string: private static final String EXCEPTION_KEY = "exception.freeSilver";
focal_class.type: String
focal_class.var_name: EXCEPTION_KEY
focal_class.declarator: _1_KB = 1024
focal_class.modifier: private static final
focal_class.original_string: private static final int _1_KB = 1024;
focal_class.type: int
focal_class.var_name: _1_KB
focal_class.declarator: MIME_JPEG = "image/jpeg"
focal_class.modifier: private static final
focal_class.original_string: private static final String MIME_JPEG = "image/jpeg";
focal_class.type: String
focal_class.var_name: MIME_JPEG
focal_class.declarator: STATUS_NOT_LOGIN = -101
focal_class.modifier: private static final
focal_class.original_string: private static final int STATUS_NOT_LOGIN = -101;
focal_class.type: int
focal_class.var_name: STATUS_NOT_LOGIN
focal_class.declarator: httpHelper
focal_class.modifier: private
focal_class.original_string: private HttpHelper httpHelper;
focal_class.type: HttpHelper
focal_class.var_name: httpHelper
focal_class.file: BiliLiveLib/src/main/java/charlie/bililivelib/freesilver/FreeSilverProtocol.java
focal_class.identifier: FreeSilverProtocol
focal_class.class_method_signature: FreeSilverProtocol.FreeSilverProtocol(Session session)
focal_class.full_signature: public  FreeSilverProtocol(Session session)
focal_class.identifier: FreeSilverProtocol
focal_class.modifiers: public
focal_class.parameters: (Session session)
focal_class.signature:  FreeSilverProtocol(Session session)
focal_class.class_method_signature: FreeSilverProtocol.ocrCaptcha(BufferedImage image)
focal_class.full_signature: @NotNull public static String ocrCaptcha(BufferedImage image)
focal_class.identifier: ocrCaptcha
focal_class.modifiers: @NotNull public static
focal_class.parameters: (BufferedImage image)
focal_class.return: String
focal_class.signature: String ocrCaptcha(BufferedImage image)
focal_class.class_method_signature: FreeSilverProtocol.getCurrentFreeSilverStatus()
focal_class.full_signature: public CurrentSilverTaskInfo getCurrentFreeSilverStatus()
focal_class.identifier: getCurrentFreeSilverStatus
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: CurrentSilverTaskInfo
focal_class.signature: CurrentSilverTaskInfo getCurrentFreeSilverStatus()
focal_class.class_method_signature: FreeSilverProtocol.getTodayFreeSilverStatus()
focal_class.full_signature: public DayFreeSilverTaskInfo getTodayFreeSilverStatus()
focal_class.identifier: getTodayFreeSilverStatus
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: DayFreeSilverTaskInfo
focal_class.signature: DayFreeSilverTaskInfo getTodayFreeSilverStatus()
focal_class.class_method_signature: FreeSilverProtocol.getCaptcha()
focal_class.full_signature: public BufferedImage getCaptcha()
focal_class.identifier: getCaptcha
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: BufferedImage
focal_class.signature: BufferedImage getCaptcha()
focal_class.class_method_signature: FreeSilverProtocol.waitToGetSilver()
focal_class.full_signature: public GetSilverInfo waitToGetSilver()
focal_class.identifier: waitToGetSilver
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: GetSilverInfo
focal_class.signature: GetSilverInfo waitToGetSilver()
focal_class.class_method_signature: FreeSilverProtocol.waitToGetSilver(CurrentSilverTaskInfo currentInfo)
focal_class.full_signature: public GetSilverInfo waitToGetSilver(CurrentSilverTaskInfo currentInfo)
focal_class.identifier: waitToGetSilver
focal_class.modifiers: public
focal_class.parameters: (CurrentSilverTaskInfo currentInfo)
focal_class.return: GetSilverInfo
focal_class.signature: GetSilverInfo waitToGetSilver(CurrentSilverTaskInfo currentInfo)
focal_class.class_method_signature: FreeSilverProtocol.getWaitTime(CurrentSilverTaskInfo currentInfo)
focal_class.full_signature: private long getWaitTime(CurrentSilverTaskInfo currentInfo)
focal_class.identifier: getWaitTime
focal_class.modifiers: private
focal_class.parameters: (CurrentSilverTaskInfo currentInfo)
focal_class.return: long
focal_class.signature: long getWaitTime(CurrentSilverTaskInfo currentInfo)
focal_class.class_method_signature: FreeSilverProtocol.getSilver(long timeStart, long timeEnd, String captcha)
focal_class.full_signature: public GetSilverInfo getSilver(long timeStart, long timeEnd, String captcha)
focal_class.identifier: getSilver
focal_class.modifiers: public
focal_class.parameters: (long timeStart, long timeEnd, String captcha)
focal_class.return: GetSilverInfo
focal_class.signature: GetSilverInfo getSilver(long timeStart, long timeEnd, String captcha)
focal_class.class_method_signature: FreeSilverProtocol.generateGetSilverRequest(long timeStart, long timeEnd, String captcha)
focal_class.full_signature: @NotNull @Contract(pure = true) private String generateGetSilverRequest(long timeStart, long timeEnd, String captcha)
focal_class.identifier: generateGetSilverRequest
focal_class.modifiers: @NotNull @Contract(pure = true) private
focal_class.parameters: (long timeStart, long timeEnd, String captcha)
focal_class.return: String
focal_class.signature: String generateGetSilverRequest(long timeStart, long timeEnd, String captcha)
focal_method.body: public GetSilverInfo waitToGetSilver() throws BiliLiveException, InterruptedException {
          return waitToGetSilver(getCurrentFreeSilverStatus());
      }
focal_method.class_method_signature: FreeSilverProtocol.waitToGetSilver()
focal_method.full_signature: public GetSilverInfo waitToGetSilver()
focal_method.identifier: waitToGetSilver
focal_method.invocations: waitToGetSilver getCurrentFreeSilverStatus
focal_method.modifiers: public
focal_method.parameters: ()
focal_method.return: GetSilverInfo
focal_method.signature: GetSilverInfo waitToGetSilver()