auto_response 0.1.6 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (334) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -3
  3. data/Gemfile.lock +9 -12
  4. data/bin/ar +14 -3
  5. data/lib/ar/har.rb +133 -0
  6. data/lib/ar/proxy_server.rb +171 -0
  7. data/lib/ar/rule_dsl.rb +4 -0
  8. data/lib/ar/rule_manager.rb +2 -1
  9. data/lib/ar/session_viewer.rb +18 -13
  10. data/lib/ar/version.rb +3 -0
  11. data/lib/ar/viewer/Images/applicationCache.png +0 -0
  12. data/lib/ar/viewer/Images/back.png +0 -0
  13. data/lib/ar/viewer/Images/checker.png +0 -0
  14. data/lib/ar/viewer/Images/closeButtons.png +0 -0
  15. data/lib/ar/viewer/Images/cookie.png +0 -0
  16. data/lib/ar/viewer/Images/database.png +0 -0
  17. data/lib/ar/viewer/Images/databaseTable.png +0 -0
  18. data/lib/ar/viewer/Images/deleteIcon.png +0 -0
  19. data/lib/ar/viewer/Images/disclosureTriangleSmallDown.png +0 -0
  20. data/lib/ar/viewer/Images/disclosureTriangleSmallDownBlack.png +0 -0
  21. data/lib/ar/viewer/Images/disclosureTriangleSmallDownWhite.png +0 -0
  22. data/lib/ar/viewer/Images/disclosureTriangleSmallRight.png +0 -0
  23. data/lib/ar/viewer/Images/disclosureTriangleSmallRightBlack.png +0 -0
  24. data/lib/ar/viewer/Images/disclosureTriangleSmallRightDown.png +0 -0
  25. data/lib/ar/viewer/Images/disclosureTriangleSmallRightDownBlack.png +0 -0
  26. data/lib/ar/viewer/Images/disclosureTriangleSmallRightDownWhite.png +0 -0
  27. data/lib/ar/viewer/Images/disclosureTriangleSmallRightWhite.png +0 -0
  28. data/lib/ar/viewer/Images/domain.png +0 -0
  29. data/lib/ar/viewer/Images/errorIcon.png +0 -0
  30. data/lib/ar/viewer/Images/errorMediumIcon.png +0 -0
  31. data/lib/ar/viewer/Images/errorRedDot.png +0 -0
  32. data/lib/ar/viewer/Images/fileSystem.png +0 -0
  33. data/lib/ar/viewer/Images/forward.png +0 -0
  34. data/lib/ar/viewer/Images/frame.png +0 -0
  35. data/lib/ar/viewer/Images/glossyHeader.png +0 -0
  36. data/lib/ar/viewer/Images/glossyHeaderPressed.png +0 -0
  37. data/lib/ar/viewer/Images/glossyHeaderSelected.png +0 -0
  38. data/lib/ar/viewer/Images/glossyHeaderSelectedPressed.png +0 -0
  39. data/lib/ar/viewer/Images/goArrow.png +0 -0
  40. data/lib/ar/viewer/Images/graphLabelCalloutLeft.png +0 -0
  41. data/lib/ar/viewer/Images/graphLabelCalloutRight.png +0 -0
  42. data/lib/ar/viewer/Images/indexedDB.png +0 -0
  43. data/lib/ar/viewer/Images/indexedDBIndex.png +0 -0
  44. data/lib/ar/viewer/Images/indexedDBObjectStore.png +0 -0
  45. data/lib/ar/viewer/Images/localStorage.png +0 -0
  46. data/lib/ar/viewer/Images/navigatorShowHideButton.png +0 -0
  47. data/lib/ar/viewer/Images/paneAddButtons.png +0 -0
  48. data/lib/ar/viewer/Images/paneBottomGrow.png +0 -0
  49. data/lib/ar/viewer/Images/paneBottomGrowActive.png +0 -0
  50. data/lib/ar/viewer/Images/paneElementStateButtons.png +0 -0
  51. data/lib/ar/viewer/Images/paneFilterButtons.png +0 -0
  52. data/lib/ar/viewer/Images/paneGrowHandleLine.png +0 -0
  53. data/lib/ar/viewer/Images/paneRefreshButtons.png +0 -0
  54. data/lib/ar/viewer/Images/paneSettingsButtons.png +0 -0
  55. data/lib/ar/viewer/Images/popoverArrows.png +0 -0
  56. data/lib/ar/viewer/Images/popoverBackground.png +0 -0
  57. data/lib/ar/viewer/Images/profileGroupIcon.png +0 -0
  58. data/lib/ar/viewer/Images/profileIcon.png +0 -0
  59. data/lib/ar/viewer/Images/profileSmallIcon.png +0 -0
  60. data/lib/ar/viewer/Images/profilesSilhouette.png +0 -0
  61. data/lib/ar/viewer/Images/programCounterBorder.png +0 -0
  62. data/lib/ar/viewer/Images/radioDot.png +0 -0
  63. data/lib/ar/viewer/Images/resourceCSSIcon.png +0 -0
  64. data/lib/ar/viewer/Images/resourceDocumentIcon.png +0 -0
  65. data/lib/ar/viewer/Images/resourceDocumentIconSmall.png +0 -0
  66. data/lib/ar/viewer/Images/resourceJSIcon.png +0 -0
  67. data/lib/ar/viewer/Images/resourcePlainIcon.png +0 -0
  68. data/lib/ar/viewer/Images/resourcePlainIconSmall.png +0 -0
  69. data/lib/ar/viewer/Images/resourcesSizeGraphIcon.png +0 -0
  70. data/lib/ar/viewer/Images/resourcesTimeGraphIcon.png +0 -0
  71. data/lib/ar/viewer/Images/scriptsSilhouette.png +0 -0
  72. data/lib/ar/viewer/Images/searchNext.png +0 -0
  73. data/lib/ar/viewer/Images/searchPrev.png +0 -0
  74. data/lib/ar/viewer/Images/searchSmallBlue.png +0 -0
  75. data/lib/ar/viewer/Images/searchSmallBrightBlue.png +0 -0
  76. data/lib/ar/viewer/Images/searchSmallGray.png +0 -0
  77. data/lib/ar/viewer/Images/searchSmallWhite.png +0 -0
  78. data/lib/ar/viewer/Images/segment.png +0 -0
  79. data/lib/ar/viewer/Images/segmentChromium.png +0 -0
  80. data/lib/ar/viewer/Images/segmentEnd.png +0 -0
  81. data/lib/ar/viewer/Images/segmentHover.png +0 -0
  82. data/lib/ar/viewer/Images/segmentHoverChromium.png +0 -0
  83. data/lib/ar/viewer/Images/segmentHoverEnd.png +0 -0
  84. data/lib/ar/viewer/Images/segmentHoverEndChromium.png +0 -0
  85. data/lib/ar/viewer/Images/segmentSelected.png +0 -0
  86. data/lib/ar/viewer/Images/segmentSelectedChromium.png +0 -0
  87. data/lib/ar/viewer/Images/segmentSelectedEnd.png +0 -0
  88. data/lib/ar/viewer/Images/segmentSelectedEndChromium.png +0 -0
  89. data/lib/ar/viewer/Images/sessionStorage.png +0 -0
  90. data/lib/ar/viewer/Images/spinner.gif +0 -0
  91. data/lib/ar/viewer/Images/spinnerActive.gif +0 -0
  92. data/lib/ar/viewer/Images/spinnerActiveSelected.gif +0 -0
  93. data/lib/ar/viewer/Images/spinnerInactive.gif +0 -0
  94. data/lib/ar/viewer/Images/spinnerInactiveSelected.gif +0 -0
  95. data/lib/ar/viewer/Images/splitviewDimple.png +0 -0
  96. data/lib/ar/viewer/Images/splitviewDividerBackground.png +0 -0
  97. data/lib/ar/viewer/Images/statusbarButtonGlyphs.png +0 -0
  98. data/lib/ar/viewer/Images/statusbarResizerHorizontal.png +0 -0
  99. data/lib/ar/viewer/Images/statusbarResizerVertical.png +0 -0
  100. data/lib/ar/viewer/Images/successGreenDot.png +0 -0
  101. data/lib/ar/viewer/Images/thumbActiveHoriz.png +0 -0
  102. data/lib/ar/viewer/Images/thumbActiveVert.png +0 -0
  103. data/lib/ar/viewer/Images/thumbHoriz.png +0 -0
  104. data/lib/ar/viewer/Images/thumbHoverHoriz.png +0 -0
  105. data/lib/ar/viewer/Images/thumbHoverVert.png +0 -0
  106. data/lib/ar/viewer/Images/thumbVert.png +0 -0
  107. data/lib/ar/viewer/Images/tickMark.png +0 -0
  108. data/lib/ar/viewer/Images/timelineHollowPillBlue.png +0 -0
  109. data/lib/ar/viewer/Images/timelineHollowPillGray.png +0 -0
  110. data/lib/ar/viewer/Images/timelineHollowPillGreen.png +0 -0
  111. data/lib/ar/viewer/Images/timelineHollowPillOrange.png +0 -0
  112. data/lib/ar/viewer/Images/timelineHollowPillPurple.png +0 -0
  113. data/lib/ar/viewer/Images/timelineHollowPillRed.png +0 -0
  114. data/lib/ar/viewer/Images/timelineHollowPillYellow.png +0 -0
  115. data/lib/ar/viewer/Images/timelinePillBlue.png +0 -0
  116. data/lib/ar/viewer/Images/timelinePillGray.png +0 -0
  117. data/lib/ar/viewer/Images/timelinePillGreen.png +0 -0
  118. data/lib/ar/viewer/Images/timelinePillOrange.png +0 -0
  119. data/lib/ar/viewer/Images/timelinePillPurple.png +0 -0
  120. data/lib/ar/viewer/Images/timelinePillRed.png +0 -0
  121. data/lib/ar/viewer/Images/timelinePillYellow.png +0 -0
  122. data/lib/ar/viewer/Images/toolbarIcons.png +0 -0
  123. data/lib/ar/viewer/Images/toolbarIconsSmall.png +0 -0
  124. data/lib/ar/viewer/Images/toolbarItemSelected.png +0 -0
  125. data/lib/ar/viewer/Images/trackHoriz.png +0 -0
  126. data/lib/ar/viewer/Images/trackVert.png +0 -0
  127. data/lib/ar/viewer/Images/treeDownTriangleBlack.png +0 -0
  128. data/lib/ar/viewer/Images/treeDownTriangleWhite.png +0 -0
  129. data/lib/ar/viewer/Images/treeRightTriangleBlack.png +0 -0
  130. data/lib/ar/viewer/Images/treeRightTriangleWhite.png +0 -0
  131. data/lib/ar/viewer/Images/treeUpTriangleBlack.png +0 -0
  132. data/lib/ar/viewer/Images/treeUpTriangleWhite.png +0 -0
  133. data/lib/ar/viewer/Images/userInputIcon.png +0 -0
  134. data/lib/ar/viewer/Images/userInputPreviousIcon.png +0 -0
  135. data/lib/ar/viewer/Images/userInputResultIcon.png +0 -0
  136. data/lib/ar/viewer/Images/warningIcon.png +0 -0
  137. data/lib/ar/viewer/Images/warningMediumIcon.png +0 -0
  138. data/lib/ar/viewer/Images/warningOrangeDot.png +0 -0
  139. data/lib/ar/viewer/Images/warningsErrors.png +0 -0
  140. data/lib/ar/viewer/chrome/Images/applicationCache.png +0 -0
  141. data/lib/ar/viewer/chrome/Images/back.png +0 -0
  142. data/lib/ar/viewer/chrome/Images/breakpointBorder.png +0 -0
  143. data/lib/ar/viewer/chrome/Images/breakpointConditionalBorder.png +0 -0
  144. data/lib/ar/viewer/chrome/Images/breakpointConditionalCounterBorder.png +0 -0
  145. data/lib/ar/viewer/chrome/Images/breakpointCounterBorder.png +0 -0
  146. data/lib/ar/viewer/chrome/Images/checker.png +0 -0
  147. data/lib/ar/viewer/chrome/Images/closeButtons.png +0 -0
  148. data/lib/ar/viewer/chrome/Images/cookie.png +0 -0
  149. data/lib/ar/viewer/chrome/Images/database.png +0 -0
  150. data/lib/ar/viewer/chrome/Images/databaseTable.png +0 -0
  151. data/lib/ar/viewer/chrome/Images/debuggerContinue.png +0 -0
  152. data/lib/ar/viewer/chrome/Images/debuggerPause.png +0 -0
  153. data/lib/ar/viewer/chrome/Images/debuggerStepInto.png +0 -0
  154. data/lib/ar/viewer/chrome/Images/debuggerStepOut.png +0 -0
  155. data/lib/ar/viewer/chrome/Images/debuggerStepOver.png +0 -0
  156. data/lib/ar/viewer/chrome/Images/deleteIcon.png +0 -0
  157. data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallDown.png +0 -0
  158. data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallDownBlack.png +0 -0
  159. data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallDownWhite.png +0 -0
  160. data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallRight.png +0 -0
  161. data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallRightBlack.png +0 -0
  162. data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallRightDown.png +0 -0
  163. data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallRightDownBlack.png +0 -0
  164. data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallRightDownWhite.png +0 -0
  165. data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallRightWhite.png +0 -0
  166. data/lib/ar/viewer/chrome/Images/domain.png +0 -0
  167. data/lib/ar/viewer/chrome/Images/errorIcon.png +0 -0
  168. data/lib/ar/viewer/chrome/Images/errorMediumIcon.png +0 -0
  169. data/lib/ar/viewer/chrome/Images/errorRedDot.png +0 -0
  170. data/lib/ar/viewer/chrome/Images/fileSystem.png +0 -0
  171. data/lib/ar/viewer/chrome/Images/forward.png +0 -0
  172. data/lib/ar/viewer/chrome/Images/frame.png +0 -0
  173. data/lib/ar/viewer/chrome/Images/glossyHeader.png +0 -0
  174. data/lib/ar/viewer/chrome/Images/glossyHeaderPressed.png +0 -0
  175. data/lib/ar/viewer/chrome/Images/glossyHeaderSelected.png +0 -0
  176. data/lib/ar/viewer/chrome/Images/glossyHeaderSelectedPressed.png +0 -0
  177. data/lib/ar/viewer/chrome/Images/goArrow.png +0 -0
  178. data/lib/ar/viewer/chrome/Images/graphLabelCalloutLeft.png +0 -0
  179. data/lib/ar/viewer/chrome/Images/graphLabelCalloutRight.png +0 -0
  180. data/lib/ar/viewer/chrome/Images/indexedDB.png +0 -0
  181. data/lib/ar/viewer/chrome/Images/indexedDBIndex.png +0 -0
  182. data/lib/ar/viewer/chrome/Images/indexedDBObjectStore.png +0 -0
  183. data/lib/ar/viewer/chrome/Images/localStorage.png +0 -0
  184. data/lib/ar/viewer/chrome/Images/navigatorShowHideButton.png +0 -0
  185. data/lib/ar/viewer/chrome/Images/paneAddButtons.png +0 -0
  186. data/lib/ar/viewer/chrome/Images/paneBottomGrow.png +0 -0
  187. data/lib/ar/viewer/chrome/Images/paneBottomGrowActive.png +0 -0
  188. data/lib/ar/viewer/chrome/Images/paneElementStateButtons.png +0 -0
  189. data/lib/ar/viewer/chrome/Images/paneFilterButtons.png +0 -0
  190. data/lib/ar/viewer/chrome/Images/paneGrowHandleLine.png +0 -0
  191. data/lib/ar/viewer/chrome/Images/paneRefreshButtons.png +0 -0
  192. data/lib/ar/viewer/chrome/Images/paneSettingsButtons.png +0 -0
  193. data/lib/ar/viewer/chrome/Images/popoverArrows.png +0 -0
  194. data/lib/ar/viewer/chrome/Images/popoverBackground.png +0 -0
  195. data/lib/ar/viewer/chrome/Images/profileGroupIcon.png +0 -0
  196. data/lib/ar/viewer/chrome/Images/profileIcon.png +0 -0
  197. data/lib/ar/viewer/chrome/Images/profileSmallIcon.png +0 -0
  198. data/lib/ar/viewer/chrome/Images/profilesSilhouette.png +0 -0
  199. data/lib/ar/viewer/chrome/Images/programCounterBorder.png +0 -0
  200. data/lib/ar/viewer/chrome/Images/radioDot.png +0 -0
  201. data/lib/ar/viewer/chrome/Images/resourceCSSIcon.png +0 -0
  202. data/lib/ar/viewer/chrome/Images/resourceDocumentIcon.png +0 -0
  203. data/lib/ar/viewer/chrome/Images/resourceDocumentIconSmall.png +0 -0
  204. data/lib/ar/viewer/chrome/Images/resourceJSIcon.png +0 -0
  205. data/lib/ar/viewer/chrome/Images/resourcePlainIcon.png +0 -0
  206. data/lib/ar/viewer/chrome/Images/resourcePlainIconSmall.png +0 -0
  207. data/lib/ar/viewer/chrome/Images/resourcesSizeGraphIcon.png +0 -0
  208. data/lib/ar/viewer/chrome/Images/resourcesTimeGraphIcon.png +0 -0
  209. data/lib/ar/viewer/chrome/Images/scriptsSilhouette.png +0 -0
  210. data/lib/ar/viewer/chrome/Images/searchNext.png +0 -0
  211. data/lib/ar/viewer/chrome/Images/searchPrev.png +0 -0
  212. data/lib/ar/viewer/chrome/Images/searchSmallBlue.png +0 -0
  213. data/lib/ar/viewer/chrome/Images/searchSmallBrightBlue.png +0 -0
  214. data/lib/ar/viewer/chrome/Images/searchSmallGray.png +0 -0
  215. data/lib/ar/viewer/chrome/Images/searchSmallWhite.png +0 -0
  216. data/lib/ar/viewer/chrome/Images/segment.png +0 -0
  217. data/lib/ar/viewer/chrome/Images/segmentChromium.png +0 -0
  218. data/lib/ar/viewer/chrome/Images/segmentEnd.png +0 -0
  219. data/lib/ar/viewer/chrome/Images/segmentHover.png +0 -0
  220. data/lib/ar/viewer/chrome/Images/segmentHoverChromium.png +0 -0
  221. data/lib/ar/viewer/chrome/Images/segmentHoverEnd.png +0 -0
  222. data/lib/ar/viewer/chrome/Images/segmentHoverEndChromium.png +0 -0
  223. data/lib/ar/viewer/chrome/Images/segmentSelected.png +0 -0
  224. data/lib/ar/viewer/chrome/Images/segmentSelectedChromium.png +0 -0
  225. data/lib/ar/viewer/chrome/Images/segmentSelectedEnd.png +0 -0
  226. data/lib/ar/viewer/chrome/Images/segmentSelectedEndChromium.png +0 -0
  227. data/lib/ar/viewer/chrome/Images/sessionStorage.png +0 -0
  228. data/lib/ar/viewer/chrome/Images/spinner.gif +0 -0
  229. data/lib/ar/viewer/chrome/Images/spinnerActive.gif +0 -0
  230. data/lib/ar/viewer/chrome/Images/spinnerActiveSelected.gif +0 -0
  231. data/lib/ar/viewer/chrome/Images/spinnerInactive.gif +0 -0
  232. data/lib/ar/viewer/chrome/Images/spinnerInactiveSelected.gif +0 -0
  233. data/lib/ar/viewer/chrome/Images/splitviewDimple.png +0 -0
  234. data/lib/ar/viewer/chrome/Images/splitviewDividerBackground.png +0 -0
  235. data/lib/ar/viewer/chrome/Images/statusbarButtonGlyphs.png +0 -0
  236. data/lib/ar/viewer/chrome/Images/statusbarResizerHorizontal.png +0 -0
  237. data/lib/ar/viewer/chrome/Images/statusbarResizerVertical.png +0 -0
  238. data/lib/ar/viewer/chrome/Images/successGreenDot.png +0 -0
  239. data/lib/ar/viewer/chrome/Images/thumbActiveHoriz.png +0 -0
  240. data/lib/ar/viewer/chrome/Images/thumbActiveVert.png +0 -0
  241. data/lib/ar/viewer/chrome/Images/thumbHoriz.png +0 -0
  242. data/lib/ar/viewer/chrome/Images/thumbHoverHoriz.png +0 -0
  243. data/lib/ar/viewer/chrome/Images/thumbHoverVert.png +0 -0
  244. data/lib/ar/viewer/chrome/Images/thumbVert.png +0 -0
  245. data/lib/ar/viewer/chrome/Images/tickMark.png +0 -0
  246. data/lib/ar/viewer/chrome/Images/timelineHollowPillBlue.png +0 -0
  247. data/lib/ar/viewer/chrome/Images/timelineHollowPillGray.png +0 -0
  248. data/lib/ar/viewer/chrome/Images/timelineHollowPillGreen.png +0 -0
  249. data/lib/ar/viewer/chrome/Images/timelineHollowPillOrange.png +0 -0
  250. data/lib/ar/viewer/chrome/Images/timelineHollowPillPurple.png +0 -0
  251. data/lib/ar/viewer/chrome/Images/timelineHollowPillRed.png +0 -0
  252. data/lib/ar/viewer/chrome/Images/timelineHollowPillYellow.png +0 -0
  253. data/lib/ar/viewer/chrome/Images/timelinePillBlue.png +0 -0
  254. data/lib/ar/viewer/chrome/Images/timelinePillGray.png +0 -0
  255. data/lib/ar/viewer/chrome/Images/timelinePillGreen.png +0 -0
  256. data/lib/ar/viewer/chrome/Images/timelinePillOrange.png +0 -0
  257. data/lib/ar/viewer/chrome/Images/timelinePillPurple.png +0 -0
  258. data/lib/ar/viewer/chrome/Images/timelinePillRed.png +0 -0
  259. data/lib/ar/viewer/chrome/Images/timelinePillYellow.png +0 -0
  260. data/lib/ar/viewer/chrome/Images/toolbarIcons.png +0 -0
  261. data/lib/ar/viewer/chrome/Images/toolbarIconsSmall.png +0 -0
  262. data/lib/ar/viewer/chrome/Images/toolbarItemSelected.png +0 -0
  263. data/lib/ar/viewer/chrome/Images/trackHoriz.png +0 -0
  264. data/lib/ar/viewer/chrome/Images/trackVert.png +0 -0
  265. data/lib/ar/viewer/chrome/Images/treeDownTriangleBlack.png +0 -0
  266. data/lib/ar/viewer/chrome/Images/treeDownTriangleWhite.png +0 -0
  267. data/lib/ar/viewer/chrome/Images/treeRightTriangleBlack.png +0 -0
  268. data/lib/ar/viewer/chrome/Images/treeRightTriangleWhite.png +0 -0
  269. data/lib/ar/viewer/chrome/Images/treeUpTriangleBlack.png +0 -0
  270. data/lib/ar/viewer/chrome/Images/treeUpTriangleWhite.png +0 -0
  271. data/lib/ar/viewer/chrome/Images/userInputIcon.png +0 -0
  272. data/lib/ar/viewer/chrome/Images/userInputPreviousIcon.png +0 -0
  273. data/lib/ar/viewer/chrome/Images/userInputResultIcon.png +0 -0
  274. data/lib/ar/viewer/chrome/Images/warningIcon.png +0 -0
  275. data/lib/ar/viewer/chrome/Images/warningMediumIcon.png +0 -0
  276. data/lib/ar/viewer/chrome/Images/warningOrangeDot.png +0 -0
  277. data/lib/ar/viewer/chrome/Images/warningsErrors.png +0 -0
  278. data/lib/ar/viewer/chrome/dataGrid.css +218 -0
  279. data/lib/ar/viewer/chrome/devTools.css +97 -0
  280. data/lib/ar/viewer/chrome/dialog.css +55 -0
  281. data/lib/ar/viewer/chrome/elementsPanel.css +692 -0
  282. data/lib/ar/viewer/chrome/filteredItemSelectionDialog.css +41 -0
  283. data/lib/ar/viewer/chrome/heapProfiler.css +263 -0
  284. data/lib/ar/viewer/chrome/helpScreen.css +286 -0
  285. data/lib/ar/viewer/chrome/indexedDBViews.css +124 -0
  286. data/lib/ar/viewer/chrome/inspector.css +2878 -0
  287. data/lib/ar/viewer/chrome/inspectorCommon.css +177 -0
  288. data/lib/ar/viewer/chrome/inspectorSyntaxHighlight.css +111 -0
  289. data/lib/ar/viewer/chrome/nativeMemoryProfiler.css +86 -0
  290. data/lib/ar/viewer/chrome/navigatorView.css +142 -0
  291. data/lib/ar/viewer/chrome/networkLogView.css +559 -0
  292. data/lib/ar/viewer/chrome/networkPanel.css +340 -0
  293. data/lib/ar/viewer/chrome/panelEnablerView.css +168 -0
  294. data/lib/ar/viewer/chrome/popover.css +94 -0
  295. data/lib/ar/viewer/chrome/profilesPanel.css +201 -0
  296. data/lib/ar/viewer/chrome/resourceView.css +105 -0
  297. data/lib/ar/viewer/chrome/resourcesPanel.css +331 -0
  298. data/lib/ar/viewer/chrome/revisionHistory.css +90 -0
  299. data/lib/ar/viewer/chrome/scriptsPanel.css +286 -0
  300. data/lib/ar/viewer/chrome/splitView.css +91 -0
  301. data/lib/ar/viewer/chrome/tabbedPane.css +165 -0
  302. data/lib/ar/viewer/chrome/textEditor.css +181 -0
  303. data/lib/ar/viewer/chrome/textPrompt.css +69 -0
  304. data/lib/ar/viewer/chrome/timelinePanel.css +656 -0
  305. data/lib/ar/viewer/components/angular/angular.js +14760 -0
  306. data/lib/ar/viewer/components/angular/angular.min.js +162 -0
  307. data/lib/ar/viewer/components/angular/component.json +14 -0
  308. data/lib/ar/viewer/components/jquery/README.md +11 -0
  309. data/lib/ar/viewer/components/jquery/bower.json +14 -0
  310. data/lib/ar/viewer/components/jquery/component.json +22 -0
  311. data/lib/ar/viewer/components/jquery/composer.json +35 -0
  312. data/lib/ar/viewer/components/jquery/jquery-migrate.js +511 -0
  313. data/lib/ar/viewer/components/jquery/jquery-migrate.min.js +3 -0
  314. data/lib/ar/viewer/components/jquery/jquery.js +8755 -0
  315. data/lib/ar/viewer/components/jquery/jquery.min.js +6 -0
  316. data/lib/ar/viewer/components/jquery/package.json +7 -0
  317. data/lib/ar/viewer/css/style.css +186 -0
  318. data/lib/ar/viewer/index.html +422 -0
  319. data/lib/ar/viewer/js/controllers.js +124 -0
  320. data/lib/ar/viewer/js/libs/HAREntry.js +154 -0
  321. data/lib/ar/viewer/js/libs/devTools.js +371 -0
  322. data/lib/ar/viewer/js/libs/modernizr.custom.min.js +4 -0
  323. data/lib/ar/viewer/js/script.js +36 -0
  324. data/lib/ar/viewer/sample.har +6723 -0
  325. data/lib/ar/viewer/sass/style.scss +149 -0
  326. data/lib/{autoresponse.rb → auto_response.rb} +30 -31
  327. data/readme.md +4 -0
  328. data/rules.sample +9 -0
  329. data/test/helper.rb +1 -1
  330. metadata +365 -9
  331. data/bin/start_ar.rb +0 -5
  332. data/bin/start_ar.rb.pid +0 -1
  333. data/lib/ar/proxyserver.rb +0 -106
  334. data/lib/ar/viewer/tmpl/index.haml +0 -55
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a1ffff50cd0255268c8bf7006a4bbf1ce1a8358a
4
- data.tar.gz: ab2d9bea2a0260fc4b439af40326da5fb7e0df5b
3
+ metadata.gz: ee5883eec73a27b407746617b71425860d071f19
4
+ data.tar.gz: 2cd5a5ca6ec272a54eb829cbd250c6470e0f99b5
5
5
  SHA512:
6
- metadata.gz: 43be67ddb064d306b793eedd23f27a9810d833657103c2618312d2d4e2742e240d2799643f48a379509e6605dc349ece4084c0acac4e087ececb3c31dc855743
7
- data.tar.gz: 50ce17a96b9d3e5ff68506f73a0d640e927425f83e16ae90ac4738f4aac21c63dd690d346e5ac98b3161578c3c0fc7dd728ebb42ddc075026a9beaa7db4f5243
6
+ metadata.gz: ee950fc92e636d6171856b38688ba16c9b0dad2e22cee76354cf818c2897bf3c4879dacaf419f362c25ff3909ccc832deea1d20356c133f84d59ea229dc3ccfa
7
+ data.tar.gz: 0674a3690d01b43a0c42e252a12537729328e310239f3a4570142f05a0098ea33ac16f82eaa666fccc21150dc257908725cd1e3784e9df6b79db6cdf82d00be4
data/Gemfile CHANGED
@@ -1,9 +1,10 @@
1
- source :rubygems
1
+ source 'http://ruby.taobao.org'
2
2
  gem 'listen'
3
3
  gem 'colorize'
4
- gem 'sinatra'
5
- gem 'haml'
6
4
  gem 'daemons'
5
+ gem 'rb-inotify', '~> 0.9'
6
+ gem 'string_utf8'
7
+ gem 'ptools'
7
8
 
8
9
  group :test do
9
10
  gem 'test-unit'
data/Gemfile.lock CHANGED
@@ -1,20 +1,16 @@
1
1
  GEM
2
- remote: http://rubygems.org/
2
+ remote: http://ruby.taobao.org/
3
3
  specs:
4
4
  colorize (0.5.8)
5
5
  daemons (1.1.9)
6
+ ffi (1.9.0)
6
7
  gem-this (0.3.7)
7
- haml (3.1.7)
8
8
  listen (0.6.0)
9
- rack (1.4.1)
10
- rack-protection (1.3.2)
11
- rack
12
- sinatra (1.3.3)
13
- rack (~> 1.3, >= 1.3.6)
14
- rack-protection (~> 1.2)
15
- tilt (~> 1.3, >= 1.3.3)
9
+ ptools (1.2.2)
10
+ rb-inotify (0.9.0)
11
+ ffi (>= 0.5.0)
12
+ string_utf8 (0.1)
16
13
  test-unit (2.5.3)
17
- tilt (1.3.3)
18
14
 
19
15
  PLATFORMS
20
16
  ruby
@@ -23,7 +19,8 @@ DEPENDENCIES
23
19
  colorize
24
20
  daemons
25
21
  gem-this
26
- haml
27
22
  listen
28
- sinatra
23
+ ptools
24
+ rb-inotify (~> 0.9)
25
+ string_utf8
29
26
  test-unit
data/bin/ar CHANGED
@@ -1,6 +1,17 @@
1
1
  #!/usr/bin/env ruby
2
- require 'daemons'
3
2
 
4
- START_SCRIPT = File.dirname(__FILE__) + '/start_ar.rb'
3
+ ## compatible with Ruby 1.8
4
+ unless Kernel.respond_to?(:require_relative)
5
+ module Kernel
6
+ def require_relative(path)
7
+ require File.expand_path(path.to_str, File.dirname(caller[0]))
8
+ end
9
+ end
10
+ end
11
+
12
+ require 'daemons'
13
+ require_relative '../lib/auto_response'
5
14
 
6
- Daemons.run START_SCRIPT
15
+ Daemons.run_proc 'auto_response', :backtrace => true do
16
+ AutoResp::AutoResponder.new.start
17
+ end
data/lib/ar/har.rb ADDED
@@ -0,0 +1,133 @@
1
+ require 'json'
2
+ require 'cgi'
3
+ require 'string/utf8'
4
+
5
+ module AutoResp
6
+
7
+ class HAR
8
+
9
+ class << self
10
+
11
+ def sessions_to_har( sessions )
12
+ har = {
13
+ :log => {
14
+ :version => '1.2',
15
+ :creator => {
16
+ :name => 'auto_response',
17
+ :version => AutoResp::VERSION,
18
+ :comment => 'proxied by auto_response'
19
+ },
20
+ :pages => []
21
+ }
22
+ }
23
+ har[:log][:entries] = sessions.map do |session|
24
+ session_to_entry session
25
+ end
26
+ JSON.fast_generate har
27
+ end
28
+
29
+ def session_to_entry( session )
30
+ req, res, info = *session
31
+ {
32
+ pageref: nil,
33
+ startedDateTime: info[:start],
34
+ time: info[:end].to_i - info[:start].to_i,
35
+ request: request_data( req ),
36
+ response: response_data( res ),
37
+ cache: cache_data( req, res ),
38
+
39
+ #FIXME: add timing feature
40
+ timings: {
41
+ blocked: 0,
42
+ dns: -1,
43
+ connect: 15,
44
+ send: 20,
45
+ wait: 38,
46
+ receive: 12,
47
+ ssl: -1,
48
+ comment: ""
49
+ },
50
+
51
+ serverIPAddress: req.host,
52
+ #NOT implemented
53
+ connection: '',
54
+ comment: info[:matched] ? 'x-auto-response' : nil
55
+ }
56
+ end
57
+
58
+ def request_data( req )
59
+ {
60
+ method: req.request_method,
61
+ url: req.unparsed_uri,
62
+ httpVersion: req.http_version,
63
+ cookies: req.cookies.map {|c| cookie_data( c ) },
64
+ headers: req.header.map { |h| header_data( h ) },
65
+ queryString: CGI.parse(req.query_string || ''),
66
+ #TODO: parse post data
67
+ postData: {},
68
+ headersSize: 0,
69
+ bodySize: (req.body ? req.content_length : 0),
70
+ comment: nil
71
+ }
72
+ end
73
+
74
+ def cookie_data( cookie )
75
+ {
76
+ name: cookie.name,
77
+ value: cookie.value,
78
+ path: cookie.path,
79
+ domain: cookie.domain,
80
+ expires: cookie.expires,
81
+ #FIXME: check httponly
82
+ httpOnly: nil,
83
+ secure: cookie.secure,
84
+ comment: nil
85
+ }
86
+ end
87
+
88
+ def header_data( header )
89
+ name, value = *header
90
+ value = value.join("\n") if value.is_a?(Array)
91
+ {
92
+ name: name,
93
+ value: value,
94
+ comment: nil
95
+ }
96
+ end
97
+
98
+ def response_data( res )
99
+ body = res.body
100
+ body.utf8!
101
+ body = '**raw data**' unless body.valid_encoding?
102
+ {
103
+ status: res.status,
104
+ statusText: res.message,
105
+
106
+ httpVersion: res.http_version,
107
+ cookies: res.cookies.map {|c|
108
+ cookie_data( WEBrick::Cookie.parse_set_cookie c) },
109
+ headers: res.header.map {|h| header_data(h) },
110
+ content: body,
111
+
112
+ #FIXME
113
+ redirectURL: '',
114
+ headerSize: 160,
115
+
116
+ bodySize: res.content_length,
117
+ comment: nil
118
+ }
119
+ end
120
+
121
+ def cache_data( req, res )
122
+ {
123
+ #FIXME
124
+ beforeRequest: nil,
125
+ afterRequest: nil
126
+ }
127
+ end
128
+
129
+ end
130
+
131
+ end
132
+
133
+ end
@@ -0,0 +1,171 @@
1
+ require 'webrick/httpproxy'
2
+ require 'logger'
3
+ require 'ptools'
4
+
5
+ require_relative 'rule_manager'
6
+ require_relative 'parser'
7
+
8
+ module AutoResp
9
+
10
+ class ProxyServer < WEBrick::HTTPProxyServer
11
+
12
+ include Parser
13
+ attr_reader :sessions
14
+
15
+ def initialize(core, config={})
16
+ @core = core
17
+ super(config.update({
18
+ :AccessLog => [],
19
+ :Logger => WEBrick::Log.new("/dev/null")
20
+ }))
21
+ @sessions = []
22
+ @ar_logger = config[:logger] || Logger.new
23
+ end
24
+
25
+ def service(req, res)
26
+ logger.info "[#{req.unparsed_uri}]"
27
+ info = { start: Time.now }
28
+
29
+ before_filters.each do |block|
30
+ if block.call( req, res ) == false
31
+ super req, res
32
+ return
33
+ end
34
+ end
35
+
36
+ header, body, status = find_auto_res(req.unparsed_uri)
37
+ res.status = status if status
38
+
39
+ if @rule
40
+
41
+ logger.debug "match".ljust(8) << ": #{req.unparsed_uri}"
42
+ logger.debug "header".ljust(8) << ": #{header}"
43
+ logger.debug "body".ljust(8) << ": \n#{body}"
44
+ logger.debug "-"*50
45
+
46
+ res['x-auto-response-condition'] = @rule.first.to_s
47
+ res['x-auto-response-with'] = @rule.last.to_s
48
+ if header
49
+ header.each do |k,v|
50
+ v = v.join("\n") if v.respond_to?(:join)
51
+ res[k] = v
52
+ end
53
+ end
54
+ res.body = body
55
+ info[:matched] = true
56
+ else
57
+ super(req, res)
58
+ end
59
+
60
+ info[:end] = Time.now
61
+ sessions << [req, res, info]
62
+ end
63
+
64
+ def before_filters
65
+ @before_filters ||= []
66
+ end
67
+
68
+ def before_filter(&block)
69
+ logger.info "add before_filter".green
70
+ before_filters << block
71
+ end
72
+
73
+ def clear_before_filters
74
+ @before_filters.clear
75
+ end
76
+
77
+ def find_auto_res(url)
78
+ rule = @core.rules.find do |condition, map_to|
79
+ matched? url, condition
80
+ end
81
+
82
+ @rule = rule
83
+ if rule
84
+ condition, handlers = *rule
85
+ handlers.each {|proc| proc.call if proc.respond_to?(:call) }
86
+ fetch(handlers.last, condition, url)
87
+ end
88
+ end
89
+
90
+ def matched?( url, rule )
91
+ trim_url(rule) === trim_url(url)
92
+ end
93
+
94
+ def fetch(txt, declare, uri)
95
+
96
+ case txt
97
+ when nil
98
+ Net::HTTP.get_response(URI(uri)) do |res|
99
+ return [res.to_hash, res.read_body, res.code]
100
+ end
101
+ when Proc
102
+ if Regexp === declare
103
+ mtc = uri.match(declare)
104
+ fetch( txt.call(*mtc), declare, uri )
105
+ else
106
+ fetch( txt.call, declare, uri )
107
+ end
108
+ when String
109
+ if goto = redirect_path(txt)
110
+ if is_uri?(goto)
111
+ Net::HTTP.get_response(URI(goto)) do |res|
112
+ return [res.to_hash, res.read_body, res.code]
113
+ end
114
+ else
115
+ file = File.expand_path( goto )
116
+ if File.exist?(file)
117
+ content = IO.read file
118
+ if File.binary? file
119
+ return [nil, content, 200]
120
+ else
121
+ return parse(content)
122
+ end
123
+ end
124
+ end
125
+ else
126
+ parse(txt)
127
+ end
128
+ when Fixnum
129
+ [{}, "", txt]
130
+ when Array
131
+ [txt[1], txt[2], txt[0]]
132
+ end
133
+ end
134
+
135
+ private
136
+ def redirect_path(t)
137
+ if is_single_line?(t)
138
+ (t.match(/^=GOTO=> (\S.*?)\s*$/) || [] )[1]
139
+ end
140
+ end
141
+
142
+ def is_uri?(txt)
143
+ /^[A-Za-z][A-Za-z0-9+\-\.]*:\/\/.+/ =~ txt
144
+ end
145
+
146
+ def header_hash(header)
147
+ h = header.to_hash
148
+ h.each do |n,v|
149
+ h[n] = v.join if Array === v
150
+ end
151
+ end
152
+
153
+ def trim_url(url)
154
+ if url.is_a? String
155
+ url.sub(/\/$/, '')
156
+ else
157
+ url
158
+ end
159
+ end
160
+
161
+ def is_single_line?(text)
162
+ text.count("\n") < 2
163
+ end
164
+
165
+ def logger
166
+ @ar_logger
167
+ end
168
+
169
+ end
170
+
171
+ end
data/lib/ar/rule_dsl.rb CHANGED
@@ -12,5 +12,9 @@ module AutoResp
12
12
  def goto(url)
13
13
  add_handler '=GOTO=> ' << url
14
14
  end
15
+
16
+ def delay(sec)
17
+ add_handler( lambda { |*args| sleep sec; nil } )
18
+ end
15
19
  end
16
20
  end
@@ -19,7 +19,8 @@ module AutoResp
19
19
 
20
20
  def add_handler( handler )
21
21
  if @last_rule
22
- rules[@last_rule] = handler
22
+ rules[@last_rule] ||= []
23
+ rules[@last_rule] << handler
23
24
  end
24
25
  end
25
26
 
@@ -1,22 +1,27 @@
1
- require 'sinatra/base'
2
- require 'haml'
1
+ require 'webrick/httpserver'
2
+ require 'ar/har'
3
3
 
4
4
  module AutoResp
5
5
 
6
- class SessionViewer < Sinatra::Base
6
+ class SessionViewer
7
7
 
8
- class << self
9
- attr_accessor :proxy_server
8
+ def initialize( proxy_server )
9
+ @proxy_server = proxy_server
10
10
  end
11
11
 
12
- set :views, File.join(settings.root, 'viewer/tmpl')
13
-
14
- get '/' do
15
- haml :index
16
- end
17
-
18
- before('/') do
19
- @sessions = SessionViewer.proxy_server.sessions.dup
12
+ def run
13
+ root = File.expand_path('./viewer', File.dirname(__FILE__))
14
+ server = WEBrick::HTTPServer.new({
15
+ :BindAddress => '0.0.0.0',
16
+ :Port => 9090,
17
+ :AccessLog => [],
18
+ :Logger => WEBrick::Log.new("/dev/null"),
19
+ :DocumentRoot => root
20
+ })
21
+ server.mount_proc '/sessions.har' do |req, res|
22
+ res.body = HAR.sessions_to_har( @proxy_server.sessions )
23
+ end
24
+ server.start
20
25
  end
21
26
 
22
27
  end
data/lib/ar/version.rb ADDED
@@ -0,0 +1,3 @@
1
+ module AutoResp
2
+ VERSION = '0.1.8'
3
+ end
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file