auto_response 0.1.6 → 0.1.8
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.
- checksums.yaml +4 -4
- data/Gemfile +4 -3
- data/Gemfile.lock +9 -12
- data/bin/ar +14 -3
- data/lib/ar/har.rb +133 -0
- data/lib/ar/proxy_server.rb +171 -0
- data/lib/ar/rule_dsl.rb +4 -0
- data/lib/ar/rule_manager.rb +2 -1
- data/lib/ar/session_viewer.rb +18 -13
- data/lib/ar/version.rb +3 -0
- data/lib/ar/viewer/Images/applicationCache.png +0 -0
- data/lib/ar/viewer/Images/back.png +0 -0
- data/lib/ar/viewer/Images/checker.png +0 -0
- data/lib/ar/viewer/Images/closeButtons.png +0 -0
- data/lib/ar/viewer/Images/cookie.png +0 -0
- data/lib/ar/viewer/Images/database.png +0 -0
- data/lib/ar/viewer/Images/databaseTable.png +0 -0
- data/lib/ar/viewer/Images/deleteIcon.png +0 -0
- data/lib/ar/viewer/Images/disclosureTriangleSmallDown.png +0 -0
- data/lib/ar/viewer/Images/disclosureTriangleSmallDownBlack.png +0 -0
- data/lib/ar/viewer/Images/disclosureTriangleSmallDownWhite.png +0 -0
- data/lib/ar/viewer/Images/disclosureTriangleSmallRight.png +0 -0
- data/lib/ar/viewer/Images/disclosureTriangleSmallRightBlack.png +0 -0
- data/lib/ar/viewer/Images/disclosureTriangleSmallRightDown.png +0 -0
- data/lib/ar/viewer/Images/disclosureTriangleSmallRightDownBlack.png +0 -0
- data/lib/ar/viewer/Images/disclosureTriangleSmallRightDownWhite.png +0 -0
- data/lib/ar/viewer/Images/disclosureTriangleSmallRightWhite.png +0 -0
- data/lib/ar/viewer/Images/domain.png +0 -0
- data/lib/ar/viewer/Images/errorIcon.png +0 -0
- data/lib/ar/viewer/Images/errorMediumIcon.png +0 -0
- data/lib/ar/viewer/Images/errorRedDot.png +0 -0
- data/lib/ar/viewer/Images/fileSystem.png +0 -0
- data/lib/ar/viewer/Images/forward.png +0 -0
- data/lib/ar/viewer/Images/frame.png +0 -0
- data/lib/ar/viewer/Images/glossyHeader.png +0 -0
- data/lib/ar/viewer/Images/glossyHeaderPressed.png +0 -0
- data/lib/ar/viewer/Images/glossyHeaderSelected.png +0 -0
- data/lib/ar/viewer/Images/glossyHeaderSelectedPressed.png +0 -0
- data/lib/ar/viewer/Images/goArrow.png +0 -0
- data/lib/ar/viewer/Images/graphLabelCalloutLeft.png +0 -0
- data/lib/ar/viewer/Images/graphLabelCalloutRight.png +0 -0
- data/lib/ar/viewer/Images/indexedDB.png +0 -0
- data/lib/ar/viewer/Images/indexedDBIndex.png +0 -0
- data/lib/ar/viewer/Images/indexedDBObjectStore.png +0 -0
- data/lib/ar/viewer/Images/localStorage.png +0 -0
- data/lib/ar/viewer/Images/navigatorShowHideButton.png +0 -0
- data/lib/ar/viewer/Images/paneAddButtons.png +0 -0
- data/lib/ar/viewer/Images/paneBottomGrow.png +0 -0
- data/lib/ar/viewer/Images/paneBottomGrowActive.png +0 -0
- data/lib/ar/viewer/Images/paneElementStateButtons.png +0 -0
- data/lib/ar/viewer/Images/paneFilterButtons.png +0 -0
- data/lib/ar/viewer/Images/paneGrowHandleLine.png +0 -0
- data/lib/ar/viewer/Images/paneRefreshButtons.png +0 -0
- data/lib/ar/viewer/Images/paneSettingsButtons.png +0 -0
- data/lib/ar/viewer/Images/popoverArrows.png +0 -0
- data/lib/ar/viewer/Images/popoverBackground.png +0 -0
- data/lib/ar/viewer/Images/profileGroupIcon.png +0 -0
- data/lib/ar/viewer/Images/profileIcon.png +0 -0
- data/lib/ar/viewer/Images/profileSmallIcon.png +0 -0
- data/lib/ar/viewer/Images/profilesSilhouette.png +0 -0
- data/lib/ar/viewer/Images/programCounterBorder.png +0 -0
- data/lib/ar/viewer/Images/radioDot.png +0 -0
- data/lib/ar/viewer/Images/resourceCSSIcon.png +0 -0
- data/lib/ar/viewer/Images/resourceDocumentIcon.png +0 -0
- data/lib/ar/viewer/Images/resourceDocumentIconSmall.png +0 -0
- data/lib/ar/viewer/Images/resourceJSIcon.png +0 -0
- data/lib/ar/viewer/Images/resourcePlainIcon.png +0 -0
- data/lib/ar/viewer/Images/resourcePlainIconSmall.png +0 -0
- data/lib/ar/viewer/Images/resourcesSizeGraphIcon.png +0 -0
- data/lib/ar/viewer/Images/resourcesTimeGraphIcon.png +0 -0
- data/lib/ar/viewer/Images/scriptsSilhouette.png +0 -0
- data/lib/ar/viewer/Images/searchNext.png +0 -0
- data/lib/ar/viewer/Images/searchPrev.png +0 -0
- data/lib/ar/viewer/Images/searchSmallBlue.png +0 -0
- data/lib/ar/viewer/Images/searchSmallBrightBlue.png +0 -0
- data/lib/ar/viewer/Images/searchSmallGray.png +0 -0
- data/lib/ar/viewer/Images/searchSmallWhite.png +0 -0
- data/lib/ar/viewer/Images/segment.png +0 -0
- data/lib/ar/viewer/Images/segmentChromium.png +0 -0
- data/lib/ar/viewer/Images/segmentEnd.png +0 -0
- data/lib/ar/viewer/Images/segmentHover.png +0 -0
- data/lib/ar/viewer/Images/segmentHoverChromium.png +0 -0
- data/lib/ar/viewer/Images/segmentHoverEnd.png +0 -0
- data/lib/ar/viewer/Images/segmentHoverEndChromium.png +0 -0
- data/lib/ar/viewer/Images/segmentSelected.png +0 -0
- data/lib/ar/viewer/Images/segmentSelectedChromium.png +0 -0
- data/lib/ar/viewer/Images/segmentSelectedEnd.png +0 -0
- data/lib/ar/viewer/Images/segmentSelectedEndChromium.png +0 -0
- data/lib/ar/viewer/Images/sessionStorage.png +0 -0
- data/lib/ar/viewer/Images/spinner.gif +0 -0
- data/lib/ar/viewer/Images/spinnerActive.gif +0 -0
- data/lib/ar/viewer/Images/spinnerActiveSelected.gif +0 -0
- data/lib/ar/viewer/Images/spinnerInactive.gif +0 -0
- data/lib/ar/viewer/Images/spinnerInactiveSelected.gif +0 -0
- data/lib/ar/viewer/Images/splitviewDimple.png +0 -0
- data/lib/ar/viewer/Images/splitviewDividerBackground.png +0 -0
- data/lib/ar/viewer/Images/statusbarButtonGlyphs.png +0 -0
- data/lib/ar/viewer/Images/statusbarResizerHorizontal.png +0 -0
- data/lib/ar/viewer/Images/statusbarResizerVertical.png +0 -0
- data/lib/ar/viewer/Images/successGreenDot.png +0 -0
- data/lib/ar/viewer/Images/thumbActiveHoriz.png +0 -0
- data/lib/ar/viewer/Images/thumbActiveVert.png +0 -0
- data/lib/ar/viewer/Images/thumbHoriz.png +0 -0
- data/lib/ar/viewer/Images/thumbHoverHoriz.png +0 -0
- data/lib/ar/viewer/Images/thumbHoverVert.png +0 -0
- data/lib/ar/viewer/Images/thumbVert.png +0 -0
- data/lib/ar/viewer/Images/tickMark.png +0 -0
- data/lib/ar/viewer/Images/timelineHollowPillBlue.png +0 -0
- data/lib/ar/viewer/Images/timelineHollowPillGray.png +0 -0
- data/lib/ar/viewer/Images/timelineHollowPillGreen.png +0 -0
- data/lib/ar/viewer/Images/timelineHollowPillOrange.png +0 -0
- data/lib/ar/viewer/Images/timelineHollowPillPurple.png +0 -0
- data/lib/ar/viewer/Images/timelineHollowPillRed.png +0 -0
- data/lib/ar/viewer/Images/timelineHollowPillYellow.png +0 -0
- data/lib/ar/viewer/Images/timelinePillBlue.png +0 -0
- data/lib/ar/viewer/Images/timelinePillGray.png +0 -0
- data/lib/ar/viewer/Images/timelinePillGreen.png +0 -0
- data/lib/ar/viewer/Images/timelinePillOrange.png +0 -0
- data/lib/ar/viewer/Images/timelinePillPurple.png +0 -0
- data/lib/ar/viewer/Images/timelinePillRed.png +0 -0
- data/lib/ar/viewer/Images/timelinePillYellow.png +0 -0
- data/lib/ar/viewer/Images/toolbarIcons.png +0 -0
- data/lib/ar/viewer/Images/toolbarIconsSmall.png +0 -0
- data/lib/ar/viewer/Images/toolbarItemSelected.png +0 -0
- data/lib/ar/viewer/Images/trackHoriz.png +0 -0
- data/lib/ar/viewer/Images/trackVert.png +0 -0
- data/lib/ar/viewer/Images/treeDownTriangleBlack.png +0 -0
- data/lib/ar/viewer/Images/treeDownTriangleWhite.png +0 -0
- data/lib/ar/viewer/Images/treeRightTriangleBlack.png +0 -0
- data/lib/ar/viewer/Images/treeRightTriangleWhite.png +0 -0
- data/lib/ar/viewer/Images/treeUpTriangleBlack.png +0 -0
- data/lib/ar/viewer/Images/treeUpTriangleWhite.png +0 -0
- data/lib/ar/viewer/Images/userInputIcon.png +0 -0
- data/lib/ar/viewer/Images/userInputPreviousIcon.png +0 -0
- data/lib/ar/viewer/Images/userInputResultIcon.png +0 -0
- data/lib/ar/viewer/Images/warningIcon.png +0 -0
- data/lib/ar/viewer/Images/warningMediumIcon.png +0 -0
- data/lib/ar/viewer/Images/warningOrangeDot.png +0 -0
- data/lib/ar/viewer/Images/warningsErrors.png +0 -0
- data/lib/ar/viewer/chrome/Images/applicationCache.png +0 -0
- data/lib/ar/viewer/chrome/Images/back.png +0 -0
- data/lib/ar/viewer/chrome/Images/breakpointBorder.png +0 -0
- data/lib/ar/viewer/chrome/Images/breakpointConditionalBorder.png +0 -0
- data/lib/ar/viewer/chrome/Images/breakpointConditionalCounterBorder.png +0 -0
- data/lib/ar/viewer/chrome/Images/breakpointCounterBorder.png +0 -0
- data/lib/ar/viewer/chrome/Images/checker.png +0 -0
- data/lib/ar/viewer/chrome/Images/closeButtons.png +0 -0
- data/lib/ar/viewer/chrome/Images/cookie.png +0 -0
- data/lib/ar/viewer/chrome/Images/database.png +0 -0
- data/lib/ar/viewer/chrome/Images/databaseTable.png +0 -0
- data/lib/ar/viewer/chrome/Images/debuggerContinue.png +0 -0
- data/lib/ar/viewer/chrome/Images/debuggerPause.png +0 -0
- data/lib/ar/viewer/chrome/Images/debuggerStepInto.png +0 -0
- data/lib/ar/viewer/chrome/Images/debuggerStepOut.png +0 -0
- data/lib/ar/viewer/chrome/Images/debuggerStepOver.png +0 -0
- data/lib/ar/viewer/chrome/Images/deleteIcon.png +0 -0
- data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallDown.png +0 -0
- data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallDownBlack.png +0 -0
- data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallDownWhite.png +0 -0
- data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallRight.png +0 -0
- data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallRightBlack.png +0 -0
- data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallRightDown.png +0 -0
- data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallRightDownBlack.png +0 -0
- data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallRightDownWhite.png +0 -0
- data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallRightWhite.png +0 -0
- data/lib/ar/viewer/chrome/Images/domain.png +0 -0
- data/lib/ar/viewer/chrome/Images/errorIcon.png +0 -0
- data/lib/ar/viewer/chrome/Images/errorMediumIcon.png +0 -0
- data/lib/ar/viewer/chrome/Images/errorRedDot.png +0 -0
- data/lib/ar/viewer/chrome/Images/fileSystem.png +0 -0
- data/lib/ar/viewer/chrome/Images/forward.png +0 -0
- data/lib/ar/viewer/chrome/Images/frame.png +0 -0
- data/lib/ar/viewer/chrome/Images/glossyHeader.png +0 -0
- data/lib/ar/viewer/chrome/Images/glossyHeaderPressed.png +0 -0
- data/lib/ar/viewer/chrome/Images/glossyHeaderSelected.png +0 -0
- data/lib/ar/viewer/chrome/Images/glossyHeaderSelectedPressed.png +0 -0
- data/lib/ar/viewer/chrome/Images/goArrow.png +0 -0
- data/lib/ar/viewer/chrome/Images/graphLabelCalloutLeft.png +0 -0
- data/lib/ar/viewer/chrome/Images/graphLabelCalloutRight.png +0 -0
- data/lib/ar/viewer/chrome/Images/indexedDB.png +0 -0
- data/lib/ar/viewer/chrome/Images/indexedDBIndex.png +0 -0
- data/lib/ar/viewer/chrome/Images/indexedDBObjectStore.png +0 -0
- data/lib/ar/viewer/chrome/Images/localStorage.png +0 -0
- data/lib/ar/viewer/chrome/Images/navigatorShowHideButton.png +0 -0
- data/lib/ar/viewer/chrome/Images/paneAddButtons.png +0 -0
- data/lib/ar/viewer/chrome/Images/paneBottomGrow.png +0 -0
- data/lib/ar/viewer/chrome/Images/paneBottomGrowActive.png +0 -0
- data/lib/ar/viewer/chrome/Images/paneElementStateButtons.png +0 -0
- data/lib/ar/viewer/chrome/Images/paneFilterButtons.png +0 -0
- data/lib/ar/viewer/chrome/Images/paneGrowHandleLine.png +0 -0
- data/lib/ar/viewer/chrome/Images/paneRefreshButtons.png +0 -0
- data/lib/ar/viewer/chrome/Images/paneSettingsButtons.png +0 -0
- data/lib/ar/viewer/chrome/Images/popoverArrows.png +0 -0
- data/lib/ar/viewer/chrome/Images/popoverBackground.png +0 -0
- data/lib/ar/viewer/chrome/Images/profileGroupIcon.png +0 -0
- data/lib/ar/viewer/chrome/Images/profileIcon.png +0 -0
- data/lib/ar/viewer/chrome/Images/profileSmallIcon.png +0 -0
- data/lib/ar/viewer/chrome/Images/profilesSilhouette.png +0 -0
- data/lib/ar/viewer/chrome/Images/programCounterBorder.png +0 -0
- data/lib/ar/viewer/chrome/Images/radioDot.png +0 -0
- data/lib/ar/viewer/chrome/Images/resourceCSSIcon.png +0 -0
- data/lib/ar/viewer/chrome/Images/resourceDocumentIcon.png +0 -0
- data/lib/ar/viewer/chrome/Images/resourceDocumentIconSmall.png +0 -0
- data/lib/ar/viewer/chrome/Images/resourceJSIcon.png +0 -0
- data/lib/ar/viewer/chrome/Images/resourcePlainIcon.png +0 -0
- data/lib/ar/viewer/chrome/Images/resourcePlainIconSmall.png +0 -0
- data/lib/ar/viewer/chrome/Images/resourcesSizeGraphIcon.png +0 -0
- data/lib/ar/viewer/chrome/Images/resourcesTimeGraphIcon.png +0 -0
- data/lib/ar/viewer/chrome/Images/scriptsSilhouette.png +0 -0
- data/lib/ar/viewer/chrome/Images/searchNext.png +0 -0
- data/lib/ar/viewer/chrome/Images/searchPrev.png +0 -0
- data/lib/ar/viewer/chrome/Images/searchSmallBlue.png +0 -0
- data/lib/ar/viewer/chrome/Images/searchSmallBrightBlue.png +0 -0
- data/lib/ar/viewer/chrome/Images/searchSmallGray.png +0 -0
- data/lib/ar/viewer/chrome/Images/searchSmallWhite.png +0 -0
- data/lib/ar/viewer/chrome/Images/segment.png +0 -0
- data/lib/ar/viewer/chrome/Images/segmentChromium.png +0 -0
- data/lib/ar/viewer/chrome/Images/segmentEnd.png +0 -0
- data/lib/ar/viewer/chrome/Images/segmentHover.png +0 -0
- data/lib/ar/viewer/chrome/Images/segmentHoverChromium.png +0 -0
- data/lib/ar/viewer/chrome/Images/segmentHoverEnd.png +0 -0
- data/lib/ar/viewer/chrome/Images/segmentHoverEndChromium.png +0 -0
- data/lib/ar/viewer/chrome/Images/segmentSelected.png +0 -0
- data/lib/ar/viewer/chrome/Images/segmentSelectedChromium.png +0 -0
- data/lib/ar/viewer/chrome/Images/segmentSelectedEnd.png +0 -0
- data/lib/ar/viewer/chrome/Images/segmentSelectedEndChromium.png +0 -0
- data/lib/ar/viewer/chrome/Images/sessionStorage.png +0 -0
- data/lib/ar/viewer/chrome/Images/spinner.gif +0 -0
- data/lib/ar/viewer/chrome/Images/spinnerActive.gif +0 -0
- data/lib/ar/viewer/chrome/Images/spinnerActiveSelected.gif +0 -0
- data/lib/ar/viewer/chrome/Images/spinnerInactive.gif +0 -0
- data/lib/ar/viewer/chrome/Images/spinnerInactiveSelected.gif +0 -0
- data/lib/ar/viewer/chrome/Images/splitviewDimple.png +0 -0
- data/lib/ar/viewer/chrome/Images/splitviewDividerBackground.png +0 -0
- data/lib/ar/viewer/chrome/Images/statusbarButtonGlyphs.png +0 -0
- data/lib/ar/viewer/chrome/Images/statusbarResizerHorizontal.png +0 -0
- data/lib/ar/viewer/chrome/Images/statusbarResizerVertical.png +0 -0
- data/lib/ar/viewer/chrome/Images/successGreenDot.png +0 -0
- data/lib/ar/viewer/chrome/Images/thumbActiveHoriz.png +0 -0
- data/lib/ar/viewer/chrome/Images/thumbActiveVert.png +0 -0
- data/lib/ar/viewer/chrome/Images/thumbHoriz.png +0 -0
- data/lib/ar/viewer/chrome/Images/thumbHoverHoriz.png +0 -0
- data/lib/ar/viewer/chrome/Images/thumbHoverVert.png +0 -0
- data/lib/ar/viewer/chrome/Images/thumbVert.png +0 -0
- data/lib/ar/viewer/chrome/Images/tickMark.png +0 -0
- data/lib/ar/viewer/chrome/Images/timelineHollowPillBlue.png +0 -0
- data/lib/ar/viewer/chrome/Images/timelineHollowPillGray.png +0 -0
- data/lib/ar/viewer/chrome/Images/timelineHollowPillGreen.png +0 -0
- data/lib/ar/viewer/chrome/Images/timelineHollowPillOrange.png +0 -0
- data/lib/ar/viewer/chrome/Images/timelineHollowPillPurple.png +0 -0
- data/lib/ar/viewer/chrome/Images/timelineHollowPillRed.png +0 -0
- data/lib/ar/viewer/chrome/Images/timelineHollowPillYellow.png +0 -0
- data/lib/ar/viewer/chrome/Images/timelinePillBlue.png +0 -0
- data/lib/ar/viewer/chrome/Images/timelinePillGray.png +0 -0
- data/lib/ar/viewer/chrome/Images/timelinePillGreen.png +0 -0
- data/lib/ar/viewer/chrome/Images/timelinePillOrange.png +0 -0
- data/lib/ar/viewer/chrome/Images/timelinePillPurple.png +0 -0
- data/lib/ar/viewer/chrome/Images/timelinePillRed.png +0 -0
- data/lib/ar/viewer/chrome/Images/timelinePillYellow.png +0 -0
- data/lib/ar/viewer/chrome/Images/toolbarIcons.png +0 -0
- data/lib/ar/viewer/chrome/Images/toolbarIconsSmall.png +0 -0
- data/lib/ar/viewer/chrome/Images/toolbarItemSelected.png +0 -0
- data/lib/ar/viewer/chrome/Images/trackHoriz.png +0 -0
- data/lib/ar/viewer/chrome/Images/trackVert.png +0 -0
- data/lib/ar/viewer/chrome/Images/treeDownTriangleBlack.png +0 -0
- data/lib/ar/viewer/chrome/Images/treeDownTriangleWhite.png +0 -0
- data/lib/ar/viewer/chrome/Images/treeRightTriangleBlack.png +0 -0
- data/lib/ar/viewer/chrome/Images/treeRightTriangleWhite.png +0 -0
- data/lib/ar/viewer/chrome/Images/treeUpTriangleBlack.png +0 -0
- data/lib/ar/viewer/chrome/Images/treeUpTriangleWhite.png +0 -0
- data/lib/ar/viewer/chrome/Images/userInputIcon.png +0 -0
- data/lib/ar/viewer/chrome/Images/userInputPreviousIcon.png +0 -0
- data/lib/ar/viewer/chrome/Images/userInputResultIcon.png +0 -0
- data/lib/ar/viewer/chrome/Images/warningIcon.png +0 -0
- data/lib/ar/viewer/chrome/Images/warningMediumIcon.png +0 -0
- data/lib/ar/viewer/chrome/Images/warningOrangeDot.png +0 -0
- data/lib/ar/viewer/chrome/Images/warningsErrors.png +0 -0
- data/lib/ar/viewer/chrome/dataGrid.css +218 -0
- data/lib/ar/viewer/chrome/devTools.css +97 -0
- data/lib/ar/viewer/chrome/dialog.css +55 -0
- data/lib/ar/viewer/chrome/elementsPanel.css +692 -0
- data/lib/ar/viewer/chrome/filteredItemSelectionDialog.css +41 -0
- data/lib/ar/viewer/chrome/heapProfiler.css +263 -0
- data/lib/ar/viewer/chrome/helpScreen.css +286 -0
- data/lib/ar/viewer/chrome/indexedDBViews.css +124 -0
- data/lib/ar/viewer/chrome/inspector.css +2878 -0
- data/lib/ar/viewer/chrome/inspectorCommon.css +177 -0
- data/lib/ar/viewer/chrome/inspectorSyntaxHighlight.css +111 -0
- data/lib/ar/viewer/chrome/nativeMemoryProfiler.css +86 -0
- data/lib/ar/viewer/chrome/navigatorView.css +142 -0
- data/lib/ar/viewer/chrome/networkLogView.css +559 -0
- data/lib/ar/viewer/chrome/networkPanel.css +340 -0
- data/lib/ar/viewer/chrome/panelEnablerView.css +168 -0
- data/lib/ar/viewer/chrome/popover.css +94 -0
- data/lib/ar/viewer/chrome/profilesPanel.css +201 -0
- data/lib/ar/viewer/chrome/resourceView.css +105 -0
- data/lib/ar/viewer/chrome/resourcesPanel.css +331 -0
- data/lib/ar/viewer/chrome/revisionHistory.css +90 -0
- data/lib/ar/viewer/chrome/scriptsPanel.css +286 -0
- data/lib/ar/viewer/chrome/splitView.css +91 -0
- data/lib/ar/viewer/chrome/tabbedPane.css +165 -0
- data/lib/ar/viewer/chrome/textEditor.css +181 -0
- data/lib/ar/viewer/chrome/textPrompt.css +69 -0
- data/lib/ar/viewer/chrome/timelinePanel.css +656 -0
- data/lib/ar/viewer/components/angular/angular.js +14760 -0
- data/lib/ar/viewer/components/angular/angular.min.js +162 -0
- data/lib/ar/viewer/components/angular/component.json +14 -0
- data/lib/ar/viewer/components/jquery/README.md +11 -0
- data/lib/ar/viewer/components/jquery/bower.json +14 -0
- data/lib/ar/viewer/components/jquery/component.json +22 -0
- data/lib/ar/viewer/components/jquery/composer.json +35 -0
- data/lib/ar/viewer/components/jquery/jquery-migrate.js +511 -0
- data/lib/ar/viewer/components/jquery/jquery-migrate.min.js +3 -0
- data/lib/ar/viewer/components/jquery/jquery.js +8755 -0
- data/lib/ar/viewer/components/jquery/jquery.min.js +6 -0
- data/lib/ar/viewer/components/jquery/package.json +7 -0
- data/lib/ar/viewer/css/style.css +186 -0
- data/lib/ar/viewer/index.html +422 -0
- data/lib/ar/viewer/js/controllers.js +124 -0
- data/lib/ar/viewer/js/libs/HAREntry.js +154 -0
- data/lib/ar/viewer/js/libs/devTools.js +371 -0
- data/lib/ar/viewer/js/libs/modernizr.custom.min.js +4 -0
- data/lib/ar/viewer/js/script.js +36 -0
- data/lib/ar/viewer/sample.har +6723 -0
- data/lib/ar/viewer/sass/style.scss +149 -0
- data/lib/{autoresponse.rb → auto_response.rb} +30 -31
- data/readme.md +4 -0
- data/rules.sample +9 -0
- data/test/helper.rb +1 -1
- metadata +365 -9
- data/bin/start_ar.rb +0 -5
- data/bin/start_ar.rb.pid +0 -1
- data/lib/ar/proxyserver.rb +0 -106
- data/lib/ar/viewer/tmpl/index.haml +0 -55
@@ -0,0 +1,422 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html lang="en" ng-app="net">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
6
|
+
<title>AutoResponse session viewer</title>
|
7
|
+
<meta name="description" content="http debug tool">
|
8
|
+
|
9
|
+
<!-- Required Chrome Dev Tools CSS -->
|
10
|
+
<link rel="stylesheet" type="text/css" href="chrome/dialog.css">
|
11
|
+
<link rel="stylesheet" type="text/css" href="chrome/inspector.css">
|
12
|
+
<link rel="stylesheet" type="text/css" href="chrome/inspectorCommon.css">
|
13
|
+
<link rel="stylesheet" type="text/css" href="chrome/inspectorSyntaxHighlight.css">
|
14
|
+
<link rel="stylesheet" type="text/css" href="chrome/popover.css">
|
15
|
+
<link rel="stylesheet" type="text/css" href="chrome/dataGrid.css">
|
16
|
+
<link rel="stylesheet" type="text/css" href="chrome/tabbedPane.css">
|
17
|
+
<link rel="stylesheet" type="text/css" href="chrome/splitView.css">
|
18
|
+
<link rel="stylesheet" type="text/css" href="chrome/networkLogView.css">
|
19
|
+
<link rel="stylesheet" type="text/css" href="chrome/networkPanel.css">
|
20
|
+
<link rel="stylesheet" type="text/css" href="chrome/networkLogView.css">
|
21
|
+
|
22
|
+
<link rel="stylesheet" type="text/css" href="css/style.css">
|
23
|
+
<script src="js/libs/modernizr.custom.min.js"></script>
|
24
|
+
</head>
|
25
|
+
<body class="detached" ng-controller="NetworkCtrl">
|
26
|
+
|
27
|
+
<div id="toolbar">
|
28
|
+
<div class="toolbar-controls">
|
29
|
+
<div class="toolbar-item" id="toolbar-sample-item">
|
30
|
+
<a href="#" class="sample">refresh</a>
|
31
|
+
</div>
|
32
|
+
<div class="toolbar-item" id="toolbar-search-item">
|
33
|
+
<input id="search" type="search" incremental="" results="0" placeholder="Search Network" ng-model="query">
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
<button class="toolbar-item toggleable network toggled-on">
|
37
|
+
<div class="toolbar-icon"></div>
|
38
|
+
<div class="toolbar-label">Network</div>
|
39
|
+
</button>
|
40
|
+
</div>
|
41
|
+
<div id="main">
|
42
|
+
<div id="main-status-bar" class="status-bar">
|
43
|
+
<div id="anchored-status-bar-items">
|
44
|
+
<button class="settings-status-bar-item status-bar-item" title="Settings">
|
45
|
+
<div class="glyph"></div><div class="glyph shadow"></div>
|
46
|
+
</button>
|
47
|
+
</div>
|
48
|
+
<div>
|
49
|
+
<button ng-click="class='small'" class="network-larger-resources-status-bar-item status-bar-item toggled-on" title="Use small resource rows.">
|
50
|
+
<div class="glyph"></div><div class="glyph shadow"></div>
|
51
|
+
</button>
|
52
|
+
<div class="scope-bar status-bar-item" id="network-filter">
|
53
|
+
<li ng-class="getClass('all')" class="all" ng-click="type.mimeType='';sI='all'">All</li>
|
54
|
+
<div class="scope-bar-divider"></div>
|
55
|
+
<li ng-class="getClass('doc')" class="document" ng-click="type.mimeType='text/html';sI='doc'">Documents</li>
|
56
|
+
<li ng-class="getClass('css')" class="stylesheet" ng-click="type.mimeType='text/css';sI='css'">Stylesheets</li>
|
57
|
+
<li ng-class="getClass('img')" class="image" ng-click="type.mimeType='image/';sI='img'">Images</li>
|
58
|
+
<li ng-class="getClass('js')" class="script" ng-click="type.mimeType='text/javascript';sI='js'">Scripts</li>
|
59
|
+
<li ng-class="getClass('xhr')" class="xhr" ng-click="type.mimeType='application/x-javascript';sI='xhr'">XHR</li>
|
60
|
+
<li ng-class="getClass('fnt')" class="font" ng-click="type.mimeType='application/octet-stream';sI='fnt'">Fonts</li>
|
61
|
+
<li ng-class="getClass('sck')" class="websocket" ng-click="sI='sck'">WebSockets</li>
|
62
|
+
<li ng-class="getClass('oth')" class="other" ng-click="sI='oth'">Other</li>
|
63
|
+
</div>
|
64
|
+
</div>
|
65
|
+
</div>
|
66
|
+
<div id="main-panels" class="visible">
|
67
|
+
<div class="panel network visible">
|
68
|
+
<div class="split-view visible">
|
69
|
+
<div class="split-view-contents split-view-sidebar-left maximized">
|
70
|
+
<div id="network-container" class="visible">
|
71
|
+
<div class="data-grid network-log-grid visible filter-all" tabindex="0">
|
72
|
+
<table class="header">
|
73
|
+
<colgroup span="7">
|
74
|
+
<col class="first">
|
75
|
+
<col class="sec">
|
76
|
+
<col class="third">
|
77
|
+
<col class="fourth">
|
78
|
+
<col class="five">
|
79
|
+
<col class="six">
|
80
|
+
<col class="sev">
|
81
|
+
</colgroup>
|
82
|
+
<tbody>
|
83
|
+
<tr>
|
84
|
+
<th class="name-column sortable" ng-click="setSort('nameSort');">
|
85
|
+
<div>Name<div class="network-header-subtitle">Path</div></div>
|
86
|
+
</th>
|
87
|
+
<th class="method-column sortable" ng-click="setSort('method');">
|
88
|
+
<div>Method</div>
|
89
|
+
</th>
|
90
|
+
<th class="status-column sortable" ng-click="setSort('status');">
|
91
|
+
<div>Status<div class="network-header-subtitle">Text</div></div>
|
92
|
+
</th>
|
93
|
+
<th class="type-column sortable" ng-click="setSort('mimeType');">
|
94
|
+
<div>Type</div>
|
95
|
+
</th>
|
96
|
+
<th class="size-column sortable" ng-click="setSort('size');">
|
97
|
+
<div>Size<div class="network-header-subtitle">Content</div></div>
|
98
|
+
</th>
|
99
|
+
<th class="time-column sortable" ng-click="setSort('timeSort')">
|
100
|
+
<div>Time<div class="network-header-subtitle">Latency</div></div>
|
101
|
+
</th>
|
102
|
+
<th class="timeline-column sort-ascending">
|
103
|
+
<select>
|
104
|
+
<option value="startTime" label="Timeline"></option>
|
105
|
+
<option value="startTime" label="Start Time"></option>
|
106
|
+
<option value="responseTime" label="Response Time"></option>
|
107
|
+
<option value="endTime" label="End Time"></option>
|
108
|
+
<option value="duration" label="Duration"></option>
|
109
|
+
<option value="latency" label="Latency"></option>
|
110
|
+
</select>
|
111
|
+
</th>
|
112
|
+
<th class="corner"></th>
|
113
|
+
</tr>
|
114
|
+
</tbody>
|
115
|
+
</table>
|
116
|
+
|
117
|
+
<div class="data-container">
|
118
|
+
<div class="page-wrapper">
|
119
|
+
<table class="data">
|
120
|
+
<colgroup span="7">
|
121
|
+
<col class="first">
|
122
|
+
<col class="sec">
|
123
|
+
<col class="third">
|
124
|
+
<col class="fourth">
|
125
|
+
<col class="five">
|
126
|
+
<col class="six">
|
127
|
+
<col class="sev">
|
128
|
+
</colgroup>
|
129
|
+
<thead ng-show="checked">
|
130
|
+
<tr class="revealed page-summary-bar">
|
131
|
+
<td colspan="7"></td>
|
132
|
+
</tr>
|
133
|
+
</thead>
|
134
|
+
<tfoot ng-show="checked">
|
135
|
+
<tr class="revealed network-summary-bar">
|
136
|
+
<!-- FixMe: This always assume ms -->
|
137
|
+
<td colspan="7"></td>
|
138
|
+
</tr>
|
139
|
+
</tfoot>
|
140
|
+
<tbody>
|
141
|
+
|
142
|
+
<tr ng-class="getSelectedRow($index)"
|
143
|
+
class="revealed auto-response-{{entry.autoResponded}} network-item network-type-{{entry.name}}"
|
144
|
+
data-id="{{entry.id}}"
|
145
|
+
ng-repeat="entry in entries | filter:query | filter:type | orderBy:predicate:reverse">
|
146
|
+
|
147
|
+
<td class="name-column" ng-click="showDetails($index)"><div title="{{entry.url}}"><img class="icon">{{entry.parsedURL.lastPathComponent}}<div class="network-cell-subtitle">{{entry.folder}}</div></div></td>
|
148
|
+
<td class="method-column"><div title="{{entry.method}}">{{entry.method}}</div></td>
|
149
|
+
<td class="status-column"><div title="{{entry.status}} {{entry.statusText}}">{{entry.status}}<div class="network-cell-subtitle">{{entry.statusText}}</div></div></td>
|
150
|
+
<td class="type-column"><div title="{{entry.mimeType}}">{{entry.mimeType}}</div></td>
|
151
|
+
<td class="size-column"><div title="{{entry.size}}">{{entry.size}}<div class="network-cell-subtitle">{{entry.contentSize}}</div></div></td>
|
152
|
+
<td class="time-column"><div title="{{entry.time}}">{{entry.time}}<div class="network-cell-subtitle">{{entry.latency}}</div></div></td>
|
153
|
+
<td class="timeline-column">
|
154
|
+
<div class="network-graph-side network-type-{{entry.name}}">
|
155
|
+
<div class="network-graph-bar-area">
|
156
|
+
<div class="network-graph-bar waiting" style="left: {{entry.graphs.latency_left}}%; right: {{entry.graphs.latency_right}}%;" title=""></div>
|
157
|
+
<div class="network-graph-bar" style="left: {{entry.graphs.receiving_left}}%; right: {{entry.graphs.receiving_right}}%;" title=""></div>
|
158
|
+
<div class="network-graph-label waiting" title="">{{entry.latency}}</div>
|
159
|
+
<div class="network-graph-label after" title="">{{entry.receiveTime}}</div>
|
160
|
+
</div>
|
161
|
+
</div>
|
162
|
+
</td>
|
163
|
+
</tr>
|
164
|
+
</tbody>
|
165
|
+
</table>
|
166
|
+
<div class="network-timeline-grid" ng-show="checked">
|
167
|
+
<div id="resources-graphs"></div>
|
168
|
+
<div class="resources-dividers">
|
169
|
+
<div class="resources-divider first" style="left: 8.333333333333338%"></div>
|
170
|
+
<div class="resources-divider" style="left: 16.666666666666668%; "></div>
|
171
|
+
<div class="resources-divider" style="left: 25%; "></div>
|
172
|
+
<div class="resources-divider" style="left: 33.333333333333336%; "></div>
|
173
|
+
<div class="resources-divider" style="left: 41.66666666666667%; "></div>
|
174
|
+
<div class="resources-divider" style="left: 50%; "></div>
|
175
|
+
<div class="resources-divider" style="left: 58.333333333333336%; "></div>
|
176
|
+
<div class="resources-divider" style="left: 66.66666666666667%; "></div>
|
177
|
+
<div class="resources-divider" style="left: 75%; "></div>
|
178
|
+
<div class="resources-divider" style="left: 83.33333333333334%; "></div>
|
179
|
+
<div class="resources-divider" style="left: 91.66666666666667%; "></div>
|
180
|
+
<div class="resources-divider last" style="left: 100%; "></div>
|
181
|
+
</div>
|
182
|
+
<div class="resources-event-dividers">
|
183
|
+
<div class="network-event-divider-padding" title="Load event fired" style="left: {{page.load_event_left}}%; ">
|
184
|
+
<div class="network-event-divider network-red-divider"></div>
|
185
|
+
</div>
|
186
|
+
<div class="network-event-divider-padding" title="DOMContent event fired" style="left: {{page.content_load_left}}%; ">
|
187
|
+
<div class="network-event-divider network-blue-divider"></div>
|
188
|
+
</div>
|
189
|
+
</div>
|
190
|
+
<div class="resources-dividers-label-bar">
|
191
|
+
<div class="resources-divider first" style="left: 8.333333333333338%; ">
|
192
|
+
<div class="resources-divider-label">{{labels.1}}</div>
|
193
|
+
</div>
|
194
|
+
<div class="resources-divider" style="left: 16.666666666666668%; ">
|
195
|
+
<div class="resources-divider-label">{{labels.2}}</div>
|
196
|
+
</div>
|
197
|
+
<div class="resources-divider" style="left: 25%; ">
|
198
|
+
<div class="resources-divider-label">{{labels.3}}</div>
|
199
|
+
</div>
|
200
|
+
<div class="resources-divider" style="left: 33.333333333333336%; ">
|
201
|
+
<div class="resources-divider-label">{{labels.4}}</div>
|
202
|
+
</div>
|
203
|
+
<div class="resources-divider" style="left: 41.66666666666667%; ">
|
204
|
+
<div class="resources-divider-label">{{labels.5}}</div>
|
205
|
+
</div>
|
206
|
+
<div class="resources-divider" style="left: 50%; ">
|
207
|
+
<div class="resources-divider-label">{{labels.6}}</div>
|
208
|
+
</div>
|
209
|
+
<div class="resources-divider" style="left: 58.333333333333336%; ">
|
210
|
+
<div class="resources-divider-label">{{labels.7}}</div>
|
211
|
+
</div>
|
212
|
+
<div class="resources-divider" style="left: 66.66666666666667%; ">
|
213
|
+
<div class="resources-divider-label">{{labels.8}}</div>
|
214
|
+
</div>
|
215
|
+
<div class="resources-divider" style="left: 75%; ">
|
216
|
+
<div class="resources-divider-label">{{labels.9}}</div>
|
217
|
+
</div>
|
218
|
+
<div class="resources-divider" style="left: 83.33333333333334%; ">
|
219
|
+
<div class="resources-divider-label">{{labels.10}}</div>
|
220
|
+
</div>
|
221
|
+
<div class="resources-divider" style="left: 91.66666666666667%; ">
|
222
|
+
<div class="resources-divider-label">{{labels.11}}</div>
|
223
|
+
</div>
|
224
|
+
<div class="resources-divider last" style="left: 100%; ">
|
225
|
+
<div class="resources-divider-label">{{labels.12}}</div>
|
226
|
+
</div>
|
227
|
+
</div>
|
228
|
+
</div>
|
229
|
+
</div>
|
230
|
+
</div>
|
231
|
+
</div>
|
232
|
+
</div>
|
233
|
+
</div>
|
234
|
+
<div class="split-view-contents split-view-network-views hidden" id="network-views">
|
235
|
+
<button id="network-close-button" ng-click="hideDetails()"></button>
|
236
|
+
<div class="tabbed-pane network-item-view visible">
|
237
|
+
<div class="tabbed-pane-header">
|
238
|
+
<div class="tabbed-pane-header-contents">
|
239
|
+
<div class="tabbed-pane-header-tabs">
|
240
|
+
<div ng-click="showTab(1)" ng-class="getTab(1)" class="tabbed-pane-header-tab selected"><span class="tabbed-pane-header-tab-title" title="">Headers</span></div>
|
241
|
+
<div ng-click="showTab(2)" ng-class="getTab(2)" class="tabbed-pane-header-tab"><span class="tabbed-pane-header-tab-title" title="">Cookies</span></div>
|
242
|
+
<div ng-click="showTab(3)" ng-class="getTab(3)" class="tabbed-pane-header-tab"><span class="tabbed-pane-header-tab-title" title="">Timing</span></div>
|
243
|
+
<div ng-click="showTab(4)" ng-class="getTab(4)" class="tabbed-pane-header-tab"><span class="tabbed-pane-header-tab-title" title="">Response</span></div>
|
244
|
+
</div>
|
245
|
+
</div>
|
246
|
+
</div>
|
247
|
+
<div class="tabbed-pane-content">
|
248
|
+
<div ng-class="getVisibleTab(1)" class="resource-headers-view">
|
249
|
+
<ol class="outline-disclosure" tabindex="0">
|
250
|
+
<li>
|
251
|
+
<div class="header-name">Request URL:</div>
|
252
|
+
<div class="header-value source-code">{{selectedEntry.url}}</div>
|
253
|
+
</li>
|
254
|
+
<li>
|
255
|
+
<div class="header-name">Request Method:</div>
|
256
|
+
<div class="header-value source-code">{{selectedEntry.method}}</div>
|
257
|
+
</li>
|
258
|
+
<li>
|
259
|
+
<div class="header-name">Status Code:</div>
|
260
|
+
<img class="resource-status-image" src="Images/successGreenDot.png" title="{{selectedEntry.status}} {{selectedEntry.statusText}}">
|
261
|
+
<div class="header-value source-code">{{selectedEntry.status}} {{selectedEntry.statusText}}</div>
|
262
|
+
</li>
|
263
|
+
<li ng-show="selectedEntry.reqHeadersCount" class="request parent expanded" ng-click="toggleReqHeaders()">Request Headers<span class="header-count"> ({{selectedEntry.reqHeadersCount}})</span></li>
|
264
|
+
<ol class="request children expanded">
|
265
|
+
<li ng-repeat="header in selectedEntry._entry.request.headers | orderBy:'name'">
|
266
|
+
<div class="header-name">{{header.name}}:</div>
|
267
|
+
<div class="header-value source-code">{{header.value}}</div>
|
268
|
+
</li>
|
269
|
+
</ol>
|
270
|
+
<li ng-show="selectedEntry.resHeadersCount" class="response parent expanded" ng-click="toggleResHeaders()">Response Headers<span class="header-count"> ({{selectedEntry.resHeadersCount}})</span></li>
|
271
|
+
<ol class="response children expanded">
|
272
|
+
<li ng-repeat="header in selectedEntry._entry.response.headers | orderBy:'name'">
|
273
|
+
<div class="header-name">{{header.name}}:</div>
|
274
|
+
<div class="header-value source-code">{{header.value}}</div>
|
275
|
+
</li>
|
276
|
+
</ol>
|
277
|
+
</ol>
|
278
|
+
</div>
|
279
|
+
<div ng-class="getVisibleTab(2)" class="resource-cookies-view">
|
280
|
+
<div class="fill visible">
|
281
|
+
<div class="data-grid visible" tabindex="0">
|
282
|
+
<table class="header">
|
283
|
+
<colgroup span="8">
|
284
|
+
<col style="width: 24.056189640035118%; ">
|
285
|
+
<col style="width: 34.06496927129061%; ">
|
286
|
+
<col style="width: 7.023705004389816%; ">
|
287
|
+
<col style="width: 7.023705004389816%; ">
|
288
|
+
<col style="width: 7.023705004389816%; ">
|
289
|
+
<col style="width: 6.935908691834943%; ">
|
290
|
+
<col style="width: 6.935908691834943%; ">
|
291
|
+
<col style="width: 6.935908691834943%; ">
|
292
|
+
</colgroup>
|
293
|
+
<tbody>
|
294
|
+
<tr>
|
295
|
+
<th class="0-column sortable"><div>Name</div></th>
|
296
|
+
<th class="1-column sortable"><div>Value</div></th>
|
297
|
+
<th class="2-column sortable"><div>Domain</div></th>
|
298
|
+
<th class="3-column sortable"><div>Path</div></th>
|
299
|
+
<th class="4-column sortable"><div>Expires</div></th>
|
300
|
+
<th class="5-column sortable"><div>Size</div></th>
|
301
|
+
<th class="6-column sortable"><div>HTTP</div></th>
|
302
|
+
<th class="7-column sortable"><div>Secure</div></th>
|
303
|
+
<th class="corner"></th>
|
304
|
+
</tr>
|
305
|
+
</tbody>
|
306
|
+
</table>
|
307
|
+
<div class="data-container">
|
308
|
+
<table class="data">
|
309
|
+
<colgroup span="8">
|
310
|
+
<col style="width: 24.056189640035118%; ">
|
311
|
+
<col style="width: 34.06496927129061%; ">
|
312
|
+
<col style="width: 7.023705004389816%; ">
|
313
|
+
<col style="width: 7.023705004389816%; ">
|
314
|
+
<col style="width: 7.023705004389816%; ">
|
315
|
+
<col style="width: 6.935908691834943%; ">
|
316
|
+
<col style="width: 6.935908691834943%; ">
|
317
|
+
<col style="width: 6.935908691834943%; ">
|
318
|
+
</colgroup>
|
319
|
+
<tbody>
|
320
|
+
<tr class="request revealed row-group parent expanded">
|
321
|
+
<td class="0-column disclosure"><div>Request Cookies</div></td>
|
322
|
+
<td class="1-column"><div></div></td>
|
323
|
+
<td class="2-column"><div></div></td>
|
324
|
+
<td class="3-column"><div></div></td>
|
325
|
+
<td class="4-column"><div></div></td>
|
326
|
+
<td class="5-column right"><div></div></td>
|
327
|
+
<td class="6-column centered"><div></div></td>
|
328
|
+
<td class="7-column centered"><div></div></td>
|
329
|
+
</tr>
|
330
|
+
<tr class="revealed" ng-repeat="cookie in selectedEntry._entry.request.cookies">
|
331
|
+
<td class="0-column disclosure" style="padding-left: 15px; "><div>{{cookie.name}}</div></td>
|
332
|
+
<td class="1-column"><div>{{cookie.value}}</div></td>
|
333
|
+
<td class="2-column"><div>{{cookie.domain}}</div></td>
|
334
|
+
<td class="3-column"><div>{{cookie.path}}</div></td>
|
335
|
+
<td class="4-column"><div></div></td>
|
336
|
+
<td class="5-column right"><div></div></td>
|
337
|
+
<td class="6-column centered"><div></div></td>
|
338
|
+
<td class="7-column centered"><div></div></td>
|
339
|
+
</tr>
|
340
|
+
<tr class="response revealed row-group parent expanded">
|
341
|
+
<td class="0-column disclosure"><div>Response Cookies</div></td>
|
342
|
+
<td class="1-column"><div></div></td>
|
343
|
+
<td class="2-column"><div></div></td>
|
344
|
+
<td class="3-column"><div></div></td>
|
345
|
+
<td class="4-column"><div></div></td>
|
346
|
+
<td class="5-column right"><div></div></td>
|
347
|
+
<td class="6-column centered"><div></div></td>
|
348
|
+
<td class="7-column centered"><div></div></td>
|
349
|
+
</tr>
|
350
|
+
<tr class="revealed" ng-repeat="cookie in selectedEntry._entry.response.cookies">
|
351
|
+
<td class="0-column disclosure" style="padding-left: 15px; "><div>{{cookie.name}}</div></td>
|
352
|
+
<td class="1-column"><div>{{cookie.value}}</div></td>
|
353
|
+
<td class="2-column"><div>{{cookie.domain}}</div></td>
|
354
|
+
<td class="3-column"><div>{{cookie.path}}</div></td>
|
355
|
+
<td class="4-column"><div></div></td>
|
356
|
+
<td class="5-column right"><div></div></td>
|
357
|
+
<td class="6-column centered"><div></div></td>
|
358
|
+
<td class="7-column centered"><div></div></td>
|
359
|
+
</tr>
|
360
|
+
<tr class="filler">
|
361
|
+
<td class="0-column"></td>
|
362
|
+
<td class="1-column"></td>
|
363
|
+
<td class="2-column"></td>
|
364
|
+
<td class="3-column"></td>
|
365
|
+
<td class="4-column"></td>
|
366
|
+
<td class="5-column"></td>
|
367
|
+
<td class="6-column"></td>
|
368
|
+
<td class="7-column"></td>
|
369
|
+
</tr>
|
370
|
+
</tbody>
|
371
|
+
</table>
|
372
|
+
</div>
|
373
|
+
</div>
|
374
|
+
</div>
|
375
|
+
</div>
|
376
|
+
<div ng-class="getVisibleTab(3)" class="resource-timing-view">
|
377
|
+
<table>
|
378
|
+
<tr>
|
379
|
+
<td>Receiving</td>
|
380
|
+
<td width="200px">
|
381
|
+
<div class="network-timing-row">
|
382
|
+
<span class="network-timing-bar-title">{{selectedEntry.receiveTime}}</span>
|
383
|
+
</div>
|
384
|
+
</td>
|
385
|
+
</tr>
|
386
|
+
</table>
|
387
|
+
</div>
|
388
|
+
<div ng-class="getVisibleTab(4)" class="resource-response-view hide">
|
389
|
+
<pre><code>{{selectedEntry.response_content}}</code></pre>
|
390
|
+
</div>
|
391
|
+
</div>
|
392
|
+
</div>
|
393
|
+
</div>
|
394
|
+
<div class="split-view-resizer"></div>
|
395
|
+
</div>
|
396
|
+
</div>
|
397
|
+
</div>
|
398
|
+
</div>
|
399
|
+
|
400
|
+
<div class="popover custom-popup-vertical-scroll custom-popup-horizontal-scroll hidden" style="left:500px; top: 197px; width: 315px; height: 132px;">
|
401
|
+
<div class="arrow"></div>
|
402
|
+
</div>
|
403
|
+
|
404
|
+
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
|
405
|
+
<script>window.jQuery || document.write('<script src="components/jquery/jquery.min.js"><\/script>')</script>
|
406
|
+
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js"></script>
|
407
|
+
<script>window.angular || document.write('<script src="components/angular/angular.min.js"><\/script>')</script>
|
408
|
+
|
409
|
+
<script src="js/script.js"></script>
|
410
|
+
<script src="js/libs/devTools.js"></script>
|
411
|
+
<script src="js/libs/HAREntry.js"></script>
|
412
|
+
<script src="js/controllers.js"></script>
|
413
|
+
|
414
|
+
<script>
|
415
|
+
var _gaq=[['_setAccount','UA-34376791-1'],['_trackPageview']];
|
416
|
+
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
417
|
+
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
|
418
|
+
s.parentNode.insertBefore(g,s)}(document,'script'));
|
419
|
+
</script>
|
420
|
+
|
421
|
+
</body>
|
422
|
+
</html>
|
@@ -0,0 +1,124 @@
|
|
1
|
+
/**
|
2
|
+
* Network Tab Controller.
|
3
|
+
*/
|
4
|
+
angular.module('net', []).controller('NetworkCtrl', function ($scope) {
|
5
|
+
'use strict';
|
6
|
+
|
7
|
+
$scope.segments = 12; // Hard-coded number of segments
|
8
|
+
$scope.pages = $scope.pages || []; // Page -> Entry mapping
|
9
|
+
$scope.entries = $scope.entries || []; // Entries
|
10
|
+
$scope.data = {}; // Global data
|
11
|
+
|
12
|
+
$scope.checked = false;
|
13
|
+
$scope.tab = '1';
|
14
|
+
$scope.sI = 'all';
|
15
|
+
$scope.selectedEntry = null;
|
16
|
+
|
17
|
+
$scope.updateHar = function(new_data) {
|
18
|
+
// Reset data
|
19
|
+
var data = {};
|
20
|
+
data.lastOnLoad = 0;
|
21
|
+
|
22
|
+
// Handle pages
|
23
|
+
var pageidxs = {};
|
24
|
+
|
25
|
+
// Handle entries
|
26
|
+
var entries = new_data.log.entries;
|
27
|
+
delete new_data.log.entries;
|
28
|
+
$.each(entries, function(i, entry) {
|
29
|
+
var harEntry = new HAREntry(
|
30
|
+
entry,
|
31
|
+
i,
|
32
|
+
new Date( entry.startedDateTime ).getTime(),
|
33
|
+
data
|
34
|
+
);
|
35
|
+
harEntry.autoResponded = entry.comment == 'x-auto-response'
|
36
|
+
harEntry.response_content = entry.response.content;
|
37
|
+
entries[i] = harEntry;
|
38
|
+
});
|
39
|
+
|
40
|
+
// Latch values
|
41
|
+
$scope.entries = entries;
|
42
|
+
$scope.checked = true;
|
43
|
+
$scope.data = data;
|
44
|
+
|
45
|
+
// Create labels for segments
|
46
|
+
$scope.labels = $scope.setLabels($scope.data.lastOnLoad/$scope.segments);
|
47
|
+
};
|
48
|
+
|
49
|
+
$scope.setLabels = function(section) {
|
50
|
+
var labels = {};
|
51
|
+
for (var i = 12; i > 0; i--) {
|
52
|
+
labels[i] = String.sprintf("%0.00fms", section * i);
|
53
|
+
};
|
54
|
+
return labels;
|
55
|
+
};
|
56
|
+
|
57
|
+
$scope.setSort = function(sort) {
|
58
|
+
$scope.predicate = sort;
|
59
|
+
$scope.reverse = !$scope.reverse;
|
60
|
+
};
|
61
|
+
|
62
|
+
$scope.toggleReqHeaders = function() {
|
63
|
+
$('.request.parent').toggleClass('expanded');
|
64
|
+
$('.request.children').toggleClass('expanded');
|
65
|
+
};
|
66
|
+
|
67
|
+
$scope.toggleResHeaders = function() {
|
68
|
+
$('.response.parent').toggleClass('expanded');
|
69
|
+
$('.response.children').toggleClass('expanded');
|
70
|
+
};
|
71
|
+
|
72
|
+
$scope.showDetails = function(i) {
|
73
|
+
$scope.selectedRow = i;
|
74
|
+
$scope.selectedEntry = $scope.entries[i];
|
75
|
+
|
76
|
+
var $leftView = $('.split-view-sidebar-left');
|
77
|
+
$('#network-views').removeClass('hidden');
|
78
|
+
$('.panel.network').addClass('viewing-resource');
|
79
|
+
$leftView.removeClass('maximized');
|
80
|
+
$leftView.addClass('minimized');
|
81
|
+
$('#network-container').addClass('brief-mode');
|
82
|
+
};
|
83
|
+
|
84
|
+
$scope.hideDetails = function() {
|
85
|
+
$scope.selectedRow = '-1';
|
86
|
+
var $leftView = $('.split-view-sidebar-left');
|
87
|
+
$leftView.addClass('maximized');
|
88
|
+
$('#network-views').addClass('hidden');
|
89
|
+
$('.panel.network').removeClass('viewing-resource');
|
90
|
+
$leftView.removeClass('minimized');
|
91
|
+
$('#network-container').removeClass('brief-mode');
|
92
|
+
};
|
93
|
+
|
94
|
+
// TODO: merge all these get/set index functions.
|
95
|
+
$scope.getClass = function (type) {
|
96
|
+
return ( (type == $scope.sI) ? 'selected' : '');
|
97
|
+
};
|
98
|
+
|
99
|
+
$scope.getSelectedRow = function (i) {
|
100
|
+
return ( (i == $scope.selectedRow) ? 'selected' : '');
|
101
|
+
};
|
102
|
+
|
103
|
+
$scope.getTab = function(index) {
|
104
|
+
return ( (index == $scope.tab) ? 'selected' : '');
|
105
|
+
};
|
106
|
+
|
107
|
+
$scope.getVisibleTab = function(index) {
|
108
|
+
return ( (index == $scope.tab) ? 'visible' : '');
|
109
|
+
};
|
110
|
+
|
111
|
+
$scope.showTab = function(index) {
|
112
|
+
$scope.tab = index;
|
113
|
+
};
|
114
|
+
|
115
|
+
$scope.dnd = {};
|
116
|
+
|
117
|
+
$scope.dnd.cancel = function (e) {
|
118
|
+
if (e.preventDefault) {
|
119
|
+
e.preventDefault(); // required by FF + Safari
|
120
|
+
}
|
121
|
+
return false; // required by IE
|
122
|
+
}
|
123
|
+
|
124
|
+
});
|