@quicktvui/ai 1.0.7 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1379) hide show
  1. package/package.json +1 -1
  2. package/rules/.clinerules +28 -4
  3. package/rules/.cursorrules +28 -4
  4. package/rules/.github/copilot-instructions.md +28 -4
  5. package/rules/.source/hippy/extend_views/CoverFlowHorizontalView.java +203 -0
  6. package/rules/.source/hippy/extend_views/CoverFlowVerticalView.java +203 -0
  7. package/rules/.source/hippy/extend_views/CoverFlowViewController.java +195 -0
  8. package/rules/.source/hippy/extend_views/EngineRootView.java +125 -0
  9. package/rules/.source/hippy/extend_views/ExtendTag.java +83 -0
  10. package/rules/.source/hippy/extend_views/FocusSearchHelper.java +124 -0
  11. package/rules/.source/hippy/extend_views/IRecyclerItemView.java +12 -0
  12. package/rules/.source/hippy/extend_views/JSEventHandleView.java +5 -0
  13. package/rules/.source/hippy/extend_views/MarqueeRelayManager.java +133 -0
  14. package/rules/.source/hippy/extend_views/MarqueeRelayTextView.java +211 -0
  15. package/rules/.source/hippy/extend_views/ProgressBarView.java +83 -0
  16. package/rules/.source/hippy/extend_views/ProgressBarViewController.java +145 -0
  17. package/rules/.source/hippy/extend_views/SeekBarView.java +104 -0
  18. package/rules/.source/hippy/extend_views/SeekBarViewController.java +218 -0
  19. package/rules/.source/hippy/extend_views/StateImageView.java +149 -0
  20. package/rules/.source/hippy/extend_views/StateImageViewController.java +34 -0
  21. package/rules/.source/hippy/extend_views/TVButtonView.java +314 -0
  22. package/rules/.source/hippy/extend_views/TVButtonViewController.java +89 -0
  23. package/rules/.source/hippy/extend_views/TVTextView.java +684 -0
  24. package/rules/.source/hippy/extend_views/TVViewActor.java +811 -0
  25. package/rules/.source/hippy/extend_views/TVViewActorHost.java +6 -0
  26. package/rules/.source/hippy/extend_views/TVViewActor/346/216/245/345/205/245.md +66 -0
  27. package/rules/.source/hippy/extend_views/TemplateUtil.java +336 -0
  28. package/rules/.source/hippy/extend_views/TextButtonNode.java +47 -0
  29. package/rules/.source/hippy/extend_views/TextViewController.java +377 -0
  30. package/rules/.source/hippy/extend_views/fastlist/CenterFlyInAnimator.java +96 -0
  31. package/rules/.source/hippy/extend_views/fastlist/ChildOnScreenScroller.java +548 -0
  32. package/rules/.source/hippy/extend_views/fastlist/ClonedViewTag.java +17 -0
  33. package/rules/.source/hippy/extend_views/fastlist/EventDeliverer.java +55 -0
  34. package/rules/.source/hippy/extend_views/fastlist/FastAdapter.java +4683 -0
  35. package/rules/.source/hippy/extend_views/fastlist/FastAdapterUtil.java +982 -0
  36. package/rules/.source/hippy/extend_views/fastlist/FastFlexNode.java +48 -0
  37. package/rules/.source/hippy/extend_views/fastlist/FastFlexView.java +873 -0
  38. package/rules/.source/hippy/extend_views/fastlist/FastFlexViewController.java +130 -0
  39. package/rules/.source/hippy/extend_views/fastlist/FastItemNode.java +67 -0
  40. package/rules/.source/hippy/extend_views/fastlist/FastItemView.java +306 -0
  41. package/rules/.source/hippy/extend_views/fastlist/FastItemViewController.java +106 -0
  42. package/rules/.source/hippy/extend_views/fastlist/FastListModule.java +95 -0
  43. package/rules/.source/hippy/extend_views/fastlist/FastListNode.java +90 -0
  44. package/rules/.source/hippy/extend_views/fastlist/FastListView.java +2466 -0
  45. package/rules/.source/hippy/extend_views/fastlist/FastListViewController.java +1038 -0
  46. package/rules/.source/hippy/extend_views/fastlist/FastListView/346/270/262/346/237/223/346/265/201/347/250/213/345/233/276.graffle +0 -0
  47. package/rules/.source/hippy/extend_views/fastlist/FastPendingView.java +47 -0
  48. package/rules/.source/hippy/extend_views/fastlist/ItemDecorations.java +71 -0
  49. package/rules/.source/hippy/extend_views/fastlist/ItemStoreNode.java +64 -0
  50. package/rules/.source/hippy/extend_views/fastlist/ItemStoreView.java +13 -0
  51. package/rules/.source/hippy/extend_views/fastlist/ItemStoreViewController.java +45 -0
  52. package/rules/.source/hippy/extend_views/fastlist/ListItemHolder.java +7 -0
  53. package/rules/.source/hippy/extend_views/fastlist/ListViewControlProp.java +41 -0
  54. package/rules/.source/hippy/extend_views/fastlist/MouseRecycleView.java +509 -0
  55. package/rules/.source/hippy/extend_views/fastlist/OnFastItemClickListener.java +12 -0
  56. package/rules/.source/hippy/extend_views/fastlist/OnFastItemFocusChangeListener.java +9 -0
  57. package/rules/.source/hippy/extend_views/fastlist/OnFastScrollStateChangedListener.java +7 -0
  58. package/rules/.source/hippy/extend_views/fastlist/PendingListNode.java +18 -0
  59. package/rules/.source/hippy/extend_views/fastlist/PendingViewController.java +13 -0
  60. package/rules/.source/hippy/extend_views/fastlist/PostHandlerView.java +6 -0
  61. package/rules/.source/hippy/extend_views/fastlist/PostTaskHolder.java +20 -0
  62. package/rules/.source/hippy/extend_views/fastlist/ReplaceChildController.java +105 -0
  63. package/rules/.source/hippy/extend_views/fastlist/ReplaceChildView.java +312 -0
  64. package/rules/.source/hippy/extend_views/fastlist/TVListView.java +3692 -0
  65. package/rules/.source/hippy/extend_views/fastlist/TemplateCodeParser.java +247 -0
  66. package/rules/.source/hippy/extend_views/fastlist/Utils.java +572 -0
  67. package/rules/.source/hippy/extend_views/fastlist/ViewTag.java +317 -0
  68. package/rules/.source/hippy/extend_views/fastlist/VirtualListView.java +8 -0
  69. package/rules/.source/hippy/extend_views/fastlist/diff/FastListDataBindingHelper.java +320 -0
  70. package/rules/.source/hippy/extend_views/fastlist/diff/KeyDiffHelper.java +289 -0
  71. package/rules/.source/hippy/extend_views/fastlist/diff/NoKeyDiffHelper.java +278 -0
  72. package/rules/.source/hippy/extend_views/tag/FontTag.java +53 -0
  73. package/rules/.source/hippy/extend_views/tag/HtmlTag.java +191 -0
  74. package/rules/.source/hippy/extend_views/tag/HtmlTagHandler.java +185 -0
  75. package/rules/.source/hippy/extend_views/tag/SpanTag.java +160 -0
  76. package/rules/.source/hippy/extend_views/tag/TextFontSpan.java +102 -0
  77. package/rules/.source/hippy/extend_views/waterfall/Chunk.java +10 -0
  78. package/rules/.source/hippy/extend_views/waterfall/ChunkGroup.java +5 -0
  79. package/rules/.source/hippy/extend_views/waterfall/Section.java +4 -0
  80. package/rules/.source/hippy/extend_views/waterfall/Tabs.java +5 -0
  81. package/rules/.source/hippy/extend_views/waterfall/WaterfallUtils.java +26 -0
  82. package/rules/.source/hippy/hippy_uimanager/ControllerHolder.java +30 -0
  83. package/rules/.source/hippy/hippy_uimanager/ControllerManager.java +651 -0
  84. package/rules/.source/hippy/hippy_uimanager/ControllerRegistry.java +102 -0
  85. package/rules/.source/hippy/hippy_uimanager/ControllerUpdateManger.java +252 -0
  86. package/rules/.source/hippy/hippy_uimanager/CustomControllerHelper.java +425 -0
  87. package/rules/.source/hippy/hippy_uimanager/DiffUtils.java +526 -0
  88. package/rules/.source/hippy/hippy_uimanager/ExtendViewGroup.java +36 -0
  89. package/rules/.source/hippy/hippy_uimanager/HippyCustomViewCreator.java +29 -0
  90. package/rules/.source/hippy/hippy_uimanager/HippyGroupController.java +83 -0
  91. package/rules/.source/hippy/hippy_uimanager/HippyViewBase.java +27 -0
  92. package/rules/.source/hippy/hippy_uimanager/HippyViewController.java +2189 -0
  93. package/rules/.source/hippy/hippy_uimanager/HippyViewEvent.java +52 -0
  94. package/rules/.source/hippy/hippy_uimanager/IHippyZIndexViewGroup.java +24 -0
  95. package/rules/.source/hippy/hippy_uimanager/InternalExtendViewUtil.java +395 -0
  96. package/rules/.source/hippy/hippy_uimanager/ListItemRenderNode.java +143 -0
  97. package/rules/.source/hippy/hippy_uimanager/ListViewRenderNode.java +44 -0
  98. package/rules/.source/hippy/hippy_uimanager/MatrixUtil.java +470 -0
  99. package/rules/.source/hippy/hippy_uimanager/NativeGestureDispatcher.java +349 -0
  100. package/rules/.source/hippy/hippy_uimanager/NativeGestureProcessor.java +188 -0
  101. package/rules/.source/hippy/hippy_uimanager/PullFooterRenderNode.java +43 -0
  102. package/rules/.source/hippy/hippy_uimanager/PullHeaderRenderNode.java +43 -0
  103. package/rules/.source/hippy/hippy_uimanager/RenderManager.java +304 -0
  104. package/rules/.source/hippy/hippy_uimanager/RenderNode.java +533 -0
  105. package/rules/.source/hippy/hippy_uimanager/StateView.java +17 -0
  106. package/rules/.source/hippy/hippy_uimanager/TransformUtil.java +125 -0
  107. package/rules/.source/hippy/hippy_uimanager/ViewGroupDrawingOrderHelper.java +108 -0
  108. package/rules/.source/hippy/hippy_uimanager/ViewStateProvider.java +10 -0
  109. package/rules/.source/hippy/hippy_views/audioview/AudioPlayManager.java +457 -0
  110. package/rules/.source/hippy/hippy_views/audioview/AudioView.java +225 -0
  111. package/rules/.source/hippy/hippy_views/audioview/AudioViewController.java +135 -0
  112. package/rules/.source/hippy/hippy_views/common/CommonBackgroundDrawable.java +58 -0
  113. package/rules/.source/hippy/hippy_views/common/CommonBorder.java +37 -0
  114. package/rules/.source/hippy/hippy_views/custom/HippyCustomPropsController.java +61 -0
  115. package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerListAdapter.java +399 -0
  116. package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerView.java +378 -0
  117. package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerViewController.java +187 -0
  118. package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerViewHolder.java +39 -0
  119. package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerViewWrapper.java +134 -0
  120. package/rules/.source/hippy/hippy_views/hippylist/NodePositionHelper.java +55 -0
  121. package/rules/.source/hippy/hippy_views/hippylist/PreloadHelper.java +54 -0
  122. package/rules/.source/hippy/hippy_views/hippylist/PullFooterEventHelper.java +61 -0
  123. package/rules/.source/hippy/hippy_views/hippylist/PullHeaderEventHelper.java +127 -0
  124. package/rules/.source/hippy/hippy_views/hippylist/RecyclerViewEventHelper.java +394 -0
  125. package/rules/.source/hippy/hippy_views/image/HippyContentDrawable.java +113 -0
  126. package/rules/.source/hippy/hippy_views/image/HippyImageView.java +1608 -0
  127. package/rules/.source/hippy/hippy_views/image/HippyImageViewController.java +382 -0
  128. package/rules/.source/hippy/hippy_views/image/IImageStateListener.java +7 -0
  129. package/rules/.source/hippy/hippy_views/list/ChildOnScreenScroller.java +255 -0
  130. package/rules/.source/hippy/hippy_views/list/HippyListAdapter.java +647 -0
  131. package/rules/.source/hippy/hippy_views/list/HippyListItemView.java +162 -0
  132. package/rules/.source/hippy/hippy_views/list/HippyListItemViewController.java +45 -0
  133. package/rules/.source/hippy/hippy_views/list/HippyListView.java +915 -0
  134. package/rules/.source/hippy/hippy_views/list/HippyListViewController.java +622 -0
  135. package/rules/.source/hippy/hippy_views/list/HippyRecycler.java +31 -0
  136. package/rules/.source/hippy/hippy_views/list/IRecycleItemTypeChange.java +23 -0
  137. package/rules/.source/hippy/hippy_views/list/ItemDecorations.java +70 -0
  138. package/rules/.source/hippy/hippy_views/list/NegativeLongKeyFlinger.java +156 -0
  139. package/rules/.source/hippy/hippy_views/list/NodeHolder.java +34 -0
  140. package/rules/.source/hippy/hippy_views/list/RecycleViewFlinger.java +126 -0
  141. package/rules/.source/hippy/hippy_views/list/TVRecyclerView.java +2070 -0
  142. package/rules/.source/hippy/hippy_views/list/TVSingleLineListView.java +15 -0
  143. package/rules/.source/hippy/hippy_views/modal/HippyModalHostManager.java +102 -0
  144. package/rules/.source/hippy/hippy_views/modal/HippyModalHostView.java +597 -0
  145. package/rules/.source/hippy/hippy_views/modal/ModalHostHelper.java +46 -0
  146. package/rules/.source/hippy/hippy_views/modal/ModalStyleNode.java +34 -0
  147. package/rules/.source/hippy/hippy_views/modal/RequestCloseEvent.java +32 -0
  148. package/rules/.source/hippy/hippy_views/modal/ShowEvent.java +31 -0
  149. package/rules/.source/hippy/hippy_views/navigator/Navigator.java +126 -0
  150. package/rules/.source/hippy/hippy_views/navigator/NavigatorController.java +120 -0
  151. package/rules/.source/hippy/hippy_views/refresh/HippyPullFooterView.java +47 -0
  152. package/rules/.source/hippy/hippy_views/refresh/HippyPullFooterViewController.java +65 -0
  153. package/rules/.source/hippy/hippy_views/refresh/HippyPullHeaderView.java +39 -0
  154. package/rules/.source/hippy/hippy_views/refresh/HippyPullHeaderViewController.java +104 -0
  155. package/rules/.source/hippy/hippy_views/refresh/RefreshWrapper.java +237 -0
  156. package/rules/.source/hippy/hippy_views/refresh/RefreshWrapperController.java +62 -0
  157. package/rules/.source/hippy/hippy_views/refresh/RefreshWrapperItemController.java +39 -0
  158. package/rules/.source/hippy/hippy_views/refresh/RefreshWrapperItemView.java +26 -0
  159. package/rules/.source/hippy/hippy_views/scroll/HippyHorizontalScrollView.java +500 -0
  160. package/rules/.source/hippy/hippy_views/scroll/HippyOnScrollHelper.java +39 -0
  161. package/rules/.source/hippy/hippy_views/scroll/HippyScrollView.java +46 -0
  162. package/rules/.source/hippy/hippy_views/scroll/HippyScrollViewController.java +178 -0
  163. package/rules/.source/hippy/hippy_views/scroll/HippyScrollViewEventHelper.java +92 -0
  164. package/rules/.source/hippy/hippy_views/scroll/HippyVerticalScrollView.java +522 -0
  165. package/rules/.source/hippy/hippy_views/text/HippyTextView.java +512 -0
  166. package/rules/.source/hippy/hippy_views/text/HippyTextViewController.java +77 -0
  167. package/rules/.source/hippy/hippy_views/textinput/HippyTextInput.java +668 -0
  168. package/rules/.source/hippy/hippy_views/textinput/HippyTextInputController.java +528 -0
  169. package/rules/.source/hippy/hippy_views/textinput/TextInputNode.java +115 -0
  170. package/rules/.source/hippy/hippy_views/videoview/APEZProvider.java +287 -0
  171. package/rules/.source/hippy/hippy_views/videoview/APKExpansionSupport.java +82 -0
  172. package/rules/.source/hippy/hippy_views/videoview/PivotPoint.java +13 -0
  173. package/rules/.source/hippy/hippy_views/videoview/ScalableType.java +34 -0
  174. package/rules/.source/hippy/hippy_views/videoview/ScalableVideoView.java +265 -0
  175. package/rules/.source/hippy/hippy_views/videoview/ScaleManager.java +191 -0
  176. package/rules/.source/hippy/hippy_views/videoview/Size.java +19 -0
  177. package/rules/.source/hippy/hippy_views/videoview/VideoHippyView.java +917 -0
  178. package/rules/.source/hippy/hippy_views/videoview/VideoHippyViewController.java +236 -0
  179. package/rules/.source/hippy/hippy_views/videoview/ZipResourceFile.java +427 -0
  180. package/rules/.source/hippy/hippy_views/view/CardRootView.java +28 -0
  181. package/rules/.source/hippy/hippy_views/view/CustomLayoutView.java +10 -0
  182. package/rules/.source/hippy/hippy_views/view/CustomNodeView.java +5 -0
  183. package/rules/.source/hippy/hippy_views/view/DialogViewGroup.java +113 -0
  184. package/rules/.source/hippy/hippy_views/view/HippyViewGroup.java +2042 -0
  185. package/rules/.source/hippy/hippy_views/view/HippyViewGroupController.java +583 -0
  186. package/rules/.source/hippy/hippy_views/view/WindowRoot.java +5 -0
  187. package/rules/.source/hippy/hippy_views/viewpager/HippyViewPager.java +308 -0
  188. package/rules/.source/hippy/hippy_views/viewpager/HippyViewPagerAdapter.java +148 -0
  189. package/rules/.source/hippy/hippy_views/viewpager/HippyViewPagerController.java +246 -0
  190. package/rules/.source/hippy/hippy_views/viewpager/HippyViewPagerItem.java +27 -0
  191. package/rules/.source/hippy/hippy_views/viewpager/HippyViewPagerItemController.java +42 -0
  192. package/rules/.source/hippy/hippy_views/viewpager/ViewPagerPageChangeListener.java +114 -0
  193. package/rules/.source/hippy/hippy_views/viewpager/event/HippyPageItemExposureEvent.java +40 -0
  194. package/rules/.source/hippy/hippy_views/viewpager/event/HippyPageScrollEvent.java +43 -0
  195. package/rules/.source/hippy/hippy_views/viewpager/event/HippyPageScrollStateChangedEvent.java +42 -0
  196. package/rules/.source/hippy/hippy_views/viewpager/event/HippyPageSelectedEvent.java +42 -0
  197. package/rules/.source/hippy/hippy_views/webview/HippyWebView.java +160 -0
  198. package/rules/.source/hippy/hippy_views/webview/HippyWebViewBridge.java +20 -0
  199. package/rules/.source/hippy/hippy_views/webview/HippyWebViewController.java +103 -0
  200. package/rules/.source/hippy/hippy_views/webview/HippyWebViewInner.java +77 -0
  201. package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/SampleApplication.java +1 -0
  202. package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/base/BaseActivity.java +1 -0
  203. package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/base/BaseApplication.java +1 -0
  204. package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/Test2Module.java +1 -0
  205. package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestALastpolloInit.java +1 -0
  206. package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestApolloInit.java +1 -0
  207. package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestCacheInit.java +1 -0
  208. package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestComponent.java +1 -0
  209. package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestKotlinInit.kt +1 -0
  210. package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestModule.java +1 -0
  211. package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestModule2.kt +1 -0
  212. package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestModule3.java +1 -0
  213. package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestViewController.java +25 -0
  214. package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestViewGroupController.java +24 -0
  215. package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/ui/EsAppActivity.java +1 -0
  216. package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/ui/FocusButton.java +1 -0
  217. package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/ui/MainActivity.java +1 -0
  218. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/Constants.java +13 -0
  219. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/EsCallback.java +6 -0
  220. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/EsEmptyCallback.java +9 -0
  221. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/EsEventPacket.java +19 -0
  222. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/EsException.java +55 -0
  223. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/EsNativeEventCallback.java +8 -0
  224. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/EsPromise.java +15 -0
  225. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/EsProvider.java +8 -0
  226. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/EsSimplePromise.java +27 -0
  227. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/EsSingleCallback.java +9 -0
  228. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/IDiskCacheManager.java +19 -0
  229. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/IEsAutoInit.java +1 -0
  230. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/IEsInfo.java +18 -0
  231. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/IEsRemoteEventCallback.java +11 -0
  232. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/IEsTraceable.java +7 -0
  233. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/ISoManager.java +31 -0
  234. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/ITakeOverKeyEventListener.java +17 -0
  235. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/PromiseHolder.java +66 -0
  236. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/args/EsArray.java +215 -0
  237. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/args/EsMap.java +287 -0
  238. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/component/EsComponent.java +14 -0
  239. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/component/EsComponentAttribute.java +15 -0
  240. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/component/IEsComponent.java +21 -0
  241. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/component/IEsComponentView.java +8 -0
  242. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/core/EsProxy.java +313 -0
  243. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/core/IEsProxy.java +243 -0
  244. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/cover/IEsCoverView.java +26 -0
  245. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/display/IDisplayManager.java +19 -0
  246. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/image/IEsImageLoader.java +17 -0
  247. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/model/LocalCacheInfo.java +88 -0
  248. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/model/ScreenInfo.java +12 -0
  249. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/model/ThirdEvent.java +13 -0
  250. package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/module/IEsModule.java +15 -0
  251. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/EsAPIProvider.java +32 -0
  252. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/EsAppContext.java +13 -0
  253. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/EsData.java +597 -0
  254. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/EsKitInitCallback.java +15 -0
  255. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/EsKitInitCallbackProxy.java +41 -0
  256. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/EsKitStatus.java +14 -0
  257. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/EsManager.java +26 -0
  258. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/EsStartParam.java +17 -0
  259. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/IEsManager.java +83 -0
  260. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/InitConfig.java +287 -0
  261. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/adapter/DefaultHippyLogAdapter.java +27 -0
  262. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/adapter/DefaultRpkLoaderAdapter.java +1 -0
  263. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/adapter/EsApiAdapter.java +22 -0
  264. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/adapter/EsEngineExceptionHandlerAdapter.java +31 -0
  265. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/adapter/EsImageLoaderAdapter.java +141 -0
  266. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/adapter/EsSoLoaderAdapter.java +22 -0
  267. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/adapter/HttpsAdapter.java +1 -0
  268. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/adapter/ProxyHttpAdapter.java +36 -0
  269. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/assets/AssetBundleManager.java +347 -0
  270. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/assets/AssetData.java +39 -0
  271. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/assets/AssetLoadCallback.java +33 -0
  272. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/callback/EsAppLifeCallback.java +19 -0
  273. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/callback/EsAppLifeCallbackImpl.java +60 -0
  274. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/callback/EsAppLifeCallbackImplProxy.java +74 -0
  275. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardBean.java +35 -0
  276. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardCache.java +40 -0
  277. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardCallBack.java +40 -0
  278. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardCallBackAdapter.java +53 -0
  279. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardCallBackImpl.java +50 -0
  280. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardGroupController.java +187 -0
  281. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardGroupView.java +102 -0
  282. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardManager.java +102 -0
  283. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardView.java +716 -0
  284. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardViewComponent.java +190 -0
  285. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/WebFrameView.java +125 -0
  286. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/component/BaseHippyViewController.java +30 -0
  287. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/component/CommonViewController.java +290 -0
  288. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/component/EsCommonComponent.java +129 -0
  289. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/component/IOverrideMethods.java +60 -0
  290. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/db/EsDBHelper.java +119 -0
  291. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/db/Migration1_2.java +31 -0
  292. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/db/entity/RpkEntity.java +141 -0
  293. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/display/ESDisplayManager.java +41 -0
  294. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/engine/ESEvents.java +42 -0
  295. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/engine/ESInstanceContext.java +16 -0
  296. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/engine/EsEngine.java +212 -0
  297. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/engine/EsEnginePool.java +262 -0
  298. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/engine/RuntimeManager.java +94 -0
  299. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/entity/DeviceInfo.java +62 -0
  300. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/entity/InfoEntity.java +13 -0
  301. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ext/loadproxy/IEsRpkLoadProxy.java +43 -0
  302. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ext/log/ILogCallback.java +10 -0
  303. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ext/log/LogAdapterFactory.java +14 -0
  304. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ext/package.info +0 -0
  305. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/fragment/EsBaseFragment.java +11 -0
  306. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/fragment/EsFragment.java +181 -0
  307. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/fragment/EsFragmentManager.java +227 -0
  308. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/fragment/EsPageFragment.java +75 -0
  309. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/fragment/IEsFragmentMgr.java +41 -0
  310. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/interceptor/EsDefaultInterceptor.java +8 -0
  311. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/interceptor/IEsInterceptor.java +41 -0
  312. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/interceptor/LaunchEsPageInterceptor.java +15 -0
  313. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/AbsEsImageLoader.java +9 -0
  314. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/ApiProviderProxy.java +32 -0
  315. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/BaseHandlerThread.java +76 -0
  316. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/Constants.java +394 -0
  317. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsAppLoadHandlerImpl.java +221 -0
  318. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsAppLoadHandlerImplV2.java +326 -0
  319. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsComponentManager.java +347 -0
  320. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsConfigManager.java +81 -0
  321. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsContainerTaskV2.java +714 -0
  322. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsContentProvider.java +166 -0
  323. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsContext.java +354 -0
  324. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsContextFinder.java +61 -0
  325. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsDiskCacheManager.java +266 -0
  326. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsManagerInner.java +463 -0
  327. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsPromiseProxy.java +49 -0
  328. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsProxyImpl.java +474 -0
  329. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsViewManager.java +838 -0
  330. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsViewRecord.java +63 -0
  331. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/IEsAppLoadCallback.java +38 -0
  332. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/IEsAppLoadHandler.java +36 -0
  333. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/IEsViewer.java +32 -0
  334. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/SampleAnimatorListener.java +28 -0
  335. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/AbstractLoader.java +135 -0
  336. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/ApiRpkLoader.java +1 -0
  337. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/AssetsRpkLoader.java +79 -0
  338. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/DebugRpkLoader.java +43 -0
  339. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/FileRpkLoader.java +63 -0
  340. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/HttpRpkLoader.java +61 -0
  341. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/IRpkLoader.java +65 -0
  342. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/NexusRpkLoader.java +175 -0
  343. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/RecordInfo.java +37 -0
  344. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/RpkInfo.java +136 -0
  345. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/RpkLoaderFactory.java +60 -0
  346. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/RpkVersion.java +54 -0
  347. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/TaskEntity.java +57 -0
  348. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/JsSlotView.java +353 -0
  349. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/JsSlotViewManager.java +363 -0
  350. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/RecyclerViewHandlerImpl.java +60 -0
  351. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/SlotModule.java +1 -0
  352. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/chutil/GenericMotionUtil.java +26 -0
  353. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/chutil/MouseUtil.java +107 -0
  354. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/slot/SlotRootView.java +39 -0
  355. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/slot/SlotRootViewController.java +50 -0
  356. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/slot/SlotView.java +89 -0
  357. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/slot/SlotViewController.java +84 -0
  358. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/mdns/NsdRegisterHelper.java +56 -0
  359. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/mediasession/BaseMediaSessionPlayerService.java +104 -0
  360. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/mediasession/EsMediaController.java +111 -0
  361. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/mediasession/EsMediaPlayerService.java +39 -0
  362. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/mediasession/callback/EsCommonMediaSessionCallback.java +374 -0
  363. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/mediasession/manager/IServiceManager.java +16 -0
  364. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/mediasession/manager/ServiceManagerFactory.java +21 -0
  365. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/mediasession/manager/impl/MCommonServiceImpl.java +95 -0
  366. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/mediasession/module/EsMediaSessionModule.java +61 -0
  367. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/module/AppUsageModule.java +170 -0
  368. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/module/CommonModule.java +27 -0
  369. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/module/CommonModuleInfo.java +96 -0
  370. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/module/EsNativeModule.java +878 -0
  371. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/pm/EsPageController.java +49 -0
  372. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/pm/EsPageView.java +202 -0
  373. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/pm/EsRouterController.java +63 -0
  374. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/pm/EsRouterView.java +113 -0
  375. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/pm/IEsPageView.java +20 -0
  376. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/pm/InnerProvider.java +37 -0
  377. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/pm/PageModule.java +37 -0
  378. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/protocol/EsProtocolDispatcher.java +114 -0
  379. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/protocol/EsStartTarget.java +37 -0
  380. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/protocol/Protocol_1.java +78 -0
  381. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/protocol/Protocol_2.java +345 -0
  382. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/sf/UsageManager.java +98 -0
  383. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/sf/db/UsageDbHelper.java +97 -0
  384. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/sf/db/dao/UsageRecordDao.java +34 -0
  385. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/sf/db/entity/UsageRecord.java +96 -0
  386. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/sf/strategy/DefaultStrategyImpl.java +100 -0
  387. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/sf/strategy/IUsageStrategy.java +23 -0
  388. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/tookit/DefaultWindowManager.java +46 -0
  389. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/tookit/ESToolkitManager.java +182 -0
  390. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/tookit/IESToolkit.java +22 -0
  391. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/tookit/ToolkitUseCase.java +22 -0
  392. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/udp/AbstractUdpServer.java +102 -0
  393. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/udp/EsUdpServer.java +177 -0
  394. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/udp/UdpServerConfig.java +28 -0
  395. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/BrowserBaseActivity.java +224 -0
  396. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/BrowserBaseFullActivity.java +118 -0
  397. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/BrowserProxyActivity.java +122 -0
  398. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/BrowserStandardActivity.java +14 -0
  399. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/BrowserStandardNoThemeActivity.java +14 -0
  400. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/BrowserStandardTransparentActivity.java +14 -0
  401. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/IHippyManager.java +36 -0
  402. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/instance/BrowserSingleInstanceActivity0.java +9 -0
  403. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/instance/BrowserSingleInstanceActivity1.java +9 -0
  404. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/instance/BrowserSingleInstanceActivity2.java +9 -0
  405. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/instance/BrowserSingleInstanceActivity3.java +9 -0
  406. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/instance/BrowserSingleInstanceActivity4.java +9 -0
  407. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/task/BrowserSingleTaskActivity0.java +9 -0
  408. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/task/BrowserSingleTaskActivity1.java +9 -0
  409. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/task/BrowserSingleTaskActivity2.java +9 -0
  410. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/task/BrowserSingleTaskActivity3.java +9 -0
  411. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/task/BrowserSingleTaskActivity4.java +9 -0
  412. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/top/BrowserSingleTopActivity0.java +9 -0
  413. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/top/BrowserSingleTopActivity1.java +9 -0
  414. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/top/BrowserSingleTopActivity2.java +9 -0
  415. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/top/BrowserSingleTopActivity3.java +9 -0
  416. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/top/BrowserSingleTopActivity4.java +9 -0
  417. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/instance/BrowserSingleInstanceActivity0.java +9 -0
  418. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/instance/BrowserSingleInstanceActivity1.java +9 -0
  419. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/instance/BrowserSingleInstanceActivity2.java +9 -0
  420. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/instance/BrowserSingleInstanceActivity3.java +9 -0
  421. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/instance/BrowserSingleInstanceActivity4.java +9 -0
  422. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/task/BrowserSingleTaskActivity0.java +9 -0
  423. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/task/BrowserSingleTaskActivity1.java +9 -0
  424. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/task/BrowserSingleTaskActivity2.java +9 -0
  425. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/task/BrowserSingleTaskActivity3.java +9 -0
  426. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/task/BrowserSingleTaskActivity4.java +9 -0
  427. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/top/BrowserSingleTopActivity0.java +9 -0
  428. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/top/BrowserSingleTopActivity1.java +9 -0
  429. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/top/BrowserSingleTopActivity2.java +9 -0
  430. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/top/BrowserSingleTopActivity3.java +9 -0
  431. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/top/BrowserSingleTopActivity4.java +9 -0
  432. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/pg/BasePageLoader.java +20 -0
  433. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/pg/FragmentPageLoader.java +273 -0
  434. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/pg/IPageLoader.java +44 -0
  435. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/pg/RootFragmentView.java +499 -0
  436. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/pg/SubFragmentView.java +85 -0
  437. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/result/PermissionActivityResultHandler.java +132 -0
  438. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/wm/AbstractWindowManager.java +120 -0
  439. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/Am.java +397 -0
  440. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/AutoUtils.java +1 -0
  441. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/CommonUtils.java +150 -0
  442. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/CpuAbiUtils.java +280 -0
  443. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/CrashHandler.java +40 -0
  444. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/DebugLog.java +28 -0
  445. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/DefaultLifecycleObserver.java +35 -0
  446. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/DexUtil.java +75 -0
  447. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/ESExecutors.java +73 -0
  448. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/EsDataFactory.java +76 -0
  449. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/EsDecode.java +37 -0
  450. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/EsIntent.java +40 -0
  451. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/EsNativeEvent.java +63 -0
  452. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/EskitLazyInitHelper.java +20 -0
  453. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/FullScreenUtils.java +73 -0
  454. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/HomeKeyReceiver.java +52 -0
  455. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/HttpRequestUtils.java +30 -0
  456. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/KeyEventUtil.java +71 -0
  457. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/MapperUtils.java +491 -0
  458. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/NetworkSpeedMonitor.java +68 -0
  459. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/NexusRepo.java +70 -0
  460. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/ObjectUtils.java +49 -0
  461. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/ParameterizedTypeImpl.java +23 -0
  462. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/PathHelper.java +23 -0
  463. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/PermissionRequestHelper.java +81 -0
  464. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/PluginUtils.java +71 -0
  465. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/ReflectExecutor.java +77 -0
  466. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/SlotUtils.java +97 -0
  467. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/SpUtils.java +184 -0
  468. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/TaskProgressManager.java +104 -0
  469. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/TimeCheckUtil.java +45 -0
  470. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/UcDeviceUtils.java +95 -0
  471. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/UploadLogKeyDispatcher.java +33 -0
  472. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/views/DebugFocusHelper.java +90 -0
  473. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/views/DebugFocusRoot.java +195 -0
  474. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/views/DebugFocusView.java +65 -0
  475. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/views/EsDefaultCoverView.java +726 -0
  476. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/views/EsGrayFrameLayout.java +65 -0
  477. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/views/EsProgressLoadingView.java +103 -0
  478. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/views/LoadingDrawable.java +1 -0
  479. package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/views/MyButton.java +55 -0
  480. package/rules/.source/sdk/plugin/compiler/src/main/java/com/quicktvui/sdk/compiler/AnnotationProcessor.java +46 -0
  481. package/rules/.source/sdk/plugin/compiler/src/main/java/com/quicktvui/sdk/compiler/processor/AbstractProcessor.java +1 -0
  482. package/rules/.source/sdk/plugin/compiler/src/main/java/com/quicktvui/sdk/compiler/processor/ESKitAutoInitProcessor.java +1 -0
  483. package/rules/.source/sdk/plugin/compiler/src/main/java/com/quicktvui/sdk/compiler/processor/ESKitAutoRegisterProcessor.java +217 -0
  484. package/rules/.source/sdk/plugin/compiler/src/main/java/com/quicktvui/sdk/compiler/processor/IProcessor.java +12 -0
  485. package/rules/.source/sdk/plugin/compiler/src/main/java/com/quicktvui/sdk/compiler/utils/Utils.java +78 -0
  486. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/media/audio/mp3/AndroidMP3Encoder.java +19 -0
  487. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/media/audio/mp3/AudioRecorderHandler.java +128 -0
  488. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/media/audio/mp3/AudioRecorderMp3.java +267 -0
  489. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/media/audio/mp3/AudioRecorderMp3Manager.java +140 -0
  490. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/media/audio/mp3/EncodeBuffer.java +27 -0
  491. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/ESAudioRecordModule.java +231 -0
  492. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/assist/QueueProcessingType.java +8 -0
  493. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/assist/deque/BlockingDeque.java +617 -0
  494. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/assist/deque/Deque.java +550 -0
  495. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/assist/deque/LIFOLinkedBlockingDeque.java +42 -0
  496. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/assist/deque/LinkedBlockingDeque.java +1190 -0
  497. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/AudioRecordConfiguration.java +168 -0
  498. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/AudioRecorderListener.java +11 -0
  499. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/AudioRecorderStatus.java +49 -0
  500. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/AudioRecorderStatusEnum.java +14 -0
  501. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/AudioRecorderType.java +35 -0
  502. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/BaseAudioRecorderManager.java +90 -0
  503. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/DefaultConfigurationFactory.java +80 -0
  504. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/IAudioRecorder.java +23 -0
  505. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/naming/FileNameGenerator.java +9 -0
  506. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/naming/HashCodeFileNameGenerator.java +11 -0
  507. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/naming/Md5FileNameGenerator.java +32 -0
  508. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/naming/NoOpFileNameGenerator.java +14 -0
  509. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/pcm/PCMFormat.java +32 -0
  510. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/utils/Preconditions.java +442 -0
  511. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/utils/StorageUtils.java +162 -0
  512. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/wav/AudioRecordListener.java +11 -0
  513. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/wav/AudioRecordStreamListener.java +5 -0
  514. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/wav/AudioRecorder.java +360 -0
  515. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/wav/FileUtil.java +122 -0
  516. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/wav/PCMToWAVTask.java +63 -0
  517. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/wav/PcmToWav.java +193 -0
  518. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/wav/RecordTask.java +103 -0
  519. package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/wav/WaveHeader.java +66 -0
  520. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/AndroidMP3Encoder.cpp +57 -0
  521. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/AndroidMP3Encoder.h +20 -0
  522. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/CMakeLists.txt +18 -0
  523. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lame-3.100.tar.gz +0 -0
  524. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/VbrTag.c +1050 -0
  525. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/VbrTag.h +82 -0
  526. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/bitstream.c +1073 -0
  527. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/bitstream.h +44 -0
  528. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/encoder.c +555 -0
  529. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/encoder.h +153 -0
  530. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/fft.c +331 -0
  531. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/fft.h +35 -0
  532. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/gain_analysis.c +468 -0
  533. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/gain_analysis.h +113 -0
  534. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/id3tag.c +1839 -0
  535. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/id3tag.h +65 -0
  536. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/l3side.h +95 -0
  537. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/lame-analysis.h +95 -0
  538. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/lame.c +2602 -0
  539. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/lame.h +1400 -0
  540. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/lame_global_flags.h +186 -0
  541. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/lameerror.h +26 -0
  542. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/machine.h +196 -0
  543. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/mpglib_interface.c +477 -0
  544. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/newmdct.c +1073 -0
  545. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/newmdct.h +27 -0
  546. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/presets.c +390 -0
  547. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/psymodel.c +2111 -0
  548. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/psymodel.h +64 -0
  549. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/quantize.c +1974 -0
  550. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/quantize.h +38 -0
  551. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/quantize_pvt.c +1047 -0
  552. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/quantize_pvt.h +127 -0
  553. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/reservoir.c +289 -0
  554. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/reservoir.h +34 -0
  555. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/set_get.c +2181 -0
  556. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/set_get.h +119 -0
  557. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/tables.c +558 -0
  558. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/tables.h +95 -0
  559. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/takehiro.c +1322 -0
  560. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/util.c +968 -0
  561. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/util.h +635 -0
  562. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/vbrquantize.c +1525 -0
  563. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/vbrquantize.h +28 -0
  564. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/version.c +245 -0
  565. package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/version.h +68 -0
  566. package/rules/.source/sdk/support/brightness/src/main/java/com/quicktvui/support/brightness/ESBrightnessModule.java +133 -0
  567. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/Action.java +18 -0
  568. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasActionHandler.java +285 -0
  569. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasContext.java +184 -0
  570. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasImageLoadRenderAction.java +53 -0
  571. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasManager.java +468 -0
  572. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasNode.java +28 -0
  573. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasRenderAction.java +39 -0
  574. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasRenderActionProcessor.java +62 -0
  575. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasSyncRenderAction.java +23 -0
  576. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasView.java +19 -0
  577. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasViewContainer.java +49 -0
  578. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasWaitChannel.java +59 -0
  579. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/Constants.java +9 -0
  580. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/ESCanvasController.java +370 -0
  581. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/annotation/CanvasField.java +16 -0
  582. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/annotation/CanvasMethod.java +16 -0
  583. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/annotation/Extension.java +59 -0
  584. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/bridge/ActivityStateListener.java +21 -0
  585. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/bridge/ApplicationContext.java +118 -0
  586. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/bridge/Callback.java +37 -0
  587. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/bridge/IPage.java +13 -0
  588. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/bridge/RenderEventCallback.java +76 -0
  589. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/bridge/Response.java +191 -0
  590. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/bridge/SimpleActivityStateListener.java +32 -0
  591. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/CSSFont.java +246 -0
  592. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/CanvasContextRendering2D.java +1462 -0
  593. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/CanvasContextState.java +243 -0
  594. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/CanvasGradient.java +101 -0
  595. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/CanvasPath.java +196 -0
  596. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/CanvasView2D.java +186 -0
  597. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/Circle.java +65 -0
  598. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/LinearGradient.java +40 -0
  599. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/Parser.java +1564 -0
  600. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/RadialGradient.java +167 -0
  601. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/constants/Attributes.java +682 -0
  602. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/executors/ConcurrentExecutor.java +59 -0
  603. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/executors/DelayedExecutor.java +10 -0
  604. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/executors/Executor.java +14 -0
  605. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/executors/Executors.java +99 -0
  606. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/executors/Future.java +17 -0
  607. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/executors/FutureImpl.java +32 -0
  608. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/executors/ScheduledExecutor.java +15 -0
  609. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/executors/ScheduledExecutorImpl.java +49 -0
  610. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/executors/UiExecutor.java +102 -0
  611. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/image/CanvasBitmap.java +123 -0
  612. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/image/CanvasImage.java +109 -0
  613. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/image/CanvasImageCache.java +119 -0
  614. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/image/CanvasImageHelper.java +665 -0
  615. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/image/CanvasImageLoader.java +132 -0
  616. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/image/ImageData.java +12 -0
  617. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/render/DocAnimator.java +166 -0
  618. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/runtime/HapEngine.java +101 -0
  619. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/utils/BitmapUtils.java +242 -0
  620. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/utils/CardThemeUtils.java +79 -0
  621. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/utils/ColorUtil.java +542 -0
  622. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/utils/DigestUtils.java +27 -0
  623. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/utils/DisplayUtil.java +157 -0
  624. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/utils/FloatUtil.java +54 -0
  625. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/utils/IntegerUtil.java +23 -0
  626. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/utils/StringUtils.java +21 -0
  627. package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/utils/ThreadUtils.java +47 -0
  628. package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/BarChartView.java +170 -0
  629. package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/ESBarChartViewComponent.java +162 -0
  630. package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/ESLineChartViewComponent.java +209 -0
  631. package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/LineChartView.java +160 -0
  632. package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/BarChart.java +470 -0
  633. package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/BaseBarChart.java +382 -0
  634. package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/BaseLineChart.java +156 -0
  635. package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/LinesChart.java +465 -0
  636. package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/anim/AngleEvaluator.java +22 -0
  637. package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/bean/BarBean.java +26 -0
  638. package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/bean/DataPoint.java +49 -0
  639. package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/bean/FocusInfo.java +35 -0
  640. package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/utils/DensityUtil.java +60 -0
  641. package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/utils/FontUtil.java +40 -0
  642. package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/utils/LogUtil.java +85 -0
  643. package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/utils/NumberFormatUtil.java +60 -0
  644. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/AutoInit.java +1 -0
  645. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/animation/AnimationValueType.java +7 -0
  646. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/animation/AnimationView.java +1322 -0
  647. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/animation/AnimationViewComponent.java +1000 -0
  648. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/es/ESView.java +30 -0
  649. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/es/ESViewComponent.java +49 -0
  650. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/image/TransitionImageComponent.java +95 -0
  651. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/image/TransitionImageView.java +261 -0
  652. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/loading/LoadingDrawable.java +253 -0
  653. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/loading/LoadingView.java +13 -0
  654. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/loading/LoadingViewComponent.java +58 -0
  655. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/progress/ESProgressWheelComponent.java +422 -0
  656. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/progress/ProgressWheel.java +625 -0
  657. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/progressbar/ESProgressBarViewComponent.java +254 -0
  658. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/progressbar/TVProgressBarView.java +12 -0
  659. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/progressbar/TVProgressBarViewComponent.java +206 -0
  660. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/qr/QrCodeComponent.java +186 -0
  661. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/qr/QrCodeFactory.java +180 -0
  662. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/ESHorizontalSeekBarViewComponent.java +1424 -0
  663. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/ESVerticalSeekBarViewComponent.java +122 -0
  664. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/OnRangeChangedListener.java +9 -0
  665. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/OnRangeFocusListener.java +6 -0
  666. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/RangeSeekBar.java +1462 -0
  667. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/SavedState.java +49 -0
  668. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/SeekBar.java +833 -0
  669. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/SeekBarState.java +13 -0
  670. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/Utils.java +182 -0
  671. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/VerticalRangeSeekBar.java +267 -0
  672. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/VerticalSeekBar.java +139 -0
  673. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/seekbar/ESSeekBarViewComponent.java +374 -0
  674. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/seekbar/TVSeekBarView.java +49 -0
  675. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/seekbar/TVSeekBarViewComponent.java +229 -0
  676. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/surfaceview/ESSurfaceView.java +13 -0
  677. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/surfaceview/ESSurfaceViewComponent.java +31 -0
  678. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/device/DeviceIdGenerator.java +135 -0
  679. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/device/DeviceIdManager.java +61 -0
  680. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/device/DeviceTypeGenerator.java +19 -0
  681. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/device/DeviceTypeManager.java +63 -0
  682. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/device/ESRuntimeSPConstants.java +8 -0
  683. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/device/IDeviceGenerator.java +10 -0
  684. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/device/RuntimeDeviceModule.java +70 -0
  685. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/activity/AndroidActivityModule.java +46 -0
  686. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/audio/AndroidAudioModule.java +190 -0
  687. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/broadcast/ESBroadcastModule.java +369 -0
  688. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/develop/AndroidDevelopManager.java +62 -0
  689. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/develop/AndroidDevelopModule.java +103 -0
  690. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/develop/Develop.java +85 -0
  691. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/device/AndroidDevice.java +410 -0
  692. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/device/AndroidDeviceManager.java +166 -0
  693. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/device/AndroidDeviceModule.java +313 -0
  694. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/device/DeviceModule.java +75 -0
  695. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/es/ESModule.java +289 -0
  696. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/file/AndroidFileModule.java +622 -0
  697. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/log/ESLogModule.java +59 -0
  698. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/mmap/AndroidMMapModule.java +219 -0
  699. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/mmap/MMapManager.java +350 -0
  700. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/mmap/MMapMode.java +8 -0
  701. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/mmap/MMapSharedData.java +44 -0
  702. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/mmap/MMapSharedDataType.java +15 -0
  703. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/network/AndroidNetworkManager.java +168 -0
  704. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/network/AndroidNetworkModule.java +162 -0
  705. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/network/AndroidNetworkReceiver.java +52 -0
  706. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/permission/AndroidPermissionModule.java +224 -0
  707. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/power/AndroidPowerManager.java +48 -0
  708. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/power/AndroidPowerModule.java +61 -0
  709. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/sp/AndroidSharedPreferencesManager.java +119 -0
  710. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/sp/AndroidSharedPreferencesModule.java +197 -0
  711. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/sqlite/EsSqliteModule.java +380 -0
  712. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/storage/AndroidStorageManager.java +68 -0
  713. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/storage/AndroidStorageModule.java +252 -0
  714. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/toast/ESToastModule.java +62 -0
  715. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/toast/ToastModule.java +385 -0
  716. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/usb/AndroidUsbDeviceManager.java +233 -0
  717. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/usb/AndroidUsbDeviceModule.java +230 -0
  718. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/usb/AndroidUsbDeviceReceiver.java +31 -0
  719. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/nativeevent/BaseChangeObserver.java +54 -0
  720. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/nativeevent/BatteryChangeObserver.java +177 -0
  721. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/nativeevent/BluetoothChangeObserver.java +83 -0
  722. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/nativeevent/NativeEventReceiverManager.java +107 -0
  723. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/nativeevent/NetworkChangeObserver.java +134 -0
  724. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/nativeevent/TimeChangeObserver.java +46 -0
  725. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/nativeevent/UsbChangeObserver.java +168 -0
  726. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/utils/BundleMapper.java +215 -0
  727. package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/utils/GradientDrawableUtils.java +105 -0
  728. package/rules/.source/sdk/support/data-group/src/main/java/com/quicktvui/support/data/group/ESGroupData.java +49 -0
  729. package/rules/.source/sdk/support/data-group/src/main/java/com/quicktvui/support/data/group/ESGroupDataModule.java +291 -0
  730. package/rules/.source/sdk/support/data-group/src/main/java/com/quicktvui/support/data/group/ESGroupDataType.java +15 -0
  731. package/rules/.source/sdk/support/data-group/src/main/java/com/quicktvui/support/data/group/ESGroupMode.java +8 -0
  732. package/rules/.source/sdk/support/data-group/src/main/java/com/quicktvui/support/data/group/ESSharedDataManager.java +526 -0
  733. package/rules/.source/sdk/support/data-shared/src/main/java/com/quicktvui/support/data/shared/ESSharedData.java +44 -0
  734. package/rules/.source/sdk/support/data-shared/src/main/java/com/quicktvui/support/data/shared/ESSharedDataManager.java +388 -0
  735. package/rules/.source/sdk/support/data-shared/src/main/java/com/quicktvui/support/data/shared/ESSharedDataModule.java +218 -0
  736. package/rules/.source/sdk/support/data-shared/src/main/java/com/quicktvui/support/data/shared/ESSharedDataType.java +15 -0
  737. package/rules/.source/sdk/support/data-shared/src/main/java/com/quicktvui/support/data/shared/ESSharedMode.java +8 -0
  738. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/ESDeviceInfoModule.java +988 -0
  739. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/SysInfo.java +24128 -0
  740. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/SysInfoSingleTon.java +98 -0
  741. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/beans/ApplicationBean.java +93 -0
  742. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/beans/CpuBean.java +41 -0
  743. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/beans/InputBean.java +69 -0
  744. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/beans/PartitionsBean.java +124 -0
  745. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/beans/SimBean.java +91 -0
  746. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/beans/StorageBean.java +180 -0
  747. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/beans/USBBean.java +48 -0
  748. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/beans/XposedHookBean.java +98 -0
  749. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/AppInfo.java +50 -0
  750. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/AppListInfo.java +42 -0
  751. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/BatteryInfo.java +26 -0
  752. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/BluetoothInfo.java +50 -0
  753. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/BuildInfo.java +35 -0
  754. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/CameraInfo.java +1327 -0
  755. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/DebugInfo.java +25 -0
  756. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/DeviceInfo.java +26 -0
  757. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/EmulatorInfo.java +57 -0
  758. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/HardwareInfo.java +32 -0
  759. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/HookInfo.java +26 -0
  760. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/InputInfo.java +170 -0
  761. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/MapsInfo.java +49 -0
  762. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/MediaCodecInfo.java +29 -0
  763. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/NetWorkInfo.java +150 -0
  764. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/OthersInfo.java +75 -0
  765. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/PartitionsInfo.java +93 -0
  766. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/RootInfo.java +25 -0
  767. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/SOCInfo.java +101 -0
  768. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/StoreInfo.java +31 -0
  769. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/SystemInfo.java +57 -0
  770. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/ThermalInfo.java +54 -0
  771. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/USBInfo.java +146 -0
  772. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/VirtualAppInfo.java +145 -0
  773. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/WifiInfo.java +52 -0
  774. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/ApplicationUtils.java +18 -0
  775. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/BatteryUtils.java +190 -0
  776. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/CommandUtils.java +173 -0
  777. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/Constants.java +12 -0
  778. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/DebugUtils.java +117 -0
  779. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/DecimalUtils.java +94 -0
  780. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/DensityUtils.java +427 -0
  781. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/DeviceUtils.java +315 -0
  782. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/EmulatorUtils.java +422 -0
  783. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/FileUtils.java +69 -0
  784. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/FormatTools.java +29 -0
  785. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/GatewayUtils.java +380 -0
  786. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/HashUtils.java +61 -0
  787. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/HexUtils.java +43 -0
  788. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/HookUtils.java +147 -0
  789. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/LogUtils.java +274 -0
  790. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/MemoryUtils.java +93 -0
  791. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/NetWorkUtils.java +579 -0
  792. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/OaidUtils.java +48 -0
  793. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/RootUtils.java +219 -0
  794. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/SdUtils.java +298 -0
  795. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/SocUtils.java +287 -0
  796. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/SystemConfigUtils.java +53 -0
  797. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/ThreadPoolUtils.java +89 -0
  798. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/TimeUtils.java +20 -0
  799. package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/XposedHookUtils.java +138 -0
  800. package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DefaultConfigurationFactory.java +56 -0
  801. package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/Download.java +111 -0
  802. package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadConfiguration.java +74 -0
  803. package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadError.java +9 -0
  804. package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadListener.java +7 -0
  805. package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadManager.java +201 -0
  806. package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadMessage.java +34 -0
  807. package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadParams.java +24 -0
  808. package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadProgress.java +34 -0
  809. package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadState.java +15 -0
  810. package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadStatus.java +46 -0
  811. package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadTask.java +370 -0
  812. package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/ESDownloadModule.java +376 -0
  813. package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/FileDigest.java +47 -0
  814. package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/HttpRequest.java +3201 -0
  815. package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/IDownloadTask.java +16 -0
  816. package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/StorageUtils.java +162 -0
  817. package/rules/.source/sdk/support/gif-view/src/main/java/com/quicktvui/giflibrary/GifDecoder.java +32 -0
  818. package/rules/.source/sdk/support/gif-view/src/main/java/com/quicktvui/giflibrary/GifDrawableTranscoder.java +22 -0
  819. package/rules/.source/sdk/support/gif-view/src/main/java/com/quicktvui/giflibrary/GifImageLoader.java +22 -0
  820. package/rules/.source/sdk/support/gif-view/src/main/java/com/quicktvui/giflibrary/GifModule.java +28 -0
  821. package/rules/.source/sdk/support/gif-view/src/main/java/com/quicktvui/giflibrary/GifSoftwareLayerSetter.java +45 -0
  822. package/rules/.source/sdk/support/gif-view/src/main/java/com/quicktvui/rastermill/FrameSequence.java +148 -0
  823. package/rules/.source/sdk/support/gif-view/src/main/java/com/quicktvui/rastermill/FrameSequenceDrawable.java +381 -0
  824. package/rules/.source/sdk/support/gif-view/src/main/java/com/quicktvui/support/gif/ESGifViewComponent.java +49 -0
  825. package/rules/.source/sdk/support/gif-view/src/main/java/com/quicktvui/support/gif/GifView.java +24 -0
  826. package/rules/.source/sdk/support/install-manager/src/main/java/com/quicktvui/support/install/manager/ESInstallManagerModule.java +143 -0
  827. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/ESLog.java +1029 -0
  828. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/LogConfiguration.java +662 -0
  829. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/LogItem.java +72 -0
  830. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/LogLevel.java +168 -0
  831. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/LogUtils.java +173 -0
  832. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/Logger.java +1331 -0
  833. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/flattener/ClassicFlattener.java +36 -0
  834. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/flattener/DefaultFlattener.java +40 -0
  835. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/flattener/Flattener.java +37 -0
  836. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/flattener/Flattener2.java +37 -0
  837. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/flattener/PatternFlattener.java +372 -0
  838. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/FormatException.java +78 -0
  839. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/Formatter.java +34 -0
  840. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/border/BorderFormatter.java +36 -0
  841. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/border/DefaultBorderFormatter.java +99 -0
  842. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/message/json/DefaultJsonFormatter.java +55 -0
  843. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/message/json/JsonFormatter.java +25 -0
  844. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/message/object/BundleFormatter.java +40 -0
  845. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/message/object/IntentFormatter.java +40 -0
  846. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/message/object/ObjectFormatter.java +28 -0
  847. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/message/throwable/DefaultThrowableFormatter.java +31 -0
  848. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/message/throwable/ThrowableFormatter.java +25 -0
  849. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/message/xml/DefaultXmlFormatter.java +63 -0
  850. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/message/xml/XmlFormatter.java +25 -0
  851. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/stacktrace/DefaultStackTraceFormatter.java +50 -0
  852. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/stacktrace/StackTraceFormatter.java +25 -0
  853. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/thread/DefaultThreadFormatter.java +29 -0
  854. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/thread/ThreadFormatter.java +25 -0
  855. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/interceptor/AbstractFilterInterceptor.java +51 -0
  856. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/interceptor/BlacklistTagsFilterInterceptor.java +71 -0
  857. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/interceptor/Interceptor.java +46 -0
  858. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/interceptor/WhitelistTagsFilterInterceptor.java +71 -0
  859. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/internal/DefaultsFactory.java +157 -0
  860. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/internal/Platform.java +114 -0
  861. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/internal/SystemCompat.java +28 -0
  862. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/internal/printer/file/backup/BackupStrategyWrapper.java +50 -0
  863. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/internal/printer/file/backup/BackupUtil.java +77 -0
  864. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/internal/util/ObjectToStringUtil.java +238 -0
  865. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/internal/util/StackTraceUtil.java +120 -0
  866. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/module/ESLoggerModule.java +332 -0
  867. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/AndroidPrinter.java +145 -0
  868. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/ConsolePrinter.java +55 -0
  869. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/Printer.java +41 -0
  870. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/PrinterSet.java +42 -0
  871. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/RemotePrinter.java +32 -0
  872. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/SystemPrinter.java +24 -0
  873. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/FilePrinter.java +399 -0
  874. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/backup/AbstractBackupStrategy.java +33 -0
  875. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/backup/BackupStrategy.java +33 -0
  876. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/backup/BackupStrategy2.java +69 -0
  877. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/backup/FileSizeBackupStrategy.java +45 -0
  878. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/backup/FileSizeBackupStrategy2.java +52 -0
  879. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/backup/NeverBackupStrategy.java +32 -0
  880. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/clean/CleanStrategy.java +19 -0
  881. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/clean/FileLastModifiedCleanStrategy.java +29 -0
  882. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/clean/NeverCleanStrategy.java +16 -0
  883. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/naming/ChangelessFileNameGenerator.java +44 -0
  884. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/naming/DateFileNameGenerator.java +51 -0
  885. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/naming/FileNameGenerator.java +39 -0
  886. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/naming/LevelFileNameGenerator.java +38 -0
  887. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/writer/SimpleWriter.java +137 -0
  888. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/writer/Writer.java +72 -0
  889. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/flattener/DefaultLogFlattener.java +26 -0
  890. package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/flattener/LogFlattener.java +26 -0
  891. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/ESLongImageViewComponent.java +732 -0
  892. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/decoder/CompatDecoderFactory.java +49 -0
  893. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/decoder/DecoderFactory.java +23 -0
  894. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/decoder/ImageDecoder.java +31 -0
  895. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/decoder/ImageRegionDecoder.java +62 -0
  896. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/decoder/ImageSource.java +262 -0
  897. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/decoder/ImageViewState.java +42 -0
  898. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/decoder/SkiaImageDecoder.java +107 -0
  899. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/decoder/SkiaImageRegionDecoder.java +171 -0
  900. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/decoder/SkiaPooledImageRegionDecoder.java +476 -0
  901. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/LongImageEventUtils.java +34 -0
  902. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/LongImageLoader.java +180 -0
  903. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/luban/Checker.java +196 -0
  904. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/luban/CompressionPredicate.java +19 -0
  905. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/luban/Engine.java +90 -0
  906. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/luban/InputStreamAdapter.java +34 -0
  907. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/luban/InputStreamProvider.java +18 -0
  908. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/luban/Luban.java +388 -0
  909. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/luban/OnCompressListener.java +21 -0
  910. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/luban/OnRenameListener.java +22 -0
  911. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/view/ESLongImageView.java +306 -0
  912. package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/view/SubsamplingScaleImageView.java +3245 -0
  913. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/AsyncUpdates.java +54 -0
  914. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/Cancellable.java +6 -0
  915. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/FontAssetDelegate.java +40 -0
  916. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/ImageAssetDelegate.java +14 -0
  917. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/L.java +123 -0
  918. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/Lottie.java +26 -0
  919. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieAnimationView.java +1447 -0
  920. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieComposition.java +385 -0
  921. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieCompositionFactory.java +716 -0
  922. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieConfig.java +135 -0
  923. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieDrawable.java +1740 -0
  924. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieImageAsset.java +79 -0
  925. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieListener.java +8 -0
  926. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieLogger.java +17 -0
  927. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieOnCompositionLoadedListener.java +5 -0
  928. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieProperty.java +223 -0
  929. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieResult.java +55 -0
  930. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieTask.java +185 -0
  931. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieTaskIdleListener.java +11 -0
  932. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/OnCompositionLoadedListener.java +15 -0
  933. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/PerformanceTracker.java +97 -0
  934. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/RenderMode.java +41 -0
  935. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/SimpleColorFilter.java +20 -0
  936. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/TextDelegate.java +116 -0
  937. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/AnimatorLister.java +35 -0
  938. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/LPaint.java +60 -0
  939. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/BaseStrokeContent.java +412 -0
  940. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/CompoundTrimPathContent.java +22 -0
  941. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/Content.java +9 -0
  942. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/ContentGroup.java +269 -0
  943. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/DrawingContent.java +11 -0
  944. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/EllipseContent.java +134 -0
  945. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/FillContent.java +194 -0
  946. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/GradientFillContent.java +316 -0
  947. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/GradientStrokeContent.java +181 -0
  948. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/GreedyContent.java +19 -0
  949. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/KeyPathElementContent.java +6 -0
  950. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/MergePathsContent.java +123 -0
  951. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/ModifierContent.java +4 -0
  952. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/PathContent.java +7 -0
  953. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/PolystarContent.java +332 -0
  954. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/RectangleContent.java +180 -0
  955. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/RepeaterContent.java +155 -0
  956. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/RoundedCornersContent.java +225 -0
  957. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/ShapeContent.java +98 -0
  958. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/ShapeModifierContent.java +7 -0
  959. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/StrokeContent.java +77 -0
  960. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/TrimPathContent.java +75 -0
  961. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/package-info.java +6 -0
  962. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/BaseKeyframeAnimation.java +356 -0
  963. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/ColorKeyframeAnimation.java +46 -0
  964. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/DropShadowKeyframeAnimation.java +100 -0
  965. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/FloatKeyframeAnimation.java +45 -0
  966. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/GradientColorKeyframeAnimation.java +22 -0
  967. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/IntegerKeyframeAnimation.java +46 -0
  968. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/KeyframeAnimation.java +11 -0
  969. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/MaskKeyframeAnimation.java +40 -0
  970. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/PathKeyframe.java +40 -0
  971. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/PathKeyframeAnimation.java +46 -0
  972. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/PointKeyframeAnimation.java +41 -0
  973. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/ScaleKeyframeAnimation.java +40 -0
  974. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/ShapeKeyframeAnimation.java +42 -0
  975. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/SplitDimensionPathKeyframeAnimation.java +105 -0
  976. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/TextKeyframeAnimation.java +47 -0
  977. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/TransformKeyframeAnimation.java +336 -0
  978. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/ValueCallbackKeyframeAnimation.java +49 -0
  979. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/package-info.java +6 -0
  980. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/package-info.java +6 -0
  981. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/manager/FontAssetManager.java +129 -0
  982. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/manager/ImageAssetManager.java +151 -0
  983. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/manager/package-info.java +6 -0
  984. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/CubicCurveData.java +91 -0
  985. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/DocumentData.java +76 -0
  986. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/Font.java +52 -0
  987. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/FontCharacter.java +49 -0
  988. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/KeyPath.java +243 -0
  989. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/KeyPathElement.java +41 -0
  990. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/LottieCompositionCache.java +50 -0
  991. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/Marker.java +37 -0
  992. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/MutablePair.java +57 -0
  993. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableColorValue.java +18 -0
  994. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableFloatValue.java +19 -0
  995. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableGradientColorValue.java +55 -0
  996. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableIntegerValue.java +18 -0
  997. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatablePathValue.java +36 -0
  998. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatablePointValue.java +20 -0
  999. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableScaleValue.java +24 -0
  1000. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableShapeValue.java +21 -0
  1001. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableSplitDimensionPathValue.java +37 -0
  1002. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableTextFrame.java +18 -0
  1003. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableTextProperties.java +20 -0
  1004. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableTransform.java +111 -0
  1005. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableValue.java +15 -0
  1006. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/BaseAnimatableValue.java +39 -0
  1007. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/package-info.java +6 -0
  1008. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/BlurEffect.java +16 -0
  1009. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/CircleShape.java +52 -0
  1010. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/ContentModel.java +14 -0
  1011. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/GradientColor.java +70 -0
  1012. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/GradientFill.java +84 -0
  1013. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/GradientStroke.java +110 -0
  1014. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/GradientType.java +6 -0
  1015. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/Mask.java +42 -0
  1016. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/MergePaths.java +74 -0
  1017. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/PolystarShape.java +111 -0
  1018. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/RectangleShape.java +58 -0
  1019. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/Repeater.java +52 -0
  1020. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/RoundedCorners.java +32 -0
  1021. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/ShapeData.java +110 -0
  1022. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/ShapeFill.java +63 -0
  1023. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/ShapeGroup.java +42 -0
  1024. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/ShapePath.java +45 -0
  1025. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/ShapeStroke.java +125 -0
  1026. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/ShapeTrimPath.java +76 -0
  1027. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/package-info.java +6 -0
  1028. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/layer/BaseLayer.java +693 -0
  1029. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/layer/CompositionLayer.java +236 -0
  1030. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/layer/ImageLayer.java +112 -0
  1031. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/layer/Layer.java +227 -0
  1032. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/layer/NullLayer.java +22 -0
  1033. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/layer/ShapeLayer.java +66 -0
  1034. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/layer/SolidLayer.java +93 -0
  1035. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/layer/TextLayer.java +619 -0
  1036. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/layer/package-info.java +6 -0
  1037. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/network/DefaultLottieFetchResult.java +73 -0
  1038. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/network/DefaultLottieNetworkFetcher.java +21 -0
  1039. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/network/FileExtension.java +27 -0
  1040. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/network/LottieFetchResult.java +36 -0
  1041. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/network/LottieNetworkCacheProvider.java +21 -0
  1042. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/network/LottieNetworkFetcher.java +20 -0
  1043. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/network/NetworkCache.java +200 -0
  1044. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/network/NetworkFetcher.java +152 -0
  1045. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/AnimatablePathValueParser.java +96 -0
  1046. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/AnimatableTextPropertiesParser.java +78 -0
  1047. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/AnimatableTransformParser.java +167 -0
  1048. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/AnimatableValueParser.java +88 -0
  1049. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/BlurEffectParser.java +69 -0
  1050. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/CircleShapeParser.java +60 -0
  1051. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ColorParser.java +47 -0
  1052. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ContentModelParser.java +109 -0
  1053. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/DocumentDataParser.java +110 -0
  1054. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/DropShadowEffect.java +42 -0
  1055. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/DropShadowEffectParser.java +88 -0
  1056. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/FloatParser.java +17 -0
  1057. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/FontCharacterParser.java +81 -0
  1058. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/FontParser.java +49 -0
  1059. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/GradientColorParser.java +267 -0
  1060. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/GradientFillParser.java +100 -0
  1061. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/GradientStrokeParser.java +163 -0
  1062. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/IntegerParser.java +16 -0
  1063. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/JsonUtils.java +121 -0
  1064. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/KeyframeParser.java +373 -0
  1065. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/KeyframesParser.java +84 -0
  1066. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/LayerParser.java +292 -0
  1067. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/LottieCompositionMoshiParser.java +270 -0
  1068. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/MaskParser.java +68 -0
  1069. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/MergePathsParser.java +42 -0
  1070. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/PathKeyframeParser.java +27 -0
  1071. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/PathParser.java +18 -0
  1072. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/PointFParser.java +35 -0
  1073. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/PolystarShapeParser.java +91 -0
  1074. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/RectangleShapeParser.java +59 -0
  1075. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/RepeaterParser.java +57 -0
  1076. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/RoundedCornersParser.java +47 -0
  1077. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ScaleXYParser.java +31 -0
  1078. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ShapeDataParser.java +103 -0
  1079. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ShapeFillParser.java +69 -0
  1080. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ShapeGroupParser.java +55 -0
  1081. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ShapePathParser.java +52 -0
  1082. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ShapeStrokeParser.java +130 -0
  1083. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ShapeTrimPathParser.java +61 -0
  1084. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ValueParser.java +10 -0
  1085. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/moshi/JsonDataException.java +39 -0
  1086. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/moshi/JsonEncodingException.java +30 -0
  1087. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/moshi/JsonReader.java +493 -0
  1088. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/moshi/JsonScope.java +99 -0
  1089. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/moshi/JsonUtf8Reader.java +1046 -0
  1090. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/moshi/LinkedHashTreeMap.java +868 -0
  1091. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/moshi/package-info.java +6 -0
  1092. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/package-info.java +6 -0
  1093. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/BaseLottieAnimator.java +117 -0
  1094. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/GammaEvaluator.java +64 -0
  1095. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/LogcatLogger.java +52 -0
  1096. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/Logger.java +36 -0
  1097. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/LottieThreadFactory.java +27 -0
  1098. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/LottieTrace.java +42 -0
  1099. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/LottieValueAnimator.java +330 -0
  1100. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/MeanCalculator.java +26 -0
  1101. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/MiscUtils.java +113 -0
  1102. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/Utils.java +321 -0
  1103. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/package-info.java +6 -0
  1104. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/Keyframe.java +199 -0
  1105. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/LottieFrameInfo.java +65 -0
  1106. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/LottieInterpolatedFloatValue.java +22 -0
  1107. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/LottieInterpolatedIntegerValue.java +22 -0
  1108. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/LottieInterpolatedPointValue.java +27 -0
  1109. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/LottieInterpolatedValue.java +28 -0
  1110. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/LottieRelativeFloatValueCallback.java +39 -0
  1111. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/LottieRelativeIntegerValueCallback.java +32 -0
  1112. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/LottieRelativePointValueCallback.java +52 -0
  1113. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/LottieValueCallback.java +90 -0
  1114. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/ScaleXY.java +36 -0
  1115. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/SimpleLottieValueCallback.java +10 -0
  1116. package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottieview/ESLottieViewComponent.java +373 -0
  1117. package/rules/.source/sdk/support/network-speed/src/main/java/com/quicktvui/support/network/speed/ESNetworkSpeedModule.java +134 -0
  1118. package/rules/.source/sdk/support/network-speed/src/main/java/com/quicktvui/support/network/speed/util/FormatTools.java +29 -0
  1119. package/rules/.source/sdk/support/player-async/src/main/java/com/quicktvui/support/asyncplayer/ESAsyncPlayerModule.java +96 -0
  1120. package/rules/.source/sdk/support/player-audio-android/src/main/java/com/quicktvui/support/player/audio/android/ESAndroidAudioPlayer.java +484 -0
  1121. package/rules/.source/sdk/support/player-audio-android/src/main/java/com/quicktvui/support/player/audio/android/ESAndroidAudioPlayerModule.java +346 -0
  1122. package/rules/.source/sdk/support/player-audio-android/src/main/java/com/quicktvui/support/player/audio/android/ESAndroidAudioPlayerServiceModule.java +638 -0
  1123. package/rules/.source/sdk/support/player-audio-android/src/main/java/com/quicktvui/support/player/audio/android/ESAudioPlayerService.java +470 -0
  1124. package/rules/.source/sdk/support/player-audio-ijk/src/main/java/com/quicktvui/support/player/audio/bean/PlayInfoBean.java +48 -0
  1125. package/rules/.source/sdk/support/player-audio-ijk/src/main/java/com/quicktvui/support/player/audio/ijk/ESAudioPlayerService.java +528 -0
  1126. package/rules/.source/sdk/support/player-audio-ijk/src/main/java/com/quicktvui/support/player/audio/ijk/ESIJKAudioPlayer.java +827 -0
  1127. package/rules/.source/sdk/support/player-audio-ijk/src/main/java/com/quicktvui/support/player/audio/ijk/ESIJKAudioPlayerModule.java +438 -0
  1128. package/rules/.source/sdk/support/player-audio-ijk/src/main/java/com/quicktvui/support/player/audio/ijk/ESIJKAudioPlayerModule2.java +498 -0
  1129. package/rules/.source/sdk/support/player-audio-ijk/src/main/java/com/quicktvui/support/player/audio/ijk/ESIJKAudioPlayerServiceModule.java +655 -0
  1130. package/rules/.source/sdk/support/player-audio-ijk/src/main/java/com/quicktvui/support/player/audio/utils/Settings.java +28 -0
  1131. package/rules/.source/sdk/support/player-audio-soundpool/src/main/java/com/quicktvui/support/player/audio/soundpool/ESSoundPoolAudioPlayerModule.java +191 -0
  1132. package/rules/.source/sdk/support/player-audio-soundpool/src/main/java/com/quicktvui/support/player/audio/soundpool/Sound.java +52 -0
  1133. package/rules/.source/sdk/support/player-audio-soundpool/src/main/java/com/quicktvui/support/player/audio/soundpool/SoundCache.java +125 -0
  1134. package/rules/.source/sdk/support/player-audio-soundpool/src/main/java/com/quicktvui/support/player/audio/soundpool/SoundPoolManager.java +567 -0
  1135. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/aspect/IJKAspectRatioMapper.java +78 -0
  1136. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/component/ADPlayerComponent.java +46 -0
  1137. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/component/IJKPlayerComponent.java +323 -0
  1138. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/module/ESPlayerIJKModule.java +96 -0
  1139. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/module/VideoModule.java +181 -0
  1140. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/AssetDataSource.java +67 -0
  1141. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/FileMediaDataSource.java +56 -0
  1142. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/IRenderView.java +97 -0
  1143. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/IjkLibManager.java +215 -0
  1144. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/IjkMediaOption.java +64 -0
  1145. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/IjkVideoPlayer.java +1487 -0
  1146. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/IjkVideoView.java +1796 -0
  1147. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/MeasureHelper.java +420 -0
  1148. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/MediaPlayerCompat.java +66 -0
  1149. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/RawDataSourceProvider.java +66 -0
  1150. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/SurfaceRenderView.java +308 -0
  1151. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/TextureRenderView.java +364 -0
  1152. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/service/MediaPlayerService.java +67 -0
  1153. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/setting/Settings.java +162 -0
  1154. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/AudioChannelType.java +24 -0
  1155. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/CommonUtils.java +53 -0
  1156. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/DeviceUtil.java +98 -0
  1157. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/DisplayAndDecodeTools.java +166 -0
  1158. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/FFConcatUtils.java +102 -0
  1159. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/FormatTools.java +32 -0
  1160. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/MetadataUtils.java +150 -0
  1161. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/PlayerThreadTools.java +97 -0
  1162. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/StorageUtils.java +159 -0
  1163. package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/TimedHelper.java +233 -0
  1164. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/Constants.java +6 -0
  1165. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/aspect/AspectRatio.java +46 -0
  1166. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/aspect/AspectRatioManager.java +105 -0
  1167. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/aspect/AspectRatioSettingMapper.java +44 -0
  1168. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/base/ESBaseFrameLayout.java +82 -0
  1169. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/base/IPlayerRootView.java +10 -0
  1170. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/base/PlayerBaseView.java +750 -0
  1171. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/callback/CallbackNotifier.java +277 -0
  1172. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/component/PlayerBaseComponent.java +1150 -0
  1173. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/decode/Decode.java +45 -0
  1174. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/definition/Definition.java +48 -0
  1175. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/log/PLog.java +497 -0
  1176. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/log/PLogDefaultLoggingDelegate.java +149 -0
  1177. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/log/PLoggingDelegate.java +161 -0
  1178. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/log/logging.pro +5 -0
  1179. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/log/package-info.java +11 -0
  1180. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/manager/PlayerConfiguration.java +494 -0
  1181. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/model/ADPositionType.java +32 -0
  1182. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/model/IPlayerDimension.java +25 -0
  1183. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/model/IVideoUrl.java +51 -0
  1184. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/model/PlayerDimensionModel.java +166 -0
  1185. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/model/VideoUrlModel.java +113 -0
  1186. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/player/IPlayer.java +308 -0
  1187. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/player/IPlayerCallback.java +127 -0
  1188. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/player/PlayerConstant.java +30 -0
  1189. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/player/PlayerError.java +85 -0
  1190. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/player/PlayerInfo.java +70 -0
  1191. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/player/PlayerStatus.java +56 -0
  1192. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/player/PlayerStatusEnum.java +54 -0
  1193. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/player/PlayerStatusParams.java +21 -0
  1194. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/player/PlayerType.java +15 -0
  1195. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/setting/PlayerSetting.java +146 -0
  1196. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/utils/Preconditions.java +442 -0
  1197. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/utils/ScreenUtils.java +121 -0
  1198. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/volume/IPlayerVolume.java +12 -0
  1199. package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/volume/PlayerVolumeModel.java +69 -0
  1200. package/rules/.source/sdk/support/rippleview/src/main/java/com/quicktvui/support/rippleview/ESRippleViewComponent.java +40 -0
  1201. package/rules/.source/sdk/support/rippleview/src/main/java/com/quicktvui/support/rippleview/RippleView.java +208 -0
  1202. package/rules/.source/sdk/support/socket-io/src/main/java/com/quicktvui/support/socketio/IEsSocketIOModule.java +24 -0
  1203. package/rules/.source/sdk/support/socket-io/src/main/java/com/quicktvui/support/socketio/SocketIOClientImpl.java +165 -0
  1204. package/rules/.source/sdk/support/socket-io/src/main/java/com/quicktvui/support/socketio/SocketIoModule.java +161 -0
  1205. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/ESSubtitleModule.java +567 -0
  1206. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/FileUtils.java +1259 -0
  1207. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/IOClass.java +134 -0
  1208. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/ISubtitleControl.java +64 -0
  1209. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/SubtitleClickListener.java +16 -0
  1210. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/Caption.java +27 -0
  1211. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/FatalParsingException.java +25 -0
  1212. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/FormatASS.java +613 -0
  1213. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/FormatSCC.java +1063 -0
  1214. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/FormatSRT.java +209 -0
  1215. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/FormatSTL.java +654 -0
  1216. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/FormatTTML.java +539 -0
  1217. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/FormatVTT.java +227 -0
  1218. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/Region.java +5 -0
  1219. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/Style.java +161 -0
  1220. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/SubtitleResult.java +16 -0
  1221. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/SubtitleText.java +42 -0
  1222. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/Time.java +209 -0
  1223. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/TimedTextFileFormat.java +65 -0
  1224. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/TimedTextObject.java +161 -0
  1225. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/ui/ESSubtitleView.java +152 -0
  1226. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/ui/ESSubtitleViewComponent.java +189 -0
  1227. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/ui/ESSubtitleViewController.java +172 -0
  1228. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/ui/StrokeTextView.java +116 -0
  1229. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/ui/SubtitleTextView.java +70 -0
  1230. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/ui/SubtitleView.java +299 -0
  1231. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/CharsetListener.java +51 -0
  1232. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/Constants.java +74 -0
  1233. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/EncodingDetectorInputStream.java +118 -0
  1234. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/EncodingDetectorOutputStream.java +82 -0
  1235. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/FileCharsetConverter.java +30 -0
  1236. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/ReaderFactory.java +144 -0
  1237. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/UnicodeBOMInputStream.java +297 -0
  1238. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/UniversalDetector.java +394 -0
  1239. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/Big5Prober.java +137 -0
  1240. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/CharsetProber.java +181 -0
  1241. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/EUCJPProber.java +145 -0
  1242. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/EUCKRProber.java +135 -0
  1243. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/EUCTWProber.java +136 -0
  1244. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/EscCharsetProber.java +136 -0
  1245. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/GB18030Prober.java +135 -0
  1246. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/HebrewProber.java +212 -0
  1247. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/Latin1Prober.java +201 -0
  1248. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/MBCSGroupProber.java +173 -0
  1249. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/SBCSGroupProber.java +185 -0
  1250. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/SJISProber.java +144 -0
  1251. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/SingleByteCharsetProber.java +187 -0
  1252. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/UTF8Prober.java +133 -0
  1253. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/contextanalysis/EUCJPContextAnalysis.java +97 -0
  1254. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/contextanalysis/JapaneseContextAnalysis.java +255 -0
  1255. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/contextanalysis/SJISContextAnalysis.java +93 -0
  1256. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/distributionanalysis/Big5DistributionAnalysis.java +962 -0
  1257. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/distributionanalysis/CharDistributionAnalysis.java +116 -0
  1258. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/distributionanalysis/EUCJPDistributionAnalysis.java +67 -0
  1259. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/distributionanalysis/EUCKRDistributionAnalysis.java +630 -0
  1260. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/distributionanalysis/EUCTWDistributionAnalysis.java +459 -0
  1261. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/distributionanalysis/GB2312DistributionAnalysis.java +508 -0
  1262. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/distributionanalysis/JISDistributionAnalysis.java +585 -0
  1263. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/distributionanalysis/SJISDistributionAnalysis.java +79 -0
  1264. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/BulgarianModel.java +193 -0
  1265. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/CyrillicModel.java +194 -0
  1266. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/GreekModel.java +194 -0
  1267. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/HebrewModel.java +217 -0
  1268. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/Ibm855Model.java +73 -0
  1269. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/Ibm866Model.java +73 -0
  1270. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/Koi8rModel.java +73 -0
  1271. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/Latin5BulgarianModel.java +72 -0
  1272. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/Latin5Model.java +73 -0
  1273. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/Latin7Model.java +73 -0
  1274. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/MacCyrillicModel.java +73 -0
  1275. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/SequenceModel.java +95 -0
  1276. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/ThaiModel.java +239 -0
  1277. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/Win1251BulgarianModel.java +73 -0
  1278. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/Win1251Model.java +72 -0
  1279. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/Win1253Model.java +72 -0
  1280. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/Big5SMModel.java +111 -0
  1281. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/CodingStateMachine.java +75 -0
  1282. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/EUCJPSMModel.java +115 -0
  1283. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/EUCKRSMModel.java +111 -0
  1284. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/EUCTWSMModel.java +115 -0
  1285. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/GB18030SMModel.java +114 -0
  1286. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/HZSMModel.java +113 -0
  1287. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/ISO2022CNSMModel.java +116 -0
  1288. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/ISO2022JPSMModel.java +118 -0
  1289. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/ISO2022KRSMModel.java +117 -0
  1290. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/PkgInt.java +117 -0
  1291. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/SJISSMModel.java +114 -0
  1292. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/SMModel.java +93 -0
  1293. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/UCS2BESMModel.java +120 -0
  1294. package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/UTF8SMModel.java +141 -0
  1295. package/rules/.source/sdk/support/swiper-view/src/main/java/com/quicktvui/support/swiper/ESSwiperSlideViewComponent.java +46 -0
  1296. package/rules/.source/sdk/support/swiper-view/src/main/java/com/quicktvui/support/swiper/SwiperView.java +48 -0
  1297. package/rules/.source/sdk/support/ui/icon-view/src/main/java/quicktvui/support/ui/icon/ESAppIconView.java +42 -0
  1298. package/rules/.source/sdk/support/ui/icon-view/src/main/java/quicktvui/support/ui/icon/ESAppIconViewComponent.java +112 -0
  1299. package/rules/.source/sdk/support/ui/image/src/main/java/com/quicktvui/support/ui/image/canvas/ESCanvasParamsUtils.java +117 -0
  1300. package/rules/.source/sdk/support/ui/image/src/main/java/com/quicktvui/support/ui/image/canvas/ESPaint.java +60 -0
  1301. package/rules/.source/sdk/support/ui/image/src/main/java/com/quicktvui/support/ui/image/canvas/ESPaintAction.java +7 -0
  1302. package/rules/.source/sdk/support/ui/image/src/main/java/com/quicktvui/support/ui/image/canvas/ESPath.java +109 -0
  1303. package/rules/.source/sdk/support/ui/image/src/main/java/com/quicktvui/support/ui/image/canvas/ESPathAction.java +10 -0
  1304. package/rules/.source/sdk/support/ui/image/src/main/java/com/quicktvui/support/ui/image/canvas/PorterDuffUtils.java +49 -0
  1305. package/rules/.source/sdk/support/ui/image/src/main/java/com/quicktvui/support/ui/image/crop/ESCroppedImageView.java +285 -0
  1306. package/rules/.source/sdk/support/ui/image/src/main/java/com/quicktvui/support/ui/image/crop/ESCroppedImageViewComponent.java +102 -0
  1307. package/rules/.source/sdk/support/ui/playmarkview/src/main/java/com/quicktvui/support/ui/playmarkview/ESPlayMarkViewComponent.java +104 -0
  1308. package/rules/.source/sdk/support/ui/playmarkview/src/main/java/com/quicktvui/support/ui/playmarkview/PlayMarkView.java +319 -0
  1309. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/DensityUtils.java +57 -0
  1310. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/ScreenAdapt.java +33 -0
  1311. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/ScreenUtils.java +112 -0
  1312. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/ViewUtil.java +17 -0
  1313. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/HippyBaseFrameLayout.java +97 -0
  1314. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/HomeItemView.java +1564 -0
  1315. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/ItemFrame.java +188 -0
  1316. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/ItemFrameComponent.java +58 -0
  1317. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/ItemViewComponent.java +157 -0
  1318. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/RippleView.java +257 -0
  1319. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/RippleViewComponent.java +91 -0
  1320. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/TitleFocusComponent.java +42 -0
  1321. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/TitleNormalComponent.java +46 -0
  1322. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/TitleView.java +522 -0
  1323. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/TitleViewFocus.java +370 -0
  1324. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/AdvanceCenterScroller.java +132 -0
  1325. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/EasyListView.java +420 -0
  1326. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/EventSender.java +89 -0
  1327. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/FocusWatcher.java +66 -0
  1328. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/GroupItem.java +40 -0
  1329. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/GroupItemPresenter.kt +90 -0
  1330. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/ItemView.java +218 -0
  1331. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/LargeListComponent.java +115 -0
  1332. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/LargeListViewGroup.java +1383 -0
  1333. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/LazyDataItem.java +10 -0
  1334. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/LoadingItem.java +8 -0
  1335. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/LoadingPresenter.java +59 -0
  1336. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/MyTemplateHelper.kt +35 -0
  1337. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/NumberEpisodeItemPresenter.java +160 -0
  1338. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/PendingItemView.java +7 -0
  1339. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/StandItemViewPresenter.java +108 -0
  1340. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/Template.java +44 -0
  1341. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/TemplateBean.java +6 -0
  1342. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/TemplateHelper.kt +128 -0
  1343. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/TemplateItem.kt +83 -0
  1344. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/TemplateItemPresenterSelector.java +36 -0
  1345. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/TemplatePresenter.java +13 -0
  1346. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/TemplateUtil.java +339 -0
  1347. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/TextEpisodeItemHostView.java +128 -0
  1348. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/ESSelectSeriesController.java +156 -0
  1349. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/EventSender.java +89 -0
  1350. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/SelectSeriesViewGroup.java +1024 -0
  1351. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/bean/LazyDataItem.java +10 -0
  1352. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/bean/MyData.java +33 -0
  1353. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/bean/PageData.java +5 -0
  1354. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/bean/Param.java +192 -0
  1355. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/bean/TemplateItem.kt +31 -0
  1356. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/components/GroupListView.java +49 -0
  1357. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/components/LargeListView.java +402 -0
  1358. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/presenters/CustomItemViewPresenter.java +133 -0
  1359. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/presenters/GroupItemPresenter.kt +123 -0
  1360. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/utils/MyCustomHelper.java +468 -0
  1361. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/utils/MyTemplateHelper.kt +18 -0
  1362. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/utils/TemplateHelper.kt +88 -0
  1363. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/utils/TemplateUtil.java +415 -0
  1364. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/swiftlist/SwiftListComponent.java +104 -0
  1365. package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/swiftlist/SwiftListView.java +563 -0
  1366. package/rules/.source/sdk/support/upload/src/main/java/quicktvui/support/upload/ESUploadModule.java +307 -0
  1367. package/rules/.source/sdk/support/upload/src/main/java/quicktvui/support/upload/UploadManager.java +136 -0
  1368. package/rules/.source/sdk/support/websocket/src/main/java/quicktvui/support/websocket/IEsWebSocketModule.java +24 -0
  1369. package/rules/.source/sdk/support/websocket/src/main/java/quicktvui/support/websocket/WebSocketClient.java +63 -0
  1370. package/rules/.source/sdk/support/websocket/src/main/java/quicktvui/support/websocket/WebSocketImpl.java +55 -0
  1371. package/rules/.source/sdk/support/websocket/src/main/java/quicktvui/support/websocket/WebSocketModule.java +114 -0
  1372. package/rules/.source/sdk/support/webview/src/main/java/com/quicktvui/support/webview/ESWebView.java +235 -0
  1373. package/rules/.source/sdk/support/webview/src/main/java/com/quicktvui/support/webview/ESWebViewComponent.java +1181 -0
  1374. package/rules/.source/sdk/support/x5webview/src/main/java/com/quicktvui/support/x5webview/ESX5WebView.java +352 -0
  1375. package/rules/.source/sdk/support/x5webview/src/main/java/com/quicktvui/support/x5webview/ESX5WebViewComponent.java +1190 -0
  1376. package/rules/.windsurfrules +28 -4
  1377. package/rules/AGENTS.md +28 -4
  1378. package/rules/CLAUDE.md +28 -3
  1379. package/rules/GEMINI.md +26 -3
@@ -0,0 +1,3201 @@
1
+ /*
2
+ * Copyright (c) 2014 Kevin Sawicki <kevinsawicki@gmail.com>
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ * of this software and associated documentation files (the "Software"), to
6
+ * deal in the Software without restriction, including without limitation the
7
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8
+ * sell copies of the Software, and to permit persons to whom the Software is
9
+ * furnished to do so, subject to the following conditions:
10
+ *
11
+ * The above copyright notice and this permission notice shall be included in
12
+ * all copies or substantial portions of the Software.
13
+ *
14
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20
+ * IN THE SOFTWARE.
21
+ */
22
+ package com.quicktvui.support.download;
23
+
24
+ import static java.net.HttpURLConnection.HTTP_BAD_REQUEST;
25
+ import static java.net.HttpURLConnection.HTTP_CREATED;
26
+ import static java.net.HttpURLConnection.HTTP_INTERNAL_ERROR;
27
+ import static java.net.HttpURLConnection.HTTP_NOT_FOUND;
28
+ import static java.net.HttpURLConnection.HTTP_NOT_MODIFIED;
29
+ import static java.net.HttpURLConnection.HTTP_NO_CONTENT;
30
+ import static java.net.HttpURLConnection.HTTP_OK;
31
+ import static java.net.Proxy.Type.HTTP;
32
+
33
+ import android.util.Log;
34
+
35
+ import java.io.BufferedInputStream;
36
+ import java.io.BufferedOutputStream;
37
+ import java.io.BufferedReader;
38
+ import java.io.ByteArrayInputStream;
39
+ import java.io.ByteArrayOutputStream;
40
+ import java.io.Closeable;
41
+ import java.io.File;
42
+ import java.io.FileInputStream;
43
+ import java.io.FileNotFoundException;
44
+ import java.io.FileOutputStream;
45
+ import java.io.Flushable;
46
+ import java.io.IOException;
47
+ import java.io.InputStream;
48
+ import java.io.InputStreamReader;
49
+ import java.io.OutputStream;
50
+ import java.io.OutputStreamWriter;
51
+ import java.io.PrintStream;
52
+ import java.io.Reader;
53
+ import java.io.UnsupportedEncodingException;
54
+ import java.io.Writer;
55
+ import java.net.HttpURLConnection;
56
+ import java.net.InetSocketAddress;
57
+ import java.net.MalformedURLException;
58
+ import java.net.Proxy;
59
+ import java.net.URI;
60
+ import java.net.URISyntaxException;
61
+ import java.net.URL;
62
+ import java.net.URLEncoder;
63
+ import java.nio.ByteBuffer;
64
+ import java.nio.CharBuffer;
65
+ import java.nio.charset.Charset;
66
+ import java.nio.charset.CharsetEncoder;
67
+ import java.security.AccessController;
68
+ import java.security.GeneralSecurityException;
69
+ import java.security.PrivilegedAction;
70
+ import java.security.SecureRandom;
71
+ import java.security.cert.X509Certificate;
72
+ import java.util.ArrayList;
73
+ import java.util.Arrays;
74
+ import java.util.Collections;
75
+ import java.util.Iterator;
76
+ import java.util.LinkedHashMap;
77
+ import java.util.List;
78
+ import java.util.Map;
79
+ import java.util.Map.Entry;
80
+ import java.util.concurrent.Callable;
81
+ import java.util.concurrent.atomic.AtomicInteger;
82
+ import java.util.concurrent.atomic.AtomicReference;
83
+ import java.util.zip.GZIPInputStream;
84
+
85
+ import javax.net.ssl.HostnameVerifier;
86
+ import javax.net.ssl.HttpsURLConnection;
87
+ import javax.net.ssl.SSLContext;
88
+ import javax.net.ssl.SSLSession;
89
+ import javax.net.ssl.SSLSocketFactory;
90
+ import javax.net.ssl.TrustManager;
91
+ import javax.net.ssl.X509TrustManager;
92
+
93
+ /**
94
+ * A fluid interface for making HTTP requests using an underlying
95
+ * {@link HttpURLConnection} (or sub-class).
96
+ * <p>
97
+ * Each instance supports making a single request and cannot be reused for
98
+ * further requests.
99
+ */
100
+ public class HttpRequest {
101
+
102
+ private static final String TAG = "HttpRequest";
103
+ private final boolean DEBUG = false;
104
+
105
+ /**
106
+ * 'UTF-8' charset name
107
+ */
108
+ public static final String CHARSET_UTF8 = "UTF-8";
109
+
110
+ /**
111
+ * 'application/x-www-form-urlencoded' content type header value
112
+ */
113
+ public static final String CONTENT_TYPE_FORM = "application/x-www-form-urlencoded";
114
+
115
+ /**
116
+ * 'application/json' content type header value
117
+ */
118
+ public static final String CONTENT_TYPE_JSON = "application/json";
119
+
120
+ /**
121
+ * 'gzip' encoding header value
122
+ */
123
+ public static final String ENCODING_GZIP = "gzip";
124
+
125
+ /**
126
+ * 'Accept' header name
127
+ */
128
+ public static final String HEADER_ACCEPT = "Accept";
129
+
130
+ /**
131
+ * 'Accept-Charset' header name
132
+ */
133
+ public static final String HEADER_ACCEPT_CHARSET = "Accept-Charset";
134
+
135
+ /**
136
+ * 'Accept-Encoding' header name
137
+ */
138
+ public static final String HEADER_ACCEPT_ENCODING = "Accept-Encoding";
139
+
140
+ /**
141
+ * 'Authorization' header name
142
+ */
143
+ public static final String HEADER_AUTHORIZATION = "Authorization";
144
+
145
+ /**
146
+ * 'Cache-Control' header name
147
+ */
148
+ public static final String HEADER_CACHE_CONTROL = "Cache-Control";
149
+
150
+ /**
151
+ * 'Content-Encoding' header name
152
+ */
153
+ public static final String HEADER_CONTENT_ENCODING = "Content-Encoding";
154
+
155
+ /**
156
+ * 'Content-Length' header name
157
+ */
158
+ public static final String HEADER_CONTENT_LENGTH = "Content-Length";
159
+
160
+ /**
161
+ * 'Content-Type' header name
162
+ */
163
+ public static final String HEADER_CONTENT_TYPE = "Content-Type";
164
+
165
+ /**
166
+ * 'Date' header name
167
+ */
168
+ public static final String HEADER_DATE = "Date";
169
+
170
+ /**
171
+ * 'ETag' header name
172
+ */
173
+ public static final String HEADER_ETAG = "ETag";
174
+
175
+ /**
176
+ * 'Expires' header name
177
+ */
178
+ public static final String HEADER_EXPIRES = "Expires";
179
+
180
+ /**
181
+ * 'If-None-Match' header name
182
+ */
183
+ public static final String HEADER_IF_NONE_MATCH = "If-None-Match";
184
+
185
+ /**
186
+ * 'Last-Modified' header name
187
+ */
188
+ public static final String HEADER_LAST_MODIFIED = "Last-Modified";
189
+
190
+ /**
191
+ * 'Location' header name
192
+ */
193
+ public static final String HEADER_LOCATION = "Location";
194
+
195
+ /**
196
+ * 'Proxy-Authorization' header name
197
+ */
198
+ public static final String HEADER_PROXY_AUTHORIZATION = "Proxy-Authorization";
199
+
200
+ /**
201
+ * 'Referer' header name
202
+ */
203
+ public static final String HEADER_REFERER = "Referer";
204
+
205
+ /**
206
+ * 'Server' header name
207
+ */
208
+ public static final String HEADER_SERVER = "Server";
209
+
210
+ /**
211
+ * 'User-Agent' header name
212
+ */
213
+ public static final String HEADER_USER_AGENT = "User-Agent";
214
+
215
+ /**
216
+ * 'DELETE' request method
217
+ */
218
+ public static final String METHOD_DELETE = "DELETE";
219
+
220
+ /**
221
+ * 'GET' request method
222
+ */
223
+ public static final String METHOD_GET = "GET";
224
+
225
+ /**
226
+ * 'HEAD' request method
227
+ */
228
+ public static final String METHOD_HEAD = "HEAD";
229
+
230
+ /**
231
+ * 'OPTIONS' options method
232
+ */
233
+ public static final String METHOD_OPTIONS = "OPTIONS";
234
+
235
+ /**
236
+ * 'POST' request method
237
+ */
238
+ public static final String METHOD_POST = "POST";
239
+
240
+ /**
241
+ * 'PUT' request method
242
+ */
243
+ public static final String METHOD_PUT = "PUT";
244
+
245
+ /**
246
+ * 'TRACE' request method
247
+ */
248
+ public static final String METHOD_TRACE = "TRACE";
249
+
250
+ /**
251
+ * 'charset' header value parameter
252
+ */
253
+ public static final String PARAM_CHARSET = "charset";
254
+
255
+ private static final String BOUNDARY = "00content0boundary00";
256
+
257
+ private static final String CONTENT_TYPE_MULTIPART = "multipart/form-data; boundary="
258
+ + BOUNDARY;
259
+
260
+ private static final String CRLF = "\r\n";
261
+
262
+ private static final String[] EMPTY_STRINGS = new String[0];
263
+
264
+ private static SSLSocketFactory TRUSTED_FACTORY;
265
+
266
+ private static HostnameVerifier TRUSTED_VERIFIER;
267
+ private static ConnectionFactory CONNECTION_FACTORY = ConnectionFactory.DEFAULT;
268
+ private final URL url;
269
+ private final String requestMethod;
270
+ private HttpURLConnection connection = null;
271
+ private RequestOutputStream output;
272
+ private boolean multipart;
273
+ private boolean form;
274
+ private boolean ignoreCloseExceptions = true;
275
+ private boolean uncompress = false;
276
+ private int bufferSize = 8192;
277
+ private long totalSize = -1;
278
+ private long totalWritten = 0;
279
+ private String httpProxyHost;
280
+ private int httpProxyPort;
281
+ private UploadProgress progress = UploadProgress.DEFAULT;
282
+
283
+ /**
284
+ * Create HTTP connection wrapper
285
+ *
286
+ * @param url Remote resource URL.
287
+ * @param method HTTP request method (e.g., "GET", "POST").
288
+ * @throws HttpRequestException
289
+ */
290
+ public HttpRequest(final CharSequence url, final String method)
291
+ throws HttpRequestException {
292
+ try {
293
+ this.url = new URL(url.toString());
294
+ } catch (MalformedURLException e) {
295
+ throw new HttpRequestException(e);
296
+ }
297
+ this.requestMethod = method;
298
+ }
299
+
300
+ /**
301
+ * Create HTTP connection wrapper
302
+ *
303
+ * @param url Remote resource URL.
304
+ * @param method HTTP request method (e.g., "GET", "POST").
305
+ * @throws HttpRequestException
306
+ */
307
+ public HttpRequest(final URL url, final String method)
308
+ throws HttpRequestException {
309
+ this.url = url;
310
+ this.requestMethod = method;
311
+ }
312
+
313
+ private static String getValidCharset(final String charset) {
314
+ if (charset != null && charset.length() > 0)
315
+ return charset;
316
+ else
317
+ return CHARSET_UTF8;
318
+ }
319
+
320
+ private static SSLSocketFactory getTrustedFactory()
321
+ throws HttpRequestException {
322
+ if (TRUSTED_FACTORY == null) {
323
+ final TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
324
+
325
+ public X509Certificate[] getAcceptedIssuers() {
326
+ return new X509Certificate[0];
327
+ }
328
+
329
+ public void checkClientTrusted(X509Certificate[] chain, String authType) {
330
+ // Intentionally left blank
331
+ }
332
+
333
+ public void checkServerTrusted(X509Certificate[] chain, String authType) {
334
+ // Intentionally left blank
335
+ }
336
+ }};
337
+ try {
338
+ SSLContext context = SSLContext.getInstance("TLS");
339
+ context.init(null, trustAllCerts, new SecureRandom());
340
+ TRUSTED_FACTORY = context.getSocketFactory();
341
+ } catch (GeneralSecurityException e) {
342
+ IOException ioException = new IOException(
343
+ "Security exception configuring SSL context");
344
+ ioException.initCause(e);
345
+ throw new HttpRequestException(ioException);
346
+ }
347
+ }
348
+
349
+ return TRUSTED_FACTORY;
350
+ }
351
+
352
+ private static HostnameVerifier getTrustedVerifier() {
353
+ if (TRUSTED_VERIFIER == null)
354
+ TRUSTED_VERIFIER = new HostnameVerifier() {
355
+
356
+ public boolean verify(String hostname, SSLSession session) {
357
+ return true;
358
+ }
359
+ };
360
+
361
+ return TRUSTED_VERIFIER;
362
+ }
363
+
364
+ private static StringBuilder addPathSeparator(final String baseUrl,
365
+ final StringBuilder result) {
366
+ // Add trailing slash if the base URL doesn't have any path segments.
367
+ //
368
+ // The following test is checking for the last slash not being part of
369
+ // the protocol to host separator: '://'.
370
+ if (baseUrl.indexOf(':') + 2 == baseUrl.lastIndexOf('/'))
371
+ result.append('/');
372
+ return result;
373
+ }
374
+
375
+ private static StringBuilder addParamPrefix(final String baseUrl,
376
+ final StringBuilder result) {
377
+ // Add '?' if missing and add '&' if params already exist in base url
378
+ final int queryStart = baseUrl.indexOf('?');
379
+ final int lastChar = result.length() - 1;
380
+ if (queryStart == -1)
381
+ result.append('?');
382
+ else if (queryStart < lastChar && baseUrl.charAt(lastChar) != '&')
383
+ result.append('&');
384
+ return result;
385
+ }
386
+
387
+ private static StringBuilder addParam(final Object key, Object value,
388
+ final StringBuilder result) {
389
+ if (value != null && value.getClass().isArray())
390
+ value = arrayToList(value);
391
+
392
+ if (value instanceof Iterable<?>) {
393
+ Iterator<?> iterator = ((Iterable<?>) value).iterator();
394
+ while (iterator.hasNext()) {
395
+ result.append(key);
396
+ result.append("[]=");
397
+ Object element = iterator.next();
398
+ if (element != null)
399
+ result.append(element);
400
+ if (iterator.hasNext())
401
+ result.append("&");
402
+ }
403
+ } else {
404
+ result.append(key);
405
+ result.append("=");
406
+ if (value != null)
407
+ result.append(value);
408
+ }
409
+
410
+ return result;
411
+ }
412
+
413
+ /**
414
+ * Specify the {@link ConnectionFactory} used to create new requests.
415
+ */
416
+ public static void setConnectionFactory(final ConnectionFactory connectionFactory) {
417
+ if (connectionFactory == null)
418
+ CONNECTION_FACTORY = ConnectionFactory.DEFAULT;
419
+ else
420
+ CONNECTION_FACTORY = connectionFactory;
421
+ }
422
+
423
+ /**
424
+ * Represents array of any type as list of objects so we can easily iterate over it
425
+ *
426
+ * @param array of elements
427
+ * @return list with the same elements
428
+ */
429
+ private static List<Object> arrayToList(final Object array) {
430
+ if (array instanceof Object[])
431
+ return Arrays.asList((Object[]) array);
432
+
433
+ List<Object> result = new ArrayList<Object>();
434
+ // Arrays of the primitive types can't be cast to array of Object, so this:
435
+ if (array instanceof int[])
436
+ for (int value : (int[]) array) result.add(value);
437
+ else if (array instanceof boolean[])
438
+ for (boolean value : (boolean[]) array) result.add(value);
439
+ else if (array instanceof long[])
440
+ for (long value : (long[]) array) result.add(value);
441
+ else if (array instanceof float[])
442
+ for (float value : (float[]) array) result.add(value);
443
+ else if (array instanceof double[])
444
+ for (double value : (double[]) array) result.add(value);
445
+ else if (array instanceof short[])
446
+ for (short value : (short[]) array) result.add(value);
447
+ else if (array instanceof byte[])
448
+ for (byte value : (byte[]) array) result.add(value);
449
+ else if (array instanceof char[])
450
+ for (char value : (char[]) array) result.add(value);
451
+ return result;
452
+ }
453
+
454
+ /**
455
+ * Encode the given URL as an ASCII {@link String}
456
+ * <p>
457
+ * This method ensures the path and query segments of the URL are properly
458
+ * encoded such as ' ' characters being encoded to '%20' or any UTF-8
459
+ * characters that are non-ASCII. No encoding of URLs is done by default by
460
+ * the {@link HttpRequest} constructors and so if URL encoding is needed this
461
+ * method should be called before calling the {@link HttpRequest} constructor.
462
+ *
463
+ * @param url
464
+ * @return encoded URL
465
+ * @throws HttpRequestException
466
+ */
467
+ public static String encode(final CharSequence url)
468
+ throws HttpRequestException {
469
+ URL parsed;
470
+ try {
471
+ parsed = new URL(url.toString());
472
+ } catch (IOException e) {
473
+ throw new HttpRequestException(e);
474
+ }
475
+
476
+ String host = parsed.getHost();
477
+ int port = parsed.getPort();
478
+ if (port != -1)
479
+ host = host + ':' + Integer.toString(port);
480
+
481
+ try {
482
+ String encoded = new URI(parsed.getProtocol(), host, parsed.getPath(),
483
+ parsed.getQuery(), null).toASCIIString();
484
+ int paramsStart = encoded.indexOf('?');
485
+ if (paramsStart > 0 && paramsStart + 1 < encoded.length())
486
+ encoded = encoded.substring(0, paramsStart + 1)
487
+ + encoded.substring(paramsStart + 1).replace("+", "%2B");
488
+ return encoded;
489
+ } catch (URISyntaxException e) {
490
+ IOException io = new IOException("Parsing URI failed");
491
+ io.initCause(e);
492
+ throw new HttpRequestException(io);
493
+ }
494
+ }
495
+
496
+ /**
497
+ * Append given map as query parameters to the base URL
498
+ * <p>
499
+ * Each map entry's key will be a parameter name and the value's
500
+ * {@link Object#toString()} will be the parameter value.
501
+ *
502
+ * @param url
503
+ * @param params
504
+ * @return URL with appended query params
505
+ */
506
+ public static String append(final CharSequence url, final Map<?, ?> params) {
507
+ final String baseUrl = url.toString();
508
+ if (params == null || params.isEmpty())
509
+ return baseUrl;
510
+
511
+ final StringBuilder result = new StringBuilder(baseUrl);
512
+
513
+ addPathSeparator(baseUrl, result);
514
+ addParamPrefix(baseUrl, result);
515
+
516
+ Entry<?, ?> entry;
517
+ Iterator<?> iterator = params.entrySet().iterator();
518
+ entry = (Entry<?, ?>) iterator.next();
519
+ addParam(entry.getKey().toString(), entry.getValue(), result);
520
+
521
+ while (iterator.hasNext()) {
522
+ result.append('&');
523
+ entry = (Entry<?, ?>) iterator.next();
524
+ addParam(entry.getKey().toString(), entry.getValue(), result);
525
+ }
526
+
527
+ return result.toString();
528
+ }
529
+
530
+ /**
531
+ * Append given name/value pairs as query parameters to the base URL
532
+ * <p>
533
+ * The params argument is interpreted as a sequence of name/value pairs so the
534
+ * given number of params must be divisible by 2.
535
+ *
536
+ * @param url
537
+ * @param params name/value pairs
538
+ * @return URL with appended query params
539
+ */
540
+ public static String append(final CharSequence url, final Object... params) {
541
+ final String baseUrl = url.toString();
542
+ if (params == null || params.length == 0)
543
+ return baseUrl;
544
+
545
+ if (params.length % 2 != 0)
546
+ throw new IllegalArgumentException(
547
+ "Must specify an even number of parameter names/values");
548
+
549
+ final StringBuilder result = new StringBuilder(baseUrl);
550
+
551
+ addPathSeparator(baseUrl, result);
552
+ addParamPrefix(baseUrl, result);
553
+
554
+ addParam(params[0], params[1], result);
555
+
556
+ for (int i = 2; i < params.length; i += 2) {
557
+ result.append('&');
558
+ addParam(params[i], params[i + 1], result);
559
+ }
560
+
561
+ return result.toString();
562
+ }
563
+
564
+ /**
565
+ * Start a 'GET' request to the given URL
566
+ *
567
+ * @param url
568
+ * @return request
569
+ * @throws HttpRequestException
570
+ */
571
+ public static HttpRequest get(final CharSequence url)
572
+ throws HttpRequestException {
573
+ return new HttpRequest(url, METHOD_GET);
574
+ }
575
+
576
+ /**
577
+ * Start a 'GET' request to the given URL
578
+ *
579
+ * @param url
580
+ * @return request
581
+ * @throws HttpRequestException
582
+ */
583
+ public static HttpRequest get(final URL url) throws HttpRequestException {
584
+ return new HttpRequest(url, METHOD_GET);
585
+ }
586
+
587
+ /**
588
+ * Start a 'GET' request to the given URL along with the query params
589
+ *
590
+ * @param baseUrl
591
+ * @param params The query parameters to include as part of the baseUrl
592
+ * @param encode true to encode the full URL
593
+ * @return request
594
+ * @see #append(CharSequence, Map)
595
+ * @see #encode(CharSequence)
596
+ */
597
+ public static HttpRequest get(final CharSequence baseUrl,
598
+ final Map<?, ?> params, final boolean encode) {
599
+ String url = append(baseUrl, params);
600
+ return get(encode ? encode(url) : url);
601
+ }
602
+
603
+ /**
604
+ * Start a 'GET' request to the given URL along with the query params
605
+ *
606
+ * @param baseUrl
607
+ * @param encode true to encode the full URL
608
+ * @param params the name/value query parameter pairs to include as part of the
609
+ * baseUrl
610
+ * @return request
611
+ * @see #append(CharSequence, Object...)
612
+ * @see #encode(CharSequence)
613
+ */
614
+ public static HttpRequest get(final CharSequence baseUrl,
615
+ final boolean encode, final Object... params) {
616
+ String url = append(baseUrl, params);
617
+ return get(encode ? encode(url) : url);
618
+ }
619
+
620
+ /**
621
+ * Start a 'POST' request to the given URL
622
+ *
623
+ * @param url
624
+ * @return request
625
+ * @throws HttpRequestException
626
+ */
627
+ public static HttpRequest post(final CharSequence url)
628
+ throws HttpRequestException {
629
+ return new HttpRequest(url, METHOD_POST);
630
+ }
631
+
632
+ /**
633
+ * Start a 'POST' request to the given URL
634
+ *
635
+ * @param url
636
+ * @return request
637
+ * @throws HttpRequestException
638
+ */
639
+ public static HttpRequest post(final URL url) throws HttpRequestException {
640
+ return new HttpRequest(url, METHOD_POST);
641
+ }
642
+
643
+ /**
644
+ * Start a 'POST' request to the given URL along with the query params
645
+ *
646
+ * @param baseUrl
647
+ * @param params the query parameters to include as part of the baseUrl
648
+ * @param encode true to encode the full URL
649
+ * @return request
650
+ * @see #append(CharSequence, Map)
651
+ * @see #encode(CharSequence)
652
+ */
653
+ public static HttpRequest post(final CharSequence baseUrl,
654
+ final Map<?, ?> params, final boolean encode) {
655
+ String url = append(baseUrl, params);
656
+ return post(encode ? encode(url) : url);
657
+ }
658
+
659
+ /**
660
+ * Start a 'POST' request to the given URL along with the query params
661
+ *
662
+ * @param baseUrl
663
+ * @param encode true to encode the full URL
664
+ * @param params the name/value query parameter pairs to include as part of the
665
+ * baseUrl
666
+ * @return request
667
+ * @see #append(CharSequence, Object...)
668
+ * @see #encode(CharSequence)
669
+ */
670
+ public static HttpRequest post(final CharSequence baseUrl,
671
+ final boolean encode, final Object... params) {
672
+ String url = append(baseUrl, params);
673
+ return post(encode ? encode(url) : url);
674
+ }
675
+
676
+ /**
677
+ * Start a 'PUT' request to the given URL
678
+ *
679
+ * @param url
680
+ * @return request
681
+ * @throws HttpRequestException
682
+ */
683
+ public static HttpRequest put(final CharSequence url)
684
+ throws HttpRequestException {
685
+ return new HttpRequest(url, METHOD_PUT);
686
+ }
687
+
688
+ /**
689
+ * Start a 'PUT' request to the given URL
690
+ *
691
+ * @param url
692
+ * @return request
693
+ * @throws HttpRequestException
694
+ */
695
+ public static HttpRequest put(final URL url) throws HttpRequestException {
696
+ return new HttpRequest(url, METHOD_PUT);
697
+ }
698
+
699
+ /**
700
+ * Start a 'PUT' request to the given URL along with the query params
701
+ *
702
+ * @param baseUrl
703
+ * @param params the query parameters to include as part of the baseUrl
704
+ * @param encode true to encode the full URL
705
+ * @return request
706
+ * @see #append(CharSequence, Map)
707
+ * @see #encode(CharSequence)
708
+ */
709
+ public static HttpRequest put(final CharSequence baseUrl,
710
+ final Map<?, ?> params, final boolean encode) {
711
+ String url = append(baseUrl, params);
712
+ return put(encode ? encode(url) : url);
713
+ }
714
+
715
+ /**
716
+ * Start a 'PUT' request to the given URL along with the query params
717
+ *
718
+ * @param baseUrl
719
+ * @param encode true to encode the full URL
720
+ * @param params the name/value query parameter pairs to include as part of the
721
+ * baseUrl
722
+ * @return request
723
+ * @see #append(CharSequence, Object...)
724
+ * @see #encode(CharSequence)
725
+ */
726
+ public static HttpRequest put(final CharSequence baseUrl,
727
+ final boolean encode, final Object... params) {
728
+ String url = append(baseUrl, params);
729
+ return put(encode ? encode(url) : url);
730
+ }
731
+
732
+ /**
733
+ * Start a 'DELETE' request to the given URL
734
+ *
735
+ * @param url
736
+ * @return request
737
+ * @throws HttpRequestException
738
+ */
739
+ public static HttpRequest delete(final CharSequence url)
740
+ throws HttpRequestException {
741
+ return new HttpRequest(url, METHOD_DELETE);
742
+ }
743
+
744
+ /**
745
+ * Start a 'DELETE' request to the given URL
746
+ *
747
+ * @param url
748
+ * @return request
749
+ * @throws HttpRequestException
750
+ */
751
+ public static HttpRequest delete(final URL url) throws HttpRequestException {
752
+ return new HttpRequest(url, METHOD_DELETE);
753
+ }
754
+
755
+ /**
756
+ * Start a 'DELETE' request to the given URL along with the query params
757
+ *
758
+ * @param baseUrl
759
+ * @param params The query parameters to include as part of the baseUrl
760
+ * @param encode true to encode the full URL
761
+ * @return request
762
+ * @see #append(CharSequence, Map)
763
+ * @see #encode(CharSequence)
764
+ */
765
+ public static HttpRequest delete(final CharSequence baseUrl,
766
+ final Map<?, ?> params, final boolean encode) {
767
+ String url = append(baseUrl, params);
768
+ return delete(encode ? encode(url) : url);
769
+ }
770
+
771
+ /**
772
+ * Start a 'DELETE' request to the given URL along with the query params
773
+ *
774
+ * @param baseUrl
775
+ * @param encode true to encode the full URL
776
+ * @param params the name/value query parameter pairs to include as part of the
777
+ * baseUrl
778
+ * @return request
779
+ * @see #append(CharSequence, Object...)
780
+ * @see #encode(CharSequence)
781
+ */
782
+ public static HttpRequest delete(final CharSequence baseUrl,
783
+ final boolean encode, final Object... params) {
784
+ String url = append(baseUrl, params);
785
+ return delete(encode ? encode(url) : url);
786
+ }
787
+
788
+ /**
789
+ * Start a 'HEAD' request to the given URL
790
+ *
791
+ * @param url
792
+ * @return request
793
+ * @throws HttpRequestException
794
+ */
795
+ public static HttpRequest head(final CharSequence url)
796
+ throws HttpRequestException {
797
+ return new HttpRequest(url, METHOD_HEAD);
798
+ }
799
+
800
+ /**
801
+ * Start a 'HEAD' request to the given URL
802
+ *
803
+ * @param url
804
+ * @return request
805
+ * @throws HttpRequestException
806
+ */
807
+ public static HttpRequest head(final URL url) throws HttpRequestException {
808
+ return new HttpRequest(url, METHOD_HEAD);
809
+ }
810
+
811
+ /**
812
+ * Start a 'HEAD' request to the given URL along with the query params
813
+ *
814
+ * @param baseUrl
815
+ * @param params The query parameters to include as part of the baseUrl
816
+ * @param encode true to encode the full URL
817
+ * @return request
818
+ * @see #append(CharSequence, Map)
819
+ * @see #encode(CharSequence)
820
+ */
821
+ public static HttpRequest head(final CharSequence baseUrl,
822
+ final Map<?, ?> params, final boolean encode) {
823
+ String url = append(baseUrl, params);
824
+ return head(encode ? encode(url) : url);
825
+ }
826
+
827
+ /**
828
+ * Start a 'GET' request to the given URL along with the query params
829
+ *
830
+ * @param baseUrl
831
+ * @param encode true to encode the full URL
832
+ * @param params the name/value query parameter pairs to include as part of the
833
+ * baseUrl
834
+ * @return request
835
+ * @see #append(CharSequence, Object...)
836
+ * @see #encode(CharSequence)
837
+ */
838
+ public static HttpRequest head(final CharSequence baseUrl,
839
+ final boolean encode, final Object... params) {
840
+ String url = append(baseUrl, params);
841
+ return head(encode ? encode(url) : url);
842
+ }
843
+
844
+ /**
845
+ * Start an 'OPTIONS' request to the given URL
846
+ *
847
+ * @param url
848
+ * @return request
849
+ * @throws HttpRequestException
850
+ */
851
+ public static HttpRequest options(final CharSequence url)
852
+ throws HttpRequestException {
853
+ return new HttpRequest(url, METHOD_OPTIONS);
854
+ }
855
+
856
+ /**
857
+ * Start an 'OPTIONS' request to the given URL
858
+ *
859
+ * @param url
860
+ * @return request
861
+ * @throws HttpRequestException
862
+ */
863
+ public static HttpRequest options(final URL url) throws HttpRequestException {
864
+ return new HttpRequest(url, METHOD_OPTIONS);
865
+ }
866
+
867
+ /**
868
+ * Start a 'TRACE' request to the given URL
869
+ *
870
+ * @param url
871
+ * @return request
872
+ * @throws HttpRequestException
873
+ */
874
+ public static HttpRequest trace(final CharSequence url)
875
+ throws HttpRequestException {
876
+ return new HttpRequest(url, METHOD_TRACE);
877
+ }
878
+
879
+ /**
880
+ * Start a 'TRACE' request to the given URL
881
+ *
882
+ * @param url
883
+ * @return request
884
+ * @throws HttpRequestException
885
+ */
886
+ public static HttpRequest trace(final URL url) throws HttpRequestException {
887
+ return new HttpRequest(url, METHOD_TRACE);
888
+ }
889
+
890
+ /**
891
+ * Set the 'http.keepAlive' property to the given value.
892
+ * <p>
893
+ * This setting will apply to all requests.
894
+ *
895
+ * @param keepAlive
896
+ */
897
+ public static void keepAlive(final boolean keepAlive) {
898
+ setProperty("http.keepAlive", Boolean.toString(keepAlive));
899
+ }
900
+
901
+ /**
902
+ * Set the 'http.maxConnections' property to the given value.
903
+ * <p>
904
+ * This setting will apply to all requests.
905
+ *
906
+ * @param maxConnections
907
+ */
908
+ public static void maxConnections(final int maxConnections) {
909
+ setProperty("http.maxConnections", Integer.toString(maxConnections));
910
+ }
911
+
912
+ /**
913
+ * Set the 'http.proxyHost' and 'https.proxyHost' properties to the given host
914
+ * value.
915
+ * <p>
916
+ * This setting will apply to all requests.
917
+ *
918
+ * @param host
919
+ */
920
+ public static void proxyHost(final String host) {
921
+ setProperty("http.proxyHost", host);
922
+ setProperty("https.proxyHost", host);
923
+ }
924
+
925
+ /**
926
+ * Set the 'http.proxyPort' and 'https.proxyPort' properties to the given port
927
+ * number.
928
+ * <p>
929
+ * This setting will apply to all requests.
930
+ *
931
+ * @param port
932
+ */
933
+ public static void proxyPort(final int port) {
934
+ final String portValue = Integer.toString(port);
935
+ setProperty("http.proxyPort", portValue);
936
+ setProperty("https.proxyPort", portValue);
937
+ }
938
+
939
+ /**
940
+ * Set the 'http.nonProxyHosts' property to the given host values.
941
+ * <p>
942
+ * Hosts will be separated by a '|' character.
943
+ * <p>
944
+ * This setting will apply to all requests.
945
+ *
946
+ * @param hosts
947
+ */
948
+ public static void nonProxyHosts(final String... hosts) {
949
+ if (hosts != null && hosts.length > 0) {
950
+ StringBuilder separated = new StringBuilder();
951
+ int last = hosts.length - 1;
952
+ for (int i = 0; i < last; i++)
953
+ separated.append(hosts[i]).append('|');
954
+ separated.append(hosts[last]);
955
+ setProperty("http.nonProxyHosts", separated.toString());
956
+ } else
957
+ setProperty("http.nonProxyHosts", null);
958
+ }
959
+
960
+ /**
961
+ * Set property to given value.
962
+ * <p>
963
+ * Specifying a null value will cause the property to be cleared
964
+ *
965
+ * @param name
966
+ * @param value
967
+ * @return previous value
968
+ */
969
+ private static String setProperty(final String name, final String value) {
970
+ final PrivilegedAction<String> action;
971
+ if (value != null)
972
+ action = new PrivilegedAction<String>() {
973
+
974
+ public String run() {
975
+ return System.setProperty(name, value);
976
+ }
977
+ };
978
+ else
979
+ action = new PrivilegedAction<String>() {
980
+
981
+ public String run() {
982
+ return System.clearProperty(name);
983
+ }
984
+ };
985
+ return AccessController.doPrivileged(action);
986
+ }
987
+
988
+ private Proxy createProxy() {
989
+ return new Proxy(HTTP, new InetSocketAddress(httpProxyHost, httpProxyPort));
990
+ }
991
+
992
+ private HttpURLConnection createConnection() {
993
+ try {
994
+ final HttpURLConnection connection;
995
+ if (httpProxyHost != null)
996
+ connection = CONNECTION_FACTORY.create(url, createProxy());
997
+ else
998
+ connection = CONNECTION_FACTORY.create(url);
999
+ connection.setRequestMethod(requestMethod);
1000
+ return connection;
1001
+ } catch (IOException e) {
1002
+ throw new HttpRequestException(e);
1003
+ }
1004
+ }
1005
+
1006
+ @Override
1007
+ public String toString() {
1008
+ return method() + ' ' + url();
1009
+ }
1010
+
1011
+ /**
1012
+ * Get underlying connection
1013
+ *
1014
+ * @return connection
1015
+ */
1016
+ public HttpURLConnection getConnection() {
1017
+ if (connection == null){
1018
+ connection = createConnection();
1019
+ if(DEBUG){
1020
+ Log.e(TAG, "----------getConnection------createConnection---->>>>" + connection);
1021
+ }
1022
+ }
1023
+ if(DEBUG){
1024
+ Log.e(TAG, "----------getConnection-------->>>>" + connection);
1025
+ }
1026
+ return connection;
1027
+ }
1028
+
1029
+ /**
1030
+ * Set whether or not to ignore exceptions that occur from calling
1031
+ * {@link Closeable#close()}
1032
+ * <p>
1033
+ * The default value of this setting is <code>true</code>
1034
+ *
1035
+ * @param ignore
1036
+ * @return this request
1037
+ */
1038
+ public HttpRequest ignoreCloseExceptions(final boolean ignore) {
1039
+ ignoreCloseExceptions = ignore;
1040
+ return this;
1041
+ }
1042
+
1043
+ /**
1044
+ * Get whether or not exceptions thrown by {@link Closeable#close()} are
1045
+ * ignored
1046
+ *
1047
+ * @return true if ignoring, false if throwing
1048
+ */
1049
+ public boolean ignoreCloseExceptions() {
1050
+ return ignoreCloseExceptions;
1051
+ }
1052
+
1053
+ /**
1054
+ * Get the status code of the response
1055
+ *
1056
+ * @return the response code
1057
+ * @throws HttpRequestException
1058
+ */
1059
+ public int code() throws HttpRequestException {
1060
+ try {
1061
+ closeOutput();
1062
+ return getConnection().getResponseCode();
1063
+ } catch (IOException e) {
1064
+ throw new HttpRequestException(e);
1065
+ }
1066
+ }
1067
+
1068
+ /**
1069
+ * Set the value of the given {@link AtomicInteger} to the status code of the
1070
+ * response
1071
+ *
1072
+ * @param output
1073
+ * @return this request
1074
+ * @throws HttpRequestException
1075
+ */
1076
+ public HttpRequest code(final AtomicInteger output)
1077
+ throws HttpRequestException {
1078
+ output.set(code());
1079
+ return this;
1080
+ }
1081
+
1082
+ /**
1083
+ * Is the response code a 200 OK?
1084
+ *
1085
+ * @return true if 200, false otherwise
1086
+ * @throws HttpRequestException
1087
+ */
1088
+ public boolean ok() throws HttpRequestException {
1089
+ return HTTP_OK == code();
1090
+ }
1091
+
1092
+ /**
1093
+ * Is the response code a 201 Created?
1094
+ *
1095
+ * @return true if 201, false otherwise
1096
+ * @throws HttpRequestException
1097
+ */
1098
+ public boolean created() throws HttpRequestException {
1099
+ return HTTP_CREATED == code();
1100
+ }
1101
+
1102
+ /**
1103
+ * Is the response code a 204 No Content?
1104
+ *
1105
+ * @return true if 204, false otherwise
1106
+ * @throws HttpRequestException
1107
+ */
1108
+ public boolean noContent() throws HttpRequestException {
1109
+ return HTTP_NO_CONTENT == code();
1110
+ }
1111
+
1112
+ /**
1113
+ * Is the response code a 500 Internal Server Error?
1114
+ *
1115
+ * @return true if 500, false otherwise
1116
+ * @throws HttpRequestException
1117
+ */
1118
+ public boolean serverError() throws HttpRequestException {
1119
+ return HTTP_INTERNAL_ERROR == code();
1120
+ }
1121
+
1122
+ /**
1123
+ * Is the response code a 400 Bad Request?
1124
+ *
1125
+ * @return true if 400, false otherwise
1126
+ * @throws HttpRequestException
1127
+ */
1128
+ public boolean badRequest() throws HttpRequestException {
1129
+ return HTTP_BAD_REQUEST == code();
1130
+ }
1131
+
1132
+ /**
1133
+ * Is the response code a 404 Not Found?
1134
+ *
1135
+ * @return true if 404, false otherwise
1136
+ * @throws HttpRequestException
1137
+ */
1138
+ public boolean notFound() throws HttpRequestException {
1139
+ return HTTP_NOT_FOUND == code();
1140
+ }
1141
+
1142
+ /**
1143
+ * Is the response code a 304 Not Modified?
1144
+ *
1145
+ * @return true if 304, false otherwise
1146
+ * @throws HttpRequestException
1147
+ */
1148
+ public boolean notModified() throws HttpRequestException {
1149
+ return HTTP_NOT_MODIFIED == code();
1150
+ }
1151
+
1152
+ /**
1153
+ * Get status message of the response
1154
+ *
1155
+ * @return message
1156
+ * @throws HttpRequestException
1157
+ */
1158
+ public String message() throws HttpRequestException {
1159
+ try {
1160
+ closeOutput();
1161
+ return getConnection().getResponseMessage();
1162
+ } catch (IOException e) {
1163
+ throw new HttpRequestException(e);
1164
+ }
1165
+ }
1166
+
1167
+ /**
1168
+ * Disconnect the connection
1169
+ *
1170
+ * @return this request
1171
+ */
1172
+ public HttpRequest disconnect() {
1173
+ getConnection().disconnect();
1174
+ return this;
1175
+ }
1176
+
1177
+ /**
1178
+ * Set chunked streaming mode to the given size
1179
+ *
1180
+ * @param size
1181
+ * @return this request
1182
+ */
1183
+ public HttpRequest chunk(final int size) {
1184
+ getConnection().setChunkedStreamingMode(size);
1185
+ return this;
1186
+ }
1187
+
1188
+ /**
1189
+ * Set the size used when buffering and copying between streams
1190
+ * <p>
1191
+ * This size is also used for send and receive buffers created for both char
1192
+ * and byte arrays
1193
+ * <p>
1194
+ * The default buffer size is 8,192 bytes
1195
+ *
1196
+ * @param size
1197
+ * @return this request
1198
+ */
1199
+ public HttpRequest bufferSize(final int size) {
1200
+ if (size < 1)
1201
+ throw new IllegalArgumentException("Size must be greater than zero");
1202
+ bufferSize = size;
1203
+ return this;
1204
+ }
1205
+
1206
+ /**
1207
+ * Get the configured buffer size
1208
+ * <p>
1209
+ * The default buffer size is 8,192 bytes
1210
+ *
1211
+ * @return buffer size
1212
+ */
1213
+ public int bufferSize() {
1214
+ return bufferSize;
1215
+ }
1216
+
1217
+ /**
1218
+ * Set whether or not the response body should be automatically uncompressed
1219
+ * when read from.
1220
+ * <p>
1221
+ * This will only affect requests that have the 'Content-Encoding' response
1222
+ * header set to 'gzip'.
1223
+ * <p>
1224
+ * This causes all receive methods to use a {@link GZIPInputStream} when
1225
+ * applicable so that higher level streams and readers can read the data
1226
+ * uncompressed.
1227
+ * <p>
1228
+ * Setting this option does not cause any request headers to be set
1229
+ * automatically so {@link #acceptGzipEncoding()} should be used in
1230
+ * conjunction with this setting to tell the server to gzip the response.
1231
+ *
1232
+ * @param uncompress
1233
+ * @return this request
1234
+ */
1235
+ public HttpRequest uncompress(final boolean uncompress) {
1236
+ this.uncompress = uncompress;
1237
+ return this;
1238
+ }
1239
+
1240
+ /**
1241
+ * Create byte array output stream
1242
+ *
1243
+ * @return stream
1244
+ */
1245
+ protected ByteArrayOutputStream byteStream() {
1246
+ final int size = contentLength();
1247
+ if (size > 0)
1248
+ return new ByteArrayOutputStream(size);
1249
+ else
1250
+ return new ByteArrayOutputStream();
1251
+ }
1252
+
1253
+ /**
1254
+ * Get response as {@link String} in given character set
1255
+ * <p>
1256
+ * This will fall back to using the UTF-8 character set if the given charset
1257
+ * is null
1258
+ *
1259
+ * @param charset
1260
+ * @return string
1261
+ * @throws HttpRequestException
1262
+ */
1263
+ public String body(final String charset) throws HttpRequestException {
1264
+ final ByteArrayOutputStream output = byteStream();
1265
+ try {
1266
+ copy(buffer(), output);
1267
+ return output.toString(getValidCharset(charset));
1268
+ } catch (IOException e) {
1269
+ throw new HttpRequestException(e);
1270
+ }
1271
+ }
1272
+
1273
+ /**
1274
+ * Get response as {@link String} using character set returned from
1275
+ * {@link #charset()}
1276
+ *
1277
+ * @return string
1278
+ * @throws HttpRequestException
1279
+ */
1280
+ public String body() throws HttpRequestException {
1281
+ return body(charset());
1282
+ }
1283
+
1284
+ /**
1285
+ * Get the response body as a {@link String} and set it as the value of the
1286
+ * given reference.
1287
+ *
1288
+ * @param output
1289
+ * @return this request
1290
+ * @throws HttpRequestException
1291
+ */
1292
+ public HttpRequest body(final AtomicReference<String> output) throws HttpRequestException {
1293
+ output.set(body());
1294
+ return this;
1295
+ }
1296
+
1297
+ /**
1298
+ * Get the response body as a {@link String} and set it as the value of the
1299
+ * given reference.
1300
+ *
1301
+ * @param output
1302
+ * @param charset
1303
+ * @return this request
1304
+ * @throws HttpRequestException
1305
+ */
1306
+ public HttpRequest body(final AtomicReference<String> output, final String charset) throws HttpRequestException {
1307
+ output.set(body(charset));
1308
+ return this;
1309
+ }
1310
+
1311
+ /**
1312
+ * Is the response body empty?
1313
+ *
1314
+ * @return true if the Content-Length response header is 0, false otherwise
1315
+ * @throws HttpRequestException
1316
+ */
1317
+ public boolean isBodyEmpty() throws HttpRequestException {
1318
+ return contentLength() == 0;
1319
+ }
1320
+
1321
+ /**
1322
+ * Get response as byte array
1323
+ *
1324
+ * @return byte array
1325
+ * @throws HttpRequestException
1326
+ */
1327
+ public byte[] bytes() throws HttpRequestException {
1328
+ final ByteArrayOutputStream output = byteStream();
1329
+ try {
1330
+ copy(buffer(), output);
1331
+ } catch (IOException e) {
1332
+ throw new HttpRequestException(e);
1333
+ }
1334
+ return output.toByteArray();
1335
+ }
1336
+
1337
+ /**
1338
+ * Get response in a buffered stream
1339
+ *
1340
+ * @return stream
1341
+ * @throws HttpRequestException
1342
+ * @see #bufferSize(int)
1343
+ */
1344
+ public BufferedInputStream buffer() throws HttpRequestException {
1345
+ return new BufferedInputStream(stream(), bufferSize);
1346
+ }
1347
+
1348
+ /**
1349
+ * Get stream to response body
1350
+ *
1351
+ * @return stream
1352
+ * @throws HttpRequestException
1353
+ */
1354
+ public InputStream stream() throws HttpRequestException {
1355
+ InputStream stream;
1356
+ if (code() < HTTP_BAD_REQUEST)
1357
+ try {
1358
+ stream = getConnection().getInputStream();
1359
+ } catch (IOException e) {
1360
+ throw new HttpRequestException(e);
1361
+ }
1362
+ else {
1363
+ stream = getConnection().getErrorStream();
1364
+ if (stream == null)
1365
+ try {
1366
+ stream = getConnection().getInputStream();
1367
+ } catch (IOException e) {
1368
+ if (contentLength() > 0)
1369
+ throw new HttpRequestException(e);
1370
+ else
1371
+ stream = new ByteArrayInputStream(new byte[0]);
1372
+ }
1373
+ }
1374
+
1375
+ if (!uncompress || !ENCODING_GZIP.equals(contentEncoding()))
1376
+ return stream;
1377
+ else
1378
+ try {
1379
+ return new GZIPInputStream(stream);
1380
+ } catch (IOException e) {
1381
+ throw new HttpRequestException(e);
1382
+ }
1383
+ }
1384
+
1385
+ /**
1386
+ * Get reader to response body using given character set.
1387
+ * <p>
1388
+ * This will fall back to using the UTF-8 character set if the given charset
1389
+ * is null
1390
+ *
1391
+ * @param charset
1392
+ * @return reader
1393
+ * @throws HttpRequestException
1394
+ */
1395
+ public InputStreamReader reader(final String charset)
1396
+ throws HttpRequestException {
1397
+ try {
1398
+ return new InputStreamReader(stream(), getValidCharset(charset));
1399
+ } catch (UnsupportedEncodingException e) {
1400
+ throw new HttpRequestException(e);
1401
+ }
1402
+ }
1403
+
1404
+ /**
1405
+ * Get reader to response body using the character set returned from
1406
+ * {@link #charset()}
1407
+ *
1408
+ * @return reader
1409
+ * @throws HttpRequestException
1410
+ */
1411
+ public InputStreamReader reader() throws HttpRequestException {
1412
+ return reader(charset());
1413
+ }
1414
+
1415
+ /**
1416
+ * Get buffered reader to response body using the given character set r and
1417
+ * the configured buffer size
1418
+ *
1419
+ * @param charset
1420
+ * @return reader
1421
+ * @throws HttpRequestException
1422
+ * @see #bufferSize(int)
1423
+ */
1424
+ public BufferedReader bufferedReader(final String charset)
1425
+ throws HttpRequestException {
1426
+ return new BufferedReader(reader(charset), bufferSize);
1427
+ }
1428
+
1429
+ /**
1430
+ * Get buffered reader to response body using the character set returned from
1431
+ * {@link #charset()} and the configured buffer size
1432
+ *
1433
+ * @return reader
1434
+ * @throws HttpRequestException
1435
+ * @see #bufferSize(int)
1436
+ */
1437
+ public BufferedReader bufferedReader() throws HttpRequestException {
1438
+ return bufferedReader(charset());
1439
+ }
1440
+
1441
+ /**
1442
+ * Stream response body to file
1443
+ *
1444
+ * @param file
1445
+ * @return this request
1446
+ * @throws HttpRequestException
1447
+ */
1448
+ public HttpRequest receive(final File file) throws HttpRequestException {
1449
+ final OutputStream output;
1450
+ try {
1451
+ output = new BufferedOutputStream(new FileOutputStream(file), bufferSize);
1452
+ } catch (FileNotFoundException e) {
1453
+ throw new HttpRequestException(e);
1454
+ }
1455
+ return new CloseOperation<HttpRequest>(output, ignoreCloseExceptions) {
1456
+
1457
+ @Override
1458
+ protected HttpRequest run() throws HttpRequestException, IOException {
1459
+ return receive(output);
1460
+ }
1461
+ }.call();
1462
+ }
1463
+
1464
+ /**
1465
+ * Stream response to given output stream
1466
+ *
1467
+ * @param output
1468
+ * @return this request
1469
+ * @throws HttpRequestException
1470
+ */
1471
+ public HttpRequest receive(final OutputStream output)
1472
+ throws HttpRequestException {
1473
+ try {
1474
+ return copy(buffer(), output);
1475
+ } catch (IOException e) {
1476
+ throw new HttpRequestException(e);
1477
+ }
1478
+ }
1479
+
1480
+ /**
1481
+ * Stream response to given print stream
1482
+ *
1483
+ * @param output
1484
+ * @return this request
1485
+ * @throws HttpRequestException
1486
+ */
1487
+ public HttpRequest receive(final PrintStream output)
1488
+ throws HttpRequestException {
1489
+ return receive((OutputStream) output);
1490
+ }
1491
+
1492
+ /**
1493
+ * Receive response into the given appendable
1494
+ *
1495
+ * @param appendable
1496
+ * @return this request
1497
+ * @throws HttpRequestException
1498
+ */
1499
+ public HttpRequest receive(final Appendable appendable)
1500
+ throws HttpRequestException {
1501
+ final BufferedReader reader = bufferedReader();
1502
+ return new CloseOperation<HttpRequest>(reader, ignoreCloseExceptions) {
1503
+
1504
+ @Override
1505
+ public HttpRequest run() throws IOException {
1506
+ final CharBuffer buffer = CharBuffer.allocate(bufferSize);
1507
+ int read;
1508
+ while ((read = reader.read(buffer)) != -1) {
1509
+ buffer.rewind();
1510
+ appendable.append(buffer, 0, read);
1511
+ buffer.rewind();
1512
+ }
1513
+ return HttpRequest.this;
1514
+ }
1515
+ }.call();
1516
+ }
1517
+
1518
+ /**
1519
+ * Receive response into the given writer
1520
+ *
1521
+ * @param writer
1522
+ * @return this request
1523
+ * @throws HttpRequestException
1524
+ */
1525
+ public HttpRequest receive(final Writer writer) throws HttpRequestException {
1526
+ final BufferedReader reader = bufferedReader();
1527
+ return new CloseOperation<HttpRequest>(reader, ignoreCloseExceptions) {
1528
+
1529
+ @Override
1530
+ public HttpRequest run() throws IOException {
1531
+ return copy(reader, writer);
1532
+ }
1533
+ }.call();
1534
+ }
1535
+
1536
+ /**
1537
+ * Set read timeout on connection to given value
1538
+ *
1539
+ * @param timeout
1540
+ * @return this request
1541
+ */
1542
+ public HttpRequest readTimeout(final int timeout) {
1543
+ getConnection().setReadTimeout(timeout);
1544
+ return this;
1545
+ }
1546
+
1547
+ /**
1548
+ * Set connect timeout on connection to given value
1549
+ *
1550
+ * @param timeout
1551
+ * @return this request
1552
+ */
1553
+ public HttpRequest connectTimeout(final int timeout) {
1554
+ getConnection().setConnectTimeout(timeout);
1555
+ return this;
1556
+ }
1557
+
1558
+ /**
1559
+ * Set header name to given value
1560
+ *
1561
+ * @param name
1562
+ * @param value
1563
+ * @return this request
1564
+ */
1565
+ public HttpRequest header(final String name, final String value) {
1566
+ getConnection().setRequestProperty(name, value);
1567
+ return this;
1568
+ }
1569
+
1570
+ /**
1571
+ * Set header name to given value
1572
+ *
1573
+ * @param name
1574
+ * @param value
1575
+ * @return this request
1576
+ */
1577
+ public HttpRequest header(final String name, final Number value) {
1578
+ return header(name, value != null ? value.toString() : null);
1579
+ }
1580
+
1581
+ /**
1582
+ * Set all headers found in given map where the keys are the header names and
1583
+ * the values are the header values
1584
+ *
1585
+ * @param headers
1586
+ * @return this request
1587
+ */
1588
+ public HttpRequest headers(final Map<String, String> headers) {
1589
+ if (!headers.isEmpty())
1590
+ for (Entry<String, String> header : headers.entrySet())
1591
+ header(header);
1592
+ return this;
1593
+ }
1594
+
1595
+ /**
1596
+ * Set header to have given entry's key as the name and value as the value
1597
+ *
1598
+ * @param header
1599
+ * @return this request
1600
+ */
1601
+ public HttpRequest header(final Entry<String, String> header) {
1602
+ return header(header.getKey(), header.getValue());
1603
+ }
1604
+
1605
+ /**
1606
+ * Get a response header
1607
+ *
1608
+ * @param name
1609
+ * @return response header
1610
+ * @throws HttpRequestException
1611
+ */
1612
+ public String header(final String name) throws HttpRequestException {
1613
+ closeOutputQuietly();
1614
+ return getConnection().getHeaderField(name);
1615
+ }
1616
+
1617
+ /**
1618
+ * Get all the response headers
1619
+ *
1620
+ * @return map of response header names to their value(s)
1621
+ * @throws HttpRequestException
1622
+ */
1623
+ public Map<String, List<String>> headers() throws HttpRequestException {
1624
+ closeOutputQuietly();
1625
+ return getConnection().getHeaderFields();
1626
+ }
1627
+
1628
+ /**
1629
+ * Get a date header from the response falling back to returning -1 if the
1630
+ * header is missing or parsing fails
1631
+ *
1632
+ * @param name
1633
+ * @return date, -1 on failures
1634
+ * @throws HttpRequestException
1635
+ */
1636
+ public long dateHeader(final String name) throws HttpRequestException {
1637
+ return dateHeader(name, -1L);
1638
+ }
1639
+
1640
+ /**
1641
+ * Get a date header from the response falling back to returning the given
1642
+ * default value if the header is missing or parsing fails
1643
+ *
1644
+ * @param name
1645
+ * @param defaultValue
1646
+ * @return date, default value on failures
1647
+ * @throws HttpRequestException
1648
+ */
1649
+ public long dateHeader(final String name, final long defaultValue)
1650
+ throws HttpRequestException {
1651
+ closeOutputQuietly();
1652
+ return getConnection().getHeaderFieldDate(name, defaultValue);
1653
+ }
1654
+
1655
+ /**
1656
+ * Get an integer header from the response falling back to returning -1 if the
1657
+ * header is missing or parsing fails
1658
+ *
1659
+ * @param name
1660
+ * @return header value as an integer, -1 when missing or parsing fails
1661
+ * @throws HttpRequestException
1662
+ */
1663
+ public int intHeader(final String name) throws HttpRequestException {
1664
+ return intHeader(name, -1);
1665
+ }
1666
+
1667
+ /**
1668
+ * Get an integer header value from the response falling back to the given
1669
+ * default value if the header is missing or if parsing fails
1670
+ *
1671
+ * @param name
1672
+ * @param defaultValue
1673
+ * @return header value as an integer, default value when missing or parsing
1674
+ * fails
1675
+ * @throws HttpRequestException
1676
+ */
1677
+ public int intHeader(final String name, final int defaultValue)
1678
+ throws HttpRequestException {
1679
+ closeOutputQuietly();
1680
+ return getConnection().getHeaderFieldInt(name, defaultValue);
1681
+ }
1682
+
1683
+ /**
1684
+ * Get all values of the given header from the response
1685
+ *
1686
+ * @param name
1687
+ * @return non-null but possibly empty array of {@link String} header values
1688
+ */
1689
+ public String[] headers(final String name) {
1690
+ final Map<String, List<String>> headers = headers();
1691
+ if (headers == null || headers.isEmpty())
1692
+ return EMPTY_STRINGS;
1693
+
1694
+ final List<String> values = headers.get(name);
1695
+ if (values != null && !values.isEmpty())
1696
+ return values.toArray(new String[values.size()]);
1697
+ else
1698
+ return EMPTY_STRINGS;
1699
+ }
1700
+
1701
+ /**
1702
+ * Get parameter with given name from header value in response
1703
+ *
1704
+ * @param headerName
1705
+ * @param paramName
1706
+ * @return parameter value or null if missing
1707
+ */
1708
+ public String parameter(final String headerName, final String paramName) {
1709
+ return getParam(header(headerName), paramName);
1710
+ }
1711
+
1712
+ /**
1713
+ * Get all parameters from header value in response
1714
+ * <p>
1715
+ * This will be all key=value pairs after the first ';' that are separated by
1716
+ * a ';'
1717
+ *
1718
+ * @param headerName
1719
+ * @return non-null but possibly empty map of parameter headers
1720
+ */
1721
+ public Map<String, String> parameters(final String headerName) {
1722
+ return getParams(header(headerName));
1723
+ }
1724
+
1725
+ /**
1726
+ * Get parameter values from header value
1727
+ *
1728
+ * @param header
1729
+ * @return parameter value or null if none
1730
+ */
1731
+ protected Map<String, String> getParams(final String header) {
1732
+ if (header == null || header.length() == 0)
1733
+ return Collections.emptyMap();
1734
+
1735
+ final int headerLength = header.length();
1736
+ int start = header.indexOf(';') + 1;
1737
+ if (start == 0 || start == headerLength)
1738
+ return Collections.emptyMap();
1739
+
1740
+ int end = header.indexOf(';', start);
1741
+ if (end == -1)
1742
+ end = headerLength;
1743
+
1744
+ Map<String, String> params = new LinkedHashMap<String, String>();
1745
+ while (start < end) {
1746
+ int nameEnd = header.indexOf('=', start);
1747
+ if (nameEnd != -1 && nameEnd < end) {
1748
+ String name = header.substring(start, nameEnd).trim();
1749
+ if (name.length() > 0) {
1750
+ String value = header.substring(nameEnd + 1, end).trim();
1751
+ int length = value.length();
1752
+ if (length != 0)
1753
+ if (length > 2 && '"' == value.charAt(0)
1754
+ && '"' == value.charAt(length - 1))
1755
+ params.put(name, value.substring(1, length - 1));
1756
+ else
1757
+ params.put(name, value);
1758
+ }
1759
+ }
1760
+
1761
+ start = end + 1;
1762
+ end = header.indexOf(';', start);
1763
+ if (end == -1)
1764
+ end = headerLength;
1765
+ }
1766
+
1767
+ return params;
1768
+ }
1769
+
1770
+ /**
1771
+ * Get parameter value from header value
1772
+ *
1773
+ * @param value
1774
+ * @param paramName
1775
+ * @return parameter value or null if none
1776
+ */
1777
+ protected String getParam(final String value, final String paramName) {
1778
+ if (value == null || value.length() == 0)
1779
+ return null;
1780
+
1781
+ final int length = value.length();
1782
+ int start = value.indexOf(';') + 1;
1783
+ if (start == 0 || start == length)
1784
+ return null;
1785
+
1786
+ int end = value.indexOf(';', start);
1787
+ if (end == -1)
1788
+ end = length;
1789
+
1790
+ while (start < end) {
1791
+ int nameEnd = value.indexOf('=', start);
1792
+ if (nameEnd != -1 && nameEnd < end
1793
+ && paramName.equals(value.substring(start, nameEnd).trim())) {
1794
+ String paramValue = value.substring(nameEnd + 1, end).trim();
1795
+ int valueLength = paramValue.length();
1796
+ if (valueLength != 0)
1797
+ if (valueLength > 2 && '"' == paramValue.charAt(0)
1798
+ && '"' == paramValue.charAt(valueLength - 1))
1799
+ return paramValue.substring(1, valueLength - 1);
1800
+ else
1801
+ return paramValue;
1802
+ }
1803
+
1804
+ start = end + 1;
1805
+ end = value.indexOf(';', start);
1806
+ if (end == -1)
1807
+ end = length;
1808
+ }
1809
+
1810
+ return null;
1811
+ }
1812
+
1813
+ /**
1814
+ * Get 'charset' parameter from 'Content-Type' response header
1815
+ *
1816
+ * @return charset or null if none
1817
+ */
1818
+ public String charset() {
1819
+ return parameter(HEADER_CONTENT_TYPE, PARAM_CHARSET);
1820
+ }
1821
+
1822
+ /**
1823
+ * Set the 'User-Agent' header to given value
1824
+ *
1825
+ * @param userAgent
1826
+ * @return this request
1827
+ */
1828
+ public HttpRequest userAgent(final String userAgent) {
1829
+ return header(HEADER_USER_AGENT, userAgent);
1830
+ }
1831
+
1832
+ /**
1833
+ * Set the 'Referer' header to given value
1834
+ *
1835
+ * @param referer
1836
+ * @return this request
1837
+ */
1838
+ public HttpRequest referer(final String referer) {
1839
+ return header(HEADER_REFERER, referer);
1840
+ }
1841
+
1842
+ /**
1843
+ * Set value of {@link HttpURLConnection#setUseCaches(boolean)}
1844
+ *
1845
+ * @param useCaches
1846
+ * @return this request
1847
+ */
1848
+ public HttpRequest useCaches(final boolean useCaches) {
1849
+ getConnection().setUseCaches(useCaches);
1850
+ return this;
1851
+ }
1852
+
1853
+ /**
1854
+ * Set the 'Accept-Encoding' header to given value
1855
+ *
1856
+ * @param acceptEncoding
1857
+ * @return this request
1858
+ */
1859
+ public HttpRequest acceptEncoding(final String acceptEncoding) {
1860
+ return header(HEADER_ACCEPT_ENCODING, acceptEncoding);
1861
+ }
1862
+
1863
+ /**
1864
+ * Set the 'Accept-Encoding' header to 'gzip'
1865
+ *
1866
+ * @return this request
1867
+ * @see #uncompress(boolean)
1868
+ */
1869
+ public HttpRequest acceptGzipEncoding() {
1870
+ return acceptEncoding(ENCODING_GZIP);
1871
+ }
1872
+
1873
+ /**
1874
+ * Set the 'Accept-Charset' header to given value
1875
+ *
1876
+ * @param acceptCharset
1877
+ * @return this request
1878
+ */
1879
+ public HttpRequest acceptCharset(final String acceptCharset) {
1880
+ return header(HEADER_ACCEPT_CHARSET, acceptCharset);
1881
+ }
1882
+
1883
+ /**
1884
+ * Get the 'Content-Encoding' header from the response
1885
+ *
1886
+ * @return this request
1887
+ */
1888
+ public String contentEncoding() {
1889
+ return header(HEADER_CONTENT_ENCODING);
1890
+ }
1891
+
1892
+ /**
1893
+ * Get the 'Server' header from the response
1894
+ *
1895
+ * @return server
1896
+ */
1897
+ public String server() {
1898
+ return header(HEADER_SERVER);
1899
+ }
1900
+
1901
+ /**
1902
+ * Get the 'Date' header from the response
1903
+ *
1904
+ * @return date value, -1 on failures
1905
+ */
1906
+ public long date() {
1907
+ return dateHeader(HEADER_DATE);
1908
+ }
1909
+
1910
+ /**
1911
+ * Get the 'Cache-Control' header from the response
1912
+ *
1913
+ * @return cache control
1914
+ */
1915
+ public String cacheControl() {
1916
+ return header(HEADER_CACHE_CONTROL);
1917
+ }
1918
+
1919
+ /**
1920
+ * Get the 'ETag' header from the response
1921
+ *
1922
+ * @return entity tag
1923
+ */
1924
+ public String eTag() {
1925
+ return header(HEADER_ETAG);
1926
+ }
1927
+
1928
+ /**
1929
+ * Get the 'Expires' header from the response
1930
+ *
1931
+ * @return expires value, -1 on failures
1932
+ */
1933
+ public long expires() {
1934
+ return dateHeader(HEADER_EXPIRES);
1935
+ }
1936
+
1937
+ /**
1938
+ * Get the 'Last-Modified' header from the response
1939
+ *
1940
+ * @return last modified value, -1 on failures
1941
+ */
1942
+ public long lastModified() {
1943
+ return dateHeader(HEADER_LAST_MODIFIED);
1944
+ }
1945
+
1946
+ /**
1947
+ * Get the 'Location' header from the response
1948
+ *
1949
+ * @return location
1950
+ */
1951
+ public String location() {
1952
+ return header(HEADER_LOCATION);
1953
+ }
1954
+
1955
+ /**
1956
+ * Set the 'Authorization' header to given value
1957
+ *
1958
+ * @param authorization
1959
+ * @return this request
1960
+ */
1961
+ public HttpRequest authorization(final String authorization) {
1962
+ return header(HEADER_AUTHORIZATION, authorization);
1963
+ }
1964
+
1965
+ /**
1966
+ * Set the 'Proxy-Authorization' header to given value
1967
+ *
1968
+ * @param proxyAuthorization
1969
+ * @return this request
1970
+ */
1971
+ public HttpRequest proxyAuthorization(final String proxyAuthorization) {
1972
+ return header(HEADER_PROXY_AUTHORIZATION, proxyAuthorization);
1973
+ }
1974
+
1975
+ /**
1976
+ * Set the 'Authorization' header to given values in Basic authentication
1977
+ * format
1978
+ *
1979
+ * @param name
1980
+ * @param password
1981
+ * @return this request
1982
+ */
1983
+ public HttpRequest basic(final String name, final String password) {
1984
+ return authorization("Basic " + Base64.encode(name + ':' + password));
1985
+ }
1986
+
1987
+ /**
1988
+ * Set the 'Proxy-Authorization' header to given values in Basic authentication
1989
+ * format
1990
+ *
1991
+ * @param name
1992
+ * @param password
1993
+ * @return this request
1994
+ */
1995
+ public HttpRequest proxyBasic(final String name, final String password) {
1996
+ return proxyAuthorization("Basic " + Base64.encode(name + ':' + password));
1997
+ }
1998
+
1999
+ /**
2000
+ * Set the 'If-Modified-Since' request header to the given value
2001
+ *
2002
+ * @param ifModifiedSince
2003
+ * @return this request
2004
+ */
2005
+ public HttpRequest ifModifiedSince(final long ifModifiedSince) {
2006
+ getConnection().setIfModifiedSince(ifModifiedSince);
2007
+ return this;
2008
+ }
2009
+
2010
+ /**
2011
+ * Set the 'If-None-Match' request header to the given value
2012
+ *
2013
+ * @param ifNoneMatch
2014
+ * @return this request
2015
+ */
2016
+ public HttpRequest ifNoneMatch(final String ifNoneMatch) {
2017
+ return header(HEADER_IF_NONE_MATCH, ifNoneMatch);
2018
+ }
2019
+
2020
+ /**
2021
+ * Set the 'Content-Type' request header to the given value
2022
+ *
2023
+ * @param contentType
2024
+ * @return this request
2025
+ */
2026
+ public HttpRequest contentType(final String contentType) {
2027
+ return contentType(contentType, null);
2028
+ }
2029
+
2030
+ /**
2031
+ * Set the 'Content-Type' request header to the given value and charset
2032
+ *
2033
+ * @param contentType
2034
+ * @param charset
2035
+ * @return this request
2036
+ */
2037
+ public HttpRequest contentType(final String contentType, final String charset) {
2038
+ if (charset != null && charset.length() > 0) {
2039
+ final String separator = "; " + PARAM_CHARSET + '=';
2040
+ return header(HEADER_CONTENT_TYPE, contentType + separator + charset);
2041
+ } else
2042
+ return header(HEADER_CONTENT_TYPE, contentType);
2043
+ }
2044
+
2045
+ /**
2046
+ * Get the 'Content-Type' header from the response
2047
+ *
2048
+ * @return response header value
2049
+ */
2050
+ public String contentType() {
2051
+ return header(HEADER_CONTENT_TYPE);
2052
+ }
2053
+
2054
+ /**
2055
+ * Get the 'Content-Length' header from the response
2056
+ *
2057
+ * @return response header value
2058
+ */
2059
+ public int contentLength() {
2060
+ return intHeader(HEADER_CONTENT_LENGTH);
2061
+ }
2062
+
2063
+ /**
2064
+ * Set the 'Content-Length' request header to the given value
2065
+ *
2066
+ * @param contentLength
2067
+ * @return this request
2068
+ */
2069
+ public HttpRequest contentLength(final String contentLength) {
2070
+ return contentLength(Integer.parseInt(contentLength));
2071
+ }
2072
+
2073
+ /**
2074
+ * Set the 'Content-Length' request header to the given value
2075
+ *
2076
+ * @param contentLength
2077
+ * @return this request
2078
+ */
2079
+ public HttpRequest contentLength(final int contentLength) {
2080
+ getConnection().setFixedLengthStreamingMode(contentLength);
2081
+ return this;
2082
+ }
2083
+
2084
+ /**
2085
+ * Set the 'Accept' header to given value
2086
+ *
2087
+ * @param accept
2088
+ * @return this request
2089
+ */
2090
+ public HttpRequest accept(final String accept) {
2091
+ return header(HEADER_ACCEPT, accept);
2092
+ }
2093
+
2094
+ /**
2095
+ * Set the 'Accept' header to 'application/json'
2096
+ *
2097
+ * @return this request
2098
+ */
2099
+ public HttpRequest acceptJson() {
2100
+ return accept(CONTENT_TYPE_JSON);
2101
+ }
2102
+
2103
+ /**
2104
+ * Copy from input stream to output stream
2105
+ *
2106
+ * @param input
2107
+ * @param output
2108
+ * @return this request
2109
+ * @throws IOException
2110
+ */
2111
+ protected HttpRequest copy(final InputStream input, final OutputStream output)
2112
+ throws IOException {
2113
+ return new CloseOperation<HttpRequest>(input, ignoreCloseExceptions) {
2114
+
2115
+ @Override
2116
+ public HttpRequest run() throws IOException {
2117
+ final byte[] buffer = new byte[bufferSize];
2118
+ int read;
2119
+ while ((read = input.read(buffer)) != -1) {
2120
+ output.write(buffer, 0, read);
2121
+ totalWritten += read;
2122
+ progress.onUpload(totalWritten, totalSize);
2123
+ }
2124
+ return HttpRequest.this;
2125
+ }
2126
+ }.call();
2127
+ }
2128
+
2129
+ /**
2130
+ * Copy from reader to writer
2131
+ *
2132
+ * @param input
2133
+ * @param output
2134
+ * @return this request
2135
+ * @throws IOException
2136
+ */
2137
+ protected HttpRequest copy(final Reader input, final Writer output)
2138
+ throws IOException {
2139
+ return new CloseOperation<HttpRequest>(input, ignoreCloseExceptions) {
2140
+
2141
+ @Override
2142
+ public HttpRequest run() throws IOException {
2143
+ final char[] buffer = new char[bufferSize];
2144
+ int read;
2145
+ while ((read = input.read(buffer)) != -1) {
2146
+ output.write(buffer, 0, read);
2147
+ totalWritten += read;
2148
+ progress.onUpload(totalWritten, -1);
2149
+ }
2150
+ return HttpRequest.this;
2151
+ }
2152
+ }.call();
2153
+ }
2154
+
2155
+ /**
2156
+ * Set the UploadProgress callback for this request
2157
+ *
2158
+ * @param callback
2159
+ * @return this request
2160
+ */
2161
+ public HttpRequest progress(final UploadProgress callback) {
2162
+ if (callback == null)
2163
+ progress = UploadProgress.DEFAULT;
2164
+ else
2165
+ progress = callback;
2166
+ return this;
2167
+ }
2168
+
2169
+ public HttpRequest incrementTotalSize(final long size) {
2170
+ if (totalSize == -1)
2171
+ totalSize = 0;
2172
+ totalSize += size;
2173
+ return this;
2174
+ }
2175
+
2176
+ /**
2177
+ * Close output stream
2178
+ *
2179
+ * @return this request
2180
+ * @throws HttpRequestException
2181
+ * @throws IOException
2182
+ */
2183
+ protected HttpRequest closeOutput() throws IOException {
2184
+ if (output == null)
2185
+ return this;
2186
+ if (multipart)
2187
+ output.write(CRLF + "--" + BOUNDARY + "--" + CRLF);
2188
+ if (ignoreCloseExceptions)
2189
+ try {
2190
+ output.close();
2191
+ } catch (IOException ignored) {
2192
+ // Ignored
2193
+ }
2194
+ else
2195
+ output.close();
2196
+ output = null;
2197
+ //liulipeng
2198
+ progress(null);
2199
+ return this;
2200
+ }
2201
+
2202
+ /**
2203
+ * Call {@link #closeOutput()} and re-throw a caught {@link IOException}s as
2204
+ * an {@link HttpRequestException}
2205
+ *
2206
+ * @return this request
2207
+ * @throws HttpRequestException
2208
+ */
2209
+ protected HttpRequest closeOutputQuietly() throws HttpRequestException {
2210
+ try {
2211
+ return closeOutput();
2212
+ } catch (IOException e) {
2213
+ throw new HttpRequestException(e);
2214
+ }
2215
+ }
2216
+
2217
+ /**
2218
+ * Open output stream
2219
+ *
2220
+ * @return this request
2221
+ * @throws IOException
2222
+ */
2223
+ protected HttpRequest openOutput() throws IOException {
2224
+ if (output != null)
2225
+ return this;
2226
+ getConnection().setDoOutput(true);
2227
+ final String charset = getParam(
2228
+ getConnection().getRequestProperty(HEADER_CONTENT_TYPE), PARAM_CHARSET);
2229
+ output = new RequestOutputStream(getConnection().getOutputStream(), charset,
2230
+ bufferSize);
2231
+ return this;
2232
+ }
2233
+
2234
+ /**
2235
+ * Start part of a multipart
2236
+ *
2237
+ * @return this request
2238
+ * @throws IOException
2239
+ */
2240
+ protected HttpRequest startPart() throws IOException {
2241
+ if (!multipart) {
2242
+ multipart = true;
2243
+ contentType(CONTENT_TYPE_MULTIPART).openOutput();
2244
+ output.write("--" + BOUNDARY + CRLF);
2245
+ } else
2246
+ output.write(CRLF + "--" + BOUNDARY + CRLF);
2247
+ return this;
2248
+ }
2249
+
2250
+ /**
2251
+ * Write part header
2252
+ *
2253
+ * @param name
2254
+ * @param filename
2255
+ * @return this request
2256
+ * @throws IOException
2257
+ */
2258
+ protected HttpRequest writePartHeader(final String name, final String filename)
2259
+ throws IOException {
2260
+ return writePartHeader(name, filename, null);
2261
+ }
2262
+
2263
+ /**
2264
+ * Write part header
2265
+ *
2266
+ * @param name
2267
+ * @param filename
2268
+ * @param contentType
2269
+ * @return this request
2270
+ * @throws IOException
2271
+ */
2272
+ protected HttpRequest writePartHeader(final String name,
2273
+ final String filename, final String contentType) throws IOException {
2274
+ final StringBuilder partBuffer = new StringBuilder();
2275
+ partBuffer.append("form-data; name=\"").append(name);
2276
+ if (filename != null)
2277
+ partBuffer.append("\"; filename=\"").append(filename);
2278
+ partBuffer.append('"');
2279
+ partHeader("Content-Disposition", partBuffer.toString());
2280
+ if (contentType != null)
2281
+ partHeader(HEADER_CONTENT_TYPE, contentType);
2282
+ return send(CRLF);
2283
+ }
2284
+
2285
+ /**
2286
+ * Write part of a multipart request to the request body
2287
+ *
2288
+ * @param name
2289
+ * @param part
2290
+ * @return this request
2291
+ */
2292
+ public HttpRequest part(final String name, final String part) {
2293
+ return part(name, null, part);
2294
+ }
2295
+
2296
+ /**
2297
+ * Write part of a multipart request to the request body
2298
+ *
2299
+ * @param name
2300
+ * @param filename
2301
+ * @param part
2302
+ * @return this request
2303
+ * @throws HttpRequestException
2304
+ */
2305
+ public HttpRequest part(final String name, final String filename,
2306
+ final String part) throws HttpRequestException {
2307
+ return part(name, filename, null, part);
2308
+ }
2309
+
2310
+ /**
2311
+ * Write part of a multipart request to the request body
2312
+ *
2313
+ * @param name
2314
+ * @param filename
2315
+ * @param contentType value of the Content-Type part header
2316
+ * @param part
2317
+ * @return this request
2318
+ * @throws HttpRequestException
2319
+ */
2320
+ public HttpRequest part(final String name, final String filename,
2321
+ final String contentType, final String part) throws HttpRequestException {
2322
+ try {
2323
+ startPart();
2324
+ writePartHeader(name, filename, contentType);
2325
+ output.write(part);
2326
+ } catch (IOException e) {
2327
+ throw new HttpRequestException(e);
2328
+ }
2329
+ return this;
2330
+ }
2331
+
2332
+ /**
2333
+ * Write part of a multipart request to the request body
2334
+ *
2335
+ * @param name
2336
+ * @param part
2337
+ * @return this request
2338
+ * @throws HttpRequestException
2339
+ */
2340
+ public HttpRequest part(final String name, final Number part)
2341
+ throws HttpRequestException {
2342
+ return part(name, null, part);
2343
+ }
2344
+
2345
+ /**
2346
+ * Write part of a multipart request to the request body
2347
+ *
2348
+ * @param name
2349
+ * @param filename
2350
+ * @param part
2351
+ * @return this request
2352
+ * @throws HttpRequestException
2353
+ */
2354
+ public HttpRequest part(final String name, final String filename,
2355
+ final Number part) throws HttpRequestException {
2356
+ return part(name, filename, part != null ? part.toString() : null);
2357
+ }
2358
+
2359
+ /**
2360
+ * Write part of a multipart request to the request body
2361
+ *
2362
+ * @param name
2363
+ * @param part
2364
+ * @return this request
2365
+ * @throws HttpRequestException
2366
+ */
2367
+ public HttpRequest part(final String name, final File part)
2368
+ throws HttpRequestException {
2369
+ return part(name, null, part);
2370
+ }
2371
+
2372
+ /**
2373
+ * Write part of a multipart request to the request body
2374
+ *
2375
+ * @param name
2376
+ * @param filename
2377
+ * @param part
2378
+ * @return this request
2379
+ * @throws HttpRequestException
2380
+ */
2381
+ public HttpRequest part(final String name, final String filename,
2382
+ final File part) throws HttpRequestException {
2383
+ return part(name, filename, null, part);
2384
+ }
2385
+
2386
+ /**
2387
+ * Write part of a multipart request to the request body
2388
+ *
2389
+ * @param name
2390
+ * @param filename
2391
+ * @param contentType value of the Content-Type part header
2392
+ * @param part
2393
+ * @return this request
2394
+ * @throws HttpRequestException
2395
+ */
2396
+ public HttpRequest part(final String name, final String filename,
2397
+ final String contentType, final File part) throws HttpRequestException {
2398
+ final InputStream stream;
2399
+ try {
2400
+ stream = new BufferedInputStream(new FileInputStream(part));
2401
+ incrementTotalSize(part.length());
2402
+ } catch (IOException e) {
2403
+ throw new HttpRequestException(e);
2404
+ }
2405
+ return part(name, filename, contentType, stream);
2406
+ }
2407
+
2408
+ /**
2409
+ * Write part of a multipart request to the request body
2410
+ *
2411
+ * @param name
2412
+ * @param part
2413
+ * @return this request
2414
+ * @throws HttpRequestException
2415
+ */
2416
+ public HttpRequest part(final String name, final InputStream part)
2417
+ throws HttpRequestException {
2418
+ return part(name, null, null, part);
2419
+ }
2420
+
2421
+ /**
2422
+ * Write part of a multipart request to the request body
2423
+ *
2424
+ * @param name
2425
+ * @param filename
2426
+ * @param contentType value of the Content-Type part header
2427
+ * @param part
2428
+ * @return this request
2429
+ * @throws HttpRequestException
2430
+ */
2431
+ public HttpRequest part(final String name, final String filename,
2432
+ final String contentType, final InputStream part)
2433
+ throws HttpRequestException {
2434
+ try {
2435
+ startPart();
2436
+ writePartHeader(name, filename, contentType);
2437
+ copy(part, output);
2438
+ } catch (IOException e) {
2439
+ throw new HttpRequestException(e);
2440
+ }
2441
+ return this;
2442
+ }
2443
+
2444
+ /**
2445
+ * Write a multipart header to the response body
2446
+ *
2447
+ * @param name
2448
+ * @param value
2449
+ * @return this request
2450
+ * @throws HttpRequestException
2451
+ */
2452
+ public HttpRequest partHeader(final String name, final String value)
2453
+ throws HttpRequestException {
2454
+ return send(name).send(": ").send(value).send(CRLF);
2455
+ }
2456
+
2457
+ /**
2458
+ * Write contents of file to request body
2459
+ *
2460
+ * @param input
2461
+ * @return this request
2462
+ * @throws HttpRequestException
2463
+ */
2464
+ public HttpRequest send(final File input) throws HttpRequestException {
2465
+ final InputStream stream;
2466
+ try {
2467
+ stream = new BufferedInputStream(new FileInputStream(input));
2468
+ incrementTotalSize(input.length());
2469
+ } catch (FileNotFoundException e) {
2470
+ throw new HttpRequestException(e);
2471
+ }
2472
+ return send(stream);
2473
+ }
2474
+
2475
+ /**
2476
+ * Write byte array to request body
2477
+ *
2478
+ * @param input
2479
+ * @return this request
2480
+ * @throws HttpRequestException
2481
+ */
2482
+ public HttpRequest send(final byte[] input) throws HttpRequestException {
2483
+ if (input != null)
2484
+ incrementTotalSize(input.length);
2485
+ return send(new ByteArrayInputStream(input));
2486
+ }
2487
+
2488
+ /**
2489
+ * Write stream to request body
2490
+ * <p>
2491
+ * The given stream will be closed once sending completes
2492
+ *
2493
+ * @param input
2494
+ * @return this request
2495
+ * @throws HttpRequestException
2496
+ */
2497
+ public HttpRequest send(final InputStream input) throws HttpRequestException {
2498
+ try {
2499
+ openOutput();
2500
+ copy(input, output);
2501
+ } catch (IOException e) {
2502
+ throw new HttpRequestException(e);
2503
+ }
2504
+ return this;
2505
+ }
2506
+
2507
+ /**
2508
+ * Write reader to request body
2509
+ * <p>
2510
+ * The given reader will be closed once sending completes
2511
+ *
2512
+ * @param input
2513
+ * @return this request
2514
+ * @throws HttpRequestException
2515
+ */
2516
+ public HttpRequest send(final Reader input) throws HttpRequestException {
2517
+ try {
2518
+ openOutput();
2519
+ } catch (IOException e) {
2520
+ throw new HttpRequestException(e);
2521
+ }
2522
+ final Writer writer = new OutputStreamWriter(output,
2523
+ output.encoder.charset());
2524
+ return new FlushOperation<HttpRequest>(writer) {
2525
+
2526
+ @Override
2527
+ protected HttpRequest run() throws IOException {
2528
+ return copy(input, writer);
2529
+ }
2530
+ }.call();
2531
+ }
2532
+
2533
+ /**
2534
+ * Write char sequence to request body
2535
+ * <p>
2536
+ * The charset configured via {@link #contentType(String)} will be used and
2537
+ * UTF-8 will be used if it is unset.
2538
+ *
2539
+ * @param value
2540
+ * @return this request
2541
+ * @throws HttpRequestException
2542
+ */
2543
+ public HttpRequest send(final CharSequence value) throws HttpRequestException {
2544
+ try {
2545
+ openOutput();
2546
+ output.write(value.toString());
2547
+ } catch (IOException e) {
2548
+ throw new HttpRequestException(e);
2549
+ }
2550
+ return this;
2551
+ }
2552
+
2553
+ /**
2554
+ * Create writer to request output stream
2555
+ *
2556
+ * @return writer
2557
+ * @throws HttpRequestException
2558
+ */
2559
+ public OutputStreamWriter writer() throws HttpRequestException {
2560
+ try {
2561
+ openOutput();
2562
+ return new OutputStreamWriter(output, output.encoder.charset());
2563
+ } catch (IOException e) {
2564
+ throw new HttpRequestException(e);
2565
+ }
2566
+ }
2567
+
2568
+ /**
2569
+ * Write the values in the map as form data to the request body
2570
+ * <p>
2571
+ * The pairs specified will be URL-encoded in UTF-8 and sent with the
2572
+ * 'application/x-www-form-urlencoded' content-type
2573
+ *
2574
+ * @param values
2575
+ * @return this request
2576
+ * @throws HttpRequestException
2577
+ */
2578
+ public HttpRequest form(final Map<?, ?> values) throws HttpRequestException {
2579
+ return form(values, CHARSET_UTF8);
2580
+ }
2581
+
2582
+ /**
2583
+ * Write the key and value in the entry as form data to the request body
2584
+ * <p>
2585
+ * The pair specified will be URL-encoded in UTF-8 and sent with the
2586
+ * 'application/x-www-form-urlencoded' content-type
2587
+ *
2588
+ * @param entry
2589
+ * @return this request
2590
+ * @throws HttpRequestException
2591
+ */
2592
+ public HttpRequest form(final Entry<?, ?> entry) throws HttpRequestException {
2593
+ return form(entry, CHARSET_UTF8);
2594
+ }
2595
+
2596
+ /**
2597
+ * Write the key and value in the entry as form data to the request body
2598
+ * <p>
2599
+ * The pair specified will be URL-encoded and sent with the
2600
+ * 'application/x-www-form-urlencoded' content-type
2601
+ *
2602
+ * @param entry
2603
+ * @param charset
2604
+ * @return this request
2605
+ * @throws HttpRequestException
2606
+ */
2607
+ public HttpRequest form(final Entry<?, ?> entry, final String charset)
2608
+ throws HttpRequestException {
2609
+ return form(entry.getKey(), entry.getValue(), charset);
2610
+ }
2611
+
2612
+ /**
2613
+ * Write the name/value pair as form data to the request body
2614
+ * <p>
2615
+ * The pair specified will be URL-encoded in UTF-8 and sent with the
2616
+ * 'application/x-www-form-urlencoded' content-type
2617
+ *
2618
+ * @param name
2619
+ * @param value
2620
+ * @return this request
2621
+ * @throws HttpRequestException
2622
+ */
2623
+ public HttpRequest form(final Object name, final Object value)
2624
+ throws HttpRequestException {
2625
+ return form(name, value, CHARSET_UTF8);
2626
+ }
2627
+
2628
+ /**
2629
+ * Write the name/value pair as form data to the request body
2630
+ * <p>
2631
+ * The values specified will be URL-encoded and sent with the
2632
+ * 'application/x-www-form-urlencoded' content-type
2633
+ *
2634
+ * @param name
2635
+ * @param value
2636
+ * @param charset
2637
+ * @return this request
2638
+ * @throws HttpRequestException
2639
+ */
2640
+ public HttpRequest form(final Object name, final Object value, String charset)
2641
+ throws HttpRequestException {
2642
+ final boolean first = !form;
2643
+ if (first) {
2644
+ contentType(CONTENT_TYPE_FORM, charset);
2645
+ form = true;
2646
+ }
2647
+ charset = getValidCharset(charset);
2648
+ try {
2649
+ openOutput();
2650
+ if (!first)
2651
+ output.write('&');
2652
+ output.write(URLEncoder.encode(name.toString(), charset));
2653
+ output.write('=');
2654
+ if (value != null)
2655
+ output.write(URLEncoder.encode(value.toString(), charset));
2656
+ } catch (IOException e) {
2657
+ throw new HttpRequestException(e);
2658
+ }
2659
+ return this;
2660
+ }
2661
+
2662
+ /**
2663
+ * Write the values in the map as encoded form data to the request body
2664
+ *
2665
+ * @param values
2666
+ * @param charset
2667
+ * @return this request
2668
+ * @throws HttpRequestException
2669
+ */
2670
+ public HttpRequest form(final Map<?, ?> values, final String charset)
2671
+ throws HttpRequestException {
2672
+ if (!values.isEmpty())
2673
+ for (Entry<?, ?> entry : values.entrySet())
2674
+ form(entry, charset);
2675
+ return this;
2676
+ }
2677
+
2678
+ /**
2679
+ * Configure HTTPS connection to trust all certificates
2680
+ * <p>
2681
+ * This method does nothing if the current request is not a HTTPS request
2682
+ *
2683
+ * @return this request
2684
+ * @throws HttpRequestException
2685
+ */
2686
+ public HttpRequest trustAllCerts() throws HttpRequestException {
2687
+ final HttpURLConnection connection = getConnection();
2688
+ if (connection instanceof HttpsURLConnection)
2689
+ ((HttpsURLConnection) connection)
2690
+ .setSSLSocketFactory(getTrustedFactory());
2691
+ return this;
2692
+ }
2693
+
2694
+ /**
2695
+ * Configure HTTPS connection to trust all hosts using a custom
2696
+ * {@link HostnameVerifier} that always returns <code>true</code> for each
2697
+ * host verified
2698
+ * <p>
2699
+ * This method does nothing if the current request is not a HTTPS request
2700
+ *
2701
+ * @return this request
2702
+ */
2703
+ public HttpRequest trustAllHosts() {
2704
+ final HttpURLConnection connection = getConnection();
2705
+ if (connection instanceof HttpsURLConnection)
2706
+ ((HttpsURLConnection) connection)
2707
+ .setHostnameVerifier(getTrustedVerifier());
2708
+ return this;
2709
+ }
2710
+
2711
+ /**
2712
+ * Get the {@link URL} of this request's connection
2713
+ *
2714
+ * @return request URL
2715
+ */
2716
+ public URL url() {
2717
+ return getConnection().getURL();
2718
+ }
2719
+
2720
+ /**
2721
+ * Get the HTTP method of this request
2722
+ *
2723
+ * @return method
2724
+ */
2725
+ public String method() {
2726
+ return getConnection().getRequestMethod();
2727
+ }
2728
+
2729
+ /**
2730
+ * Configure an HTTP proxy on this connection. Use {{@link #proxyBasic(String, String)} if
2731
+ * this proxy requires basic authentication.
2732
+ *
2733
+ * @param proxyHost
2734
+ * @param proxyPort
2735
+ * @return this request
2736
+ */
2737
+ public HttpRequest useProxy(final String proxyHost, final int proxyPort) {
2738
+ if (connection != null)
2739
+ throw new IllegalStateException("The connection has already been created. This method must be called before reading or writing to the request.");
2740
+
2741
+ this.httpProxyHost = proxyHost;
2742
+ this.httpProxyPort = proxyPort;
2743
+ return this;
2744
+ }
2745
+
2746
+ /**
2747
+ * Set whether or not the underlying connection should follow redirects in
2748
+ * the response.
2749
+ *
2750
+ * @param followRedirects - true fo follow redirects, false to not.
2751
+ * @return this request
2752
+ */
2753
+ public HttpRequest followRedirects(final boolean followRedirects) {
2754
+ getConnection().setInstanceFollowRedirects(followRedirects);
2755
+ return this;
2756
+ }
2757
+
2758
+ /**
2759
+ * Creates {@link HttpURLConnection HTTP connections} for
2760
+ * {@link URL urls}.
2761
+ */
2762
+ public interface ConnectionFactory {
2763
+ /**
2764
+ * A {@link ConnectionFactory} which uses the built-in
2765
+ * {@link URL#openConnection()}
2766
+ */
2767
+ ConnectionFactory DEFAULT = new ConnectionFactory() {
2768
+ public HttpURLConnection create(URL url) throws IOException {
2769
+ return (HttpURLConnection) url.openConnection();
2770
+ }
2771
+
2772
+ public HttpURLConnection create(URL url, Proxy proxy) throws IOException {
2773
+ return (HttpURLConnection) url.openConnection(proxy);
2774
+ }
2775
+ };
2776
+
2777
+ /**
2778
+ * Open an {@link HttpURLConnection} for the specified {@link URL}.
2779
+ *
2780
+ * @throws IOException
2781
+ */
2782
+ HttpURLConnection create(URL url) throws IOException;
2783
+
2784
+ /**
2785
+ * Open an {@link HttpURLConnection} for the specified {@link URL}
2786
+ * and {@link Proxy}.
2787
+ *
2788
+ * @throws IOException
2789
+ */
2790
+ HttpURLConnection create(URL url, Proxy proxy) throws IOException;
2791
+ }
2792
+
2793
+ /**
2794
+ * Callback interface for reporting upload progress for a request.
2795
+ */
2796
+ public interface UploadProgress {
2797
+ UploadProgress DEFAULT = new UploadProgress() {
2798
+ public void onUpload(long uploaded, long total) {
2799
+ }
2800
+ };
2801
+
2802
+ /**
2803
+ * Callback invoked as data is uploaded by the request.
2804
+ *
2805
+ * @param uploaded The number of bytes already uploaded
2806
+ * @param total The total number of bytes that will be uploaded or -1 if
2807
+ * the length is unknown.
2808
+ */
2809
+ void onUpload(long uploaded, long total);
2810
+ }
2811
+
2812
+ /**
2813
+ * <p>
2814
+ * Encodes and decodes to and from Base64 notation.
2815
+ * </p>
2816
+ * <p>
2817
+ * I am placing this code in the Public Domain. Do with it as you will. This
2818
+ * software comes with no guarantees or warranties but with plenty of
2819
+ * well-wishing instead! Please visit <a
2820
+ * href="http://iharder.net/base64">http://iharder.net/base64</a> periodically
2821
+ * to check for updates or to contribute improvements.
2822
+ * </p>
2823
+ *
2824
+ * @author Robert Harder
2825
+ * @author rob@iharder.net
2826
+ * @version 2.3.7
2827
+ */
2828
+ public static class Base64 {
2829
+
2830
+ /**
2831
+ * The equals sign (=) as a byte.
2832
+ */
2833
+ private final static byte EQUALS_SIGN = (byte) '=';
2834
+
2835
+ /**
2836
+ * Preferred encoding.
2837
+ */
2838
+ private final static String PREFERRED_ENCODING = "US-ASCII";
2839
+
2840
+ /**
2841
+ * The 64 valid Base64 values.
2842
+ */
2843
+ private final static byte[] _STANDARD_ALPHABET = {(byte) 'A', (byte) 'B',
2844
+ (byte) 'C', (byte) 'D', (byte) 'E', (byte) 'F', (byte) 'G', (byte) 'H',
2845
+ (byte) 'I', (byte) 'J', (byte) 'K', (byte) 'L', (byte) 'M', (byte) 'N',
2846
+ (byte) 'O', (byte) 'P', (byte) 'Q', (byte) 'R', (byte) 'S', (byte) 'T',
2847
+ (byte) 'U', (byte) 'V', (byte) 'W', (byte) 'X', (byte) 'Y', (byte) 'Z',
2848
+ (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f',
2849
+ (byte) 'g', (byte) 'h', (byte) 'i', (byte) 'j', (byte) 'k', (byte) 'l',
2850
+ (byte) 'm', (byte) 'n', (byte) 'o', (byte) 'p', (byte) 'q', (byte) 'r',
2851
+ (byte) 's', (byte) 't', (byte) 'u', (byte) 'v', (byte) 'w', (byte) 'x',
2852
+ (byte) 'y', (byte) 'z', (byte) '0', (byte) '1', (byte) '2', (byte) '3',
2853
+ (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9',
2854
+ (byte) '+', (byte) '/'};
2855
+
2856
+ /**
2857
+ * Defeats instantiation.
2858
+ */
2859
+ private Base64() {
2860
+ }
2861
+
2862
+ /**
2863
+ * <p>
2864
+ * Encodes up to three bytes of the array <var>source</var> and writes the
2865
+ * resulting four Base64 bytes to <var>destination</var>. The source and
2866
+ * destination arrays can be manipulated anywhere along their length by
2867
+ * specifying <var>srcOffset</var> and <var>destOffset</var>. This method
2868
+ * does not check to make sure your arrays are large enough to accomodate
2869
+ * <var>srcOffset</var> + 3 for the <var>source</var> array or
2870
+ * <var>destOffset</var> + 4 for the <var>destination</var> array. The
2871
+ * actual number of significant bytes in your array is given by
2872
+ * <var>numSigBytes</var>.
2873
+ * </p>
2874
+ * <p>
2875
+ * This is the lowest level of the encoding methods with all possible
2876
+ * parameters.
2877
+ * </p>
2878
+ *
2879
+ * @param source the array to convert
2880
+ * @param srcOffset the index where conversion begins
2881
+ * @param numSigBytes the number of significant bytes in your array
2882
+ * @param destination the array to hold the conversion
2883
+ * @param destOffset the index where output will be put
2884
+ * @return the <var>destination</var> array
2885
+ * @since 1.3
2886
+ */
2887
+ private static byte[] encode3to4(byte[] source, int srcOffset,
2888
+ int numSigBytes, byte[] destination, int destOffset) {
2889
+
2890
+ byte[] ALPHABET = _STANDARD_ALPHABET;
2891
+
2892
+ int inBuff = (numSigBytes > 0 ? ((source[srcOffset] << 24) >>> 8) : 0)
2893
+ | (numSigBytes > 1 ? ((source[srcOffset + 1] << 24) >>> 16) : 0)
2894
+ | (numSigBytes > 2 ? ((source[srcOffset + 2] << 24) >>> 24) : 0);
2895
+
2896
+ switch (numSigBytes) {
2897
+ case 3:
2898
+ destination[destOffset] = ALPHABET[(inBuff >>> 18)];
2899
+ destination[destOffset + 1] = ALPHABET[(inBuff >>> 12) & 0x3f];
2900
+ destination[destOffset + 2] = ALPHABET[(inBuff >>> 6) & 0x3f];
2901
+ destination[destOffset + 3] = ALPHABET[(inBuff) & 0x3f];
2902
+ return destination;
2903
+
2904
+ case 2:
2905
+ destination[destOffset] = ALPHABET[(inBuff >>> 18)];
2906
+ destination[destOffset + 1] = ALPHABET[(inBuff >>> 12) & 0x3f];
2907
+ destination[destOffset + 2] = ALPHABET[(inBuff >>> 6) & 0x3f];
2908
+ destination[destOffset + 3] = EQUALS_SIGN;
2909
+ return destination;
2910
+
2911
+ case 1:
2912
+ destination[destOffset] = ALPHABET[(inBuff >>> 18)];
2913
+ destination[destOffset + 1] = ALPHABET[(inBuff >>> 12) & 0x3f];
2914
+ destination[destOffset + 2] = EQUALS_SIGN;
2915
+ destination[destOffset + 3] = EQUALS_SIGN;
2916
+ return destination;
2917
+
2918
+ default:
2919
+ return destination;
2920
+ }
2921
+ }
2922
+
2923
+ /**
2924
+ * Encode string as a byte array in Base64 annotation.
2925
+ *
2926
+ * @param string
2927
+ * @return The Base64-encoded data as a string
2928
+ */
2929
+ public static String encode(String string) {
2930
+ byte[] bytes;
2931
+ try {
2932
+ bytes = string.getBytes(PREFERRED_ENCODING);
2933
+ } catch (UnsupportedEncodingException e) {
2934
+ bytes = string.getBytes();
2935
+ }
2936
+ return encodeBytes(bytes);
2937
+ }
2938
+
2939
+ /**
2940
+ * Encodes a byte array into Base64 notation.
2941
+ *
2942
+ * @param source The data to convert
2943
+ * @return The Base64-encoded data as a String
2944
+ * @throws NullPointerException if source array is null
2945
+ * @throws IllegalArgumentException if source array, offset, or length are invalid
2946
+ * @since 2.0
2947
+ */
2948
+ public static String encodeBytes(byte[] source) {
2949
+ return encodeBytes(source, 0, source.length);
2950
+ }
2951
+
2952
+ /**
2953
+ * Encodes a byte array into Base64 notation.
2954
+ *
2955
+ * @param source The data to convert
2956
+ * @param off Offset in array where conversion should begin
2957
+ * @param len Length of data to convert
2958
+ * @return The Base64-encoded data as a String
2959
+ * @throws NullPointerException if source array is null
2960
+ * @throws IllegalArgumentException if source array, offset, or length are invalid
2961
+ * @since 2.0
2962
+ */
2963
+ public static String encodeBytes(byte[] source, int off, int len) {
2964
+ byte[] encoded = encodeBytesToBytes(source, off, len);
2965
+ try {
2966
+ return new String(encoded, PREFERRED_ENCODING);
2967
+ } catch (UnsupportedEncodingException uue) {
2968
+ return new String(encoded);
2969
+ }
2970
+ }
2971
+
2972
+ /**
2973
+ * Similar to {@link #encodeBytes(byte[], int, int)} but returns a byte
2974
+ * array instead of instantiating a String. This is more efficient if you're
2975
+ * working with I/O streams and have large data sets to encode.
2976
+ *
2977
+ * @param source The data to convert
2978
+ * @param off Offset in array where conversion should begin
2979
+ * @param len Length of data to convert
2980
+ * @return The Base64-encoded data as a String if there is an error
2981
+ * @throws NullPointerException if source array is null
2982
+ * @throws IllegalArgumentException if source array, offset, or length are invalid
2983
+ * @since 2.3.1
2984
+ */
2985
+ public static byte[] encodeBytesToBytes(byte[] source, int off, int len) {
2986
+
2987
+ if (source == null)
2988
+ throw new NullPointerException("Cannot serialize a null array.");
2989
+
2990
+ if (off < 0)
2991
+ throw new IllegalArgumentException("Cannot have negative offset: "
2992
+ + off);
2993
+
2994
+ if (len < 0)
2995
+ throw new IllegalArgumentException("Cannot have length offset: " + len);
2996
+
2997
+ if (off + len > source.length)
2998
+ throw new IllegalArgumentException(
2999
+ String
3000
+ .format(
3001
+ "Cannot have offset of %d and length of %d with array of length %d",
3002
+ off, len, source.length));
3003
+
3004
+ // Bytes needed for actual encoding
3005
+ int encLen = (len / 3) * 4 + (len % 3 > 0 ? 4 : 0);
3006
+
3007
+ byte[] outBuff = new byte[encLen];
3008
+
3009
+ int d = 0;
3010
+ int e = 0;
3011
+ int len2 = len - 2;
3012
+ for (; d < len2; d += 3, e += 4)
3013
+ encode3to4(source, d + off, 3, outBuff, e);
3014
+
3015
+ if (d < len) {
3016
+ encode3to4(source, d + off, len - d, outBuff, e);
3017
+ e += 4;
3018
+ }
3019
+
3020
+ if (e <= outBuff.length - 1) {
3021
+ byte[] finalOut = new byte[e];
3022
+ System.arraycopy(outBuff, 0, finalOut, 0, e);
3023
+ return finalOut;
3024
+ } else
3025
+ return outBuff;
3026
+ }
3027
+ }
3028
+
3029
+ /**
3030
+ * HTTP request exception whose cause is always an {@link IOException}
3031
+ */
3032
+ public static class HttpRequestException extends RuntimeException {
3033
+
3034
+ private static final long serialVersionUID = -1170466989781746231L;
3035
+
3036
+ /**
3037
+ * Create a new HttpRequestException with the given cause
3038
+ *
3039
+ * @param cause
3040
+ */
3041
+ public HttpRequestException(final IOException cause) {
3042
+ super(cause);
3043
+ }
3044
+
3045
+ /**
3046
+ * Get {@link IOException} that triggered this request exception
3047
+ *
3048
+ * @return {@link IOException} cause
3049
+ */
3050
+ @Override
3051
+ public IOException getCause() {
3052
+ return (IOException) super.getCause();
3053
+ }
3054
+ }
3055
+
3056
+ /**
3057
+ * Operation that handles executing a callback once complete and handling
3058
+ * nested exceptions
3059
+ *
3060
+ * @param <V>
3061
+ */
3062
+ protected static abstract class Operation<V> implements Callable<V> {
3063
+
3064
+ /**
3065
+ * Run operation
3066
+ *
3067
+ * @return result
3068
+ * @throws HttpRequestException
3069
+ * @throws IOException
3070
+ */
3071
+ protected abstract V run() throws HttpRequestException, IOException;
3072
+
3073
+ /**
3074
+ * Operation complete callback
3075
+ *
3076
+ * @throws IOException
3077
+ */
3078
+ protected abstract void done() throws IOException;
3079
+
3080
+ public V call() throws HttpRequestException {
3081
+ boolean thrown = false;
3082
+ try {
3083
+ return run();
3084
+ } catch (HttpRequestException e) {
3085
+ thrown = true;
3086
+ throw e;
3087
+ } catch (IOException e) {
3088
+ thrown = true;
3089
+ throw new HttpRequestException(e);
3090
+ } finally {
3091
+ try {
3092
+ done();
3093
+ } catch (IOException e) {
3094
+ if (!thrown)
3095
+ throw new HttpRequestException(e);
3096
+ }
3097
+ }
3098
+ }
3099
+ }
3100
+
3101
+ /**
3102
+ * Class that ensures a {@link Closeable} gets closed with proper exception
3103
+ * handling.
3104
+ *
3105
+ * @param <V>
3106
+ */
3107
+ protected static abstract class CloseOperation<V> extends Operation<V> {
3108
+
3109
+ private final Closeable closeable;
3110
+
3111
+ private final boolean ignoreCloseExceptions;
3112
+
3113
+ /**
3114
+ * Create closer for operation
3115
+ *
3116
+ * @param closeable
3117
+ * @param ignoreCloseExceptions
3118
+ */
3119
+ protected CloseOperation(final Closeable closeable,
3120
+ final boolean ignoreCloseExceptions) {
3121
+ this.closeable = closeable;
3122
+ this.ignoreCloseExceptions = ignoreCloseExceptions;
3123
+ }
3124
+
3125
+ @Override
3126
+ protected void done() throws IOException {
3127
+ if (closeable instanceof Flushable)
3128
+ ((Flushable) closeable).flush();
3129
+ if (ignoreCloseExceptions)
3130
+ try {
3131
+ closeable.close();
3132
+ } catch (IOException e) {
3133
+ // Ignored
3134
+ }
3135
+ else
3136
+ closeable.close();
3137
+ }
3138
+ }
3139
+
3140
+ /**
3141
+ * Class that and ensures a {@link Flushable} gets flushed with proper
3142
+ * exception handling.
3143
+ *
3144
+ * @param <V>
3145
+ */
3146
+ protected static abstract class FlushOperation<V> extends Operation<V> {
3147
+
3148
+ private final Flushable flushable;
3149
+
3150
+ /**
3151
+ * Create flush operation
3152
+ *
3153
+ * @param flushable
3154
+ */
3155
+ protected FlushOperation(final Flushable flushable) {
3156
+ this.flushable = flushable;
3157
+ }
3158
+
3159
+ @Override
3160
+ protected void done() throws IOException {
3161
+ flushable.flush();
3162
+ }
3163
+ }
3164
+
3165
+ /**
3166
+ * Request output stream
3167
+ */
3168
+ public static class RequestOutputStream extends BufferedOutputStream {
3169
+
3170
+ private final CharsetEncoder encoder;
3171
+
3172
+ /**
3173
+ * Create request output stream
3174
+ *
3175
+ * @param stream
3176
+ * @param charset
3177
+ * @param bufferSize
3178
+ */
3179
+ public RequestOutputStream(final OutputStream stream, final String charset,
3180
+ final int bufferSize) {
3181
+ super(stream, bufferSize);
3182
+
3183
+ encoder = Charset.forName(getValidCharset(charset)).newEncoder();
3184
+ }
3185
+
3186
+ /**
3187
+ * Write string to stream
3188
+ *
3189
+ * @param value
3190
+ * @return this stream
3191
+ * @throws IOException
3192
+ */
3193
+ public RequestOutputStream write(final String value) throws IOException {
3194
+ final ByteBuffer bytes = encoder.encode(CharBuffer.wrap(value));
3195
+
3196
+ super.write(bytes.array(), 0, bytes.limit());
3197
+
3198
+ return this;
3199
+ }
3200
+ }
3201
+ }