├── .gitignore ├── .travis.yml ├── CHANGELOG.md ├── LICENSE ├── README.md ├── composer.json ├── docs ├── Makefile ├── make.bat └── source │ ├── API │ ├── .placeholder │ └── API │ │ ├── PROJECT_VERSION │ │ ├── RabbitMQ.html │ │ ├── RabbitMQ │ │ ├── Management.html │ │ ├── Management │ │ │ ├── APIClient.html │ │ │ ├── Entity.html │ │ │ ├── Entity │ │ │ │ ├── AbstractEntity.html │ │ │ │ ├── Binding.html │ │ │ │ ├── Channel.html │ │ │ │ ├── Connection.html │ │ │ │ ├── EntityInterface.html │ │ │ │ ├── Exchange.html │ │ │ │ ├── Queue.html │ │ │ │ └── namespace-frame.html │ │ │ ├── Exception.html │ │ │ ├── Exception │ │ │ │ ├── EntityNotFoundException.html │ │ │ │ ├── ExceptionInterface.html │ │ │ │ ├── InvalidArgumentException.html │ │ │ │ ├── PreconditionFailedException.html │ │ │ │ ├── RuntimeException.html │ │ │ │ └── namespace-frame.html │ │ │ ├── Guarantee.html │ │ │ ├── HttpClient.html │ │ │ ├── Hydrator.html │ │ │ └── namespace-frame.html │ │ └── namespace-frame.html │ │ ├── SAMI_VERSION │ │ ├── classes-frame.html │ │ ├── classes.html │ │ ├── css │ │ ├── main.css │ │ ├── panel.css │ │ └── reset.css │ │ ├── doc-index.html │ │ ├── i │ │ ├── arrows.png │ │ ├── loader.gif │ │ ├── results_bg.png │ │ └── tree_bg.png │ │ ├── index.html │ │ ├── interfaces.html │ │ ├── js │ │ ├── jquery-1.3.2.min.js │ │ └── searchdoc.js │ │ ├── namespaces-frame.html │ │ ├── namespaces.html │ │ ├── opensearch.xml │ │ ├── panel.html │ │ ├── renderer.index │ │ ├── search_index.js │ │ ├── stylesheet.css │ │ └── tree.js │ ├── _static │ └── .placeholder │ ├── _themes │ └── Alchemy │ │ ├── analytics.html │ │ ├── layout.html │ │ ├── localtoc.html │ │ ├── ribbon.html │ │ ├── searchbox.html │ │ ├── static │ │ ├── Alchemy.css_t │ │ ├── bootstrapCustom.css │ │ ├── img │ │ │ └── project.png │ │ ├── js │ │ │ ├── bootstrap.min.js │ │ │ ├── less-1.3.0.min.js │ │ │ ├── modernizr-2.5.3.min.js │ │ │ ├── plugins.js │ │ │ └── script.js │ │ ├── less │ │ │ ├── accordion.less │ │ │ ├── alerts.less │ │ │ ├── badges.less │ │ │ ├── bootstrap.less │ │ │ ├── breadcrumbs.less │ │ │ ├── button-groups.less │ │ │ ├── buttons.less │ │ │ ├── carousel.less │ │ │ ├── close.less │ │ │ ├── code.less │ │ │ ├── component-animations.less │ │ │ ├── dropdowns.less │ │ │ ├── forms.less │ │ │ ├── grid.less │ │ │ ├── hero-unit.less │ │ │ ├── labels.less │ │ │ ├── layouts.less │ │ │ ├── mixins.less │ │ │ ├── modals.less │ │ │ ├── navbar.less │ │ │ ├── navs.less │ │ │ ├── pager.less │ │ │ ├── pagination.less │ │ │ ├── popovers.less │ │ │ ├── progress-bars.less │ │ │ ├── reset.less │ │ │ ├── responsive.less │ │ │ ├── scaffolding.less │ │ │ ├── sprites.less │ │ │ ├── tables.less │ │ │ ├── thumbnails.less │ │ │ ├── tooltip.less │ │ │ ├── type.less │ │ │ ├── utilities.less │ │ │ ├── variables.less │ │ │ └── wells.less │ │ ├── main.css │ │ ├── pygments.css │ │ └── style.css │ │ └── theme.conf │ ├── conf.py │ ├── index.rst │ ├── local_conf.py │ ├── local_conf.pyc │ └── sphinxPHP │ ├── LICENSE │ ├── README.md │ └── sensio │ ├── __init__.py │ ├── __init__.pyc │ └── sphinx │ ├── __init__.py │ ├── configurationblock.py │ ├── php.py │ ├── phpcode.py │ └── refinclude.py ├── phpunit.xml.dist ├── sami_configuration.php ├── src └── RabbitMQ │ └── Management │ ├── APIClient.php │ ├── AsyncAPIClient.php │ ├── Entity │ ├── AbstractEntity.php │ ├── Binding.php │ ├── Channel.php │ ├── Connection.php │ ├── EntityInterface.php │ ├── Exchange.php │ └── Queue.php │ ├── Exception │ ├── EntityNotFoundException.php │ ├── ExceptionInterface.php │ ├── InvalidArgumentException.php │ ├── PreconditionFailedException.php │ └── RuntimeException.php │ ├── Guarantee.php │ ├── HttpClient.php │ └── Hydrator.php └── tests ├── bootstrap.php └── src └── RabbitMQ └── Tests └── Management ├── APIClientTest.php ├── AsyncAPIClientTest.php └── GuaranteeTest.php /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | /bin 3 | /docs/build 4 | /vendor 5 | composer.phar 6 | composer.lock 7 | /tests/phpunit_report 8 | /docs/source/API/API/cache/ 9 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | services: 4 | - rabbitmq 5 | 6 | before_script: 7 | - composer install --dev --prefer-source 8 | 9 | php: 10 | - 5.3 11 | - 5.4 12 | - 5.5 13 | - 5.6 14 | - 7.0 15 | - 7.1 16 | 17 | script: 18 | - vendor/bin/phpunit 19 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | CHANGELOG 2 | --------- 3 | 4 | * 0.2.0 (11-22-2014) 5 | 6 | * Add missing properties for queue, channel & connection entity 7 | 8 | * 0.1.0 (01-14-2014) 9 | 10 | * First release. 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | RabbitMQ Manager API Client is released under the MIT License : 2 | 3 | Copyright (c) 2012 Alchemy 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), 7 | to deal in the Software without restriction, including without limitation 8 | the rights to use, copy, modify, merge, publish, distribute, sublicense, 9 | and/or sell copies of the Software, and to permit persons to whom the 10 | Software is furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 16 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 21 | IN THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RabbitMQ Manager API Client 2 | 3 | [![Build Status](https://secure.travis-ci.org/alchemy-fr/RabbitMQ-Management-API-Client.png?branch=master)](https://travis-ci.org/alchemy-fr/RabbitMQ-Management-API-Client) 4 | 5 | This library is intended to help management of RabbitMQ server in an application. 6 | It provides two ways to query RabbitMQ : Synchronous query with Guzzle and 7 | Asynchronous query with React. 8 | 9 | ## Asynchronous Queries 10 | 11 | ```php 12 | 13 | use RabbitMQ\Management\AsyncAPIClient; 14 | use React\EventLoop\Factory; 15 | 16 | $loop = Factory::create(); 17 | 18 | $client = AsyncAPIClient::factory($loop, array( 19 | 'url' => '127.0.0.1', 20 | )); 21 | 22 | $loop->addPeriodicTimer(1, function () use ($client) { 23 | $client->listQueues() 24 | ->then(function($queues) { 25 | echo "\n------------\n"; 26 | foreach ($queues as $queue) { 27 | echo sprintf("Found queue %s with %d messages\n", $queue->name, $queue->messages); 28 | } 29 | }, function ($error) { 30 | echo "An error occured : $error\n"; 31 | }); 32 | }); 33 | 34 | $loop->run(); 35 | ``` 36 | 37 | Asynchronous Client do not currently support Guarantee API. 38 | 39 | ## Synchronous Queries 40 | 41 | Ensure a queue has a flag : 42 | 43 | ```php 44 | use RabbitMQ\Management\APIClient; 45 | use RabbitMQ\Management\Entity\Queue; 46 | use RabbitMQ\Management\Exception\EntityNotFoundException; 47 | 48 | $client = APIClient::factory(array('url'=>'localhost')); 49 | 50 | try { 51 | $queue = $client->getQueue('/', 'queue.leuleu'); 52 | 53 | if (true !== $queue->durable) { 54 | $queue->durable = true; 55 | 56 | $client->deleteQueue('/', 'queue.leuleu'); 57 | $client->addQueue($queue); 58 | } 59 | 60 | } catch (EntityNotFoundException $e) { 61 | $queue = new Queue(); 62 | $queue->vhost = '/'; 63 | $queue->name = 'queue.leuleu'; 64 | $queue->durable = true; 65 | 66 | $client->addQueue($queue); 67 | } 68 | ``` 69 | 70 | You can also use the Guarantee manager : 71 | 72 | ```php 73 | use RabbitMQ\Management\APIClient; 74 | use RabbitMQ\Management\Entity\Queue; 75 | use RabbitMQ\Management\Guarantee; 76 | 77 | $client = APIClient::factory(array('url'=>'localhost')); 78 | $manager = new Guarantee($client); 79 | 80 | $queue = new Queue(); 81 | $queue->vhost = '/'; 82 | $queue->name = 'queue.leuleu'; 83 | $queue->durable = true; 84 | $queue->auto_delete = false; 85 | 86 | $queue = $manager->ensureQueue($queue); 87 | ``` 88 | 89 | # API Browser 90 | 91 | Browse the API [here](https://rabbitmq-management-api-client.readthedocs.org/en/latest/_static/API/). 92 | 93 | # Documentation 94 | 95 | Read the documentation at [Read The Docs](https://rabbitmq-management-api-client.readthedocs.org) ! 96 | 97 | # License 98 | 99 | This library is released under the MIT license (use it baby !) 100 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "alchemy/rabbitmq-management-client", 3 | "type": "library", 4 | "description": "RabbitMQ Management Plugin API Client", 5 | "keywords": ["api", "rabbitmq", "management"], 6 | "license": "MIT", 7 | "authors": [ 8 | { 9 | "name": "Romain Neutron", 10 | "email": "imprec@gmail.com" 11 | } 12 | ], 13 | "require": { 14 | "doctrine/common": ">=2.0", 15 | "guzzlehttp/guzzle": "~3.0" 16 | }, 17 | "require-dev": { 18 | "videlalvaro/php-amqplib": "dev-master@dev", 19 | "sami/sami": "~1.0", 20 | "phpunit/phpunit": "~3.7", 21 | "react/promise": "~1.0", 22 | "react/react": "~0.2.0", 23 | "react/curry": "~1.0" 24 | }, 25 | "autoload": { 26 | "psr-0": { 27 | "RabbitMQ": "src" 28 | } 29 | }, 30 | "suggest": { 31 | "react/react": "Version 0.2 to use the async client" 32 | }, 33 | "extra": { 34 | "branch-alias": { 35 | "dev-master": "0.1.x-dev" 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | PAPER = 8 | BUILDDIR = build 9 | 10 | # Internal variables. 11 | PAPEROPT_a4 = -D latex_paper_size=a4 12 | PAPEROPT_letter = -D latex_paper_size=letter 13 | ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source 14 | # the i18n builder cannot share the environment and doctrees with the others 15 | I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source 16 | 17 | .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext 18 | 19 | help: 20 | @echo "Please use \`make ' where is one of" 21 | @echo " html to make standalone HTML files" 22 | @echo " dirhtml to make HTML files named index.html in directories" 23 | @echo " singlehtml to make a single large HTML file" 24 | @echo " pickle to make pickle files" 25 | @echo " json to make JSON files" 26 | @echo " htmlhelp to make HTML files and a HTML help project" 27 | @echo " epub to make an epub" 28 | @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" 29 | @echo " latexpdf to make LaTeX files and run them through pdflatex" 30 | @echo " text to make text files" 31 | @echo " man to make manual pages" 32 | @echo " texinfo to make Texinfo files" 33 | @echo " info to make Texinfo files and run them through makeinfo" 34 | @echo " gettext to make PO message catalogs" 35 | @echo " changes to make an overview of all changed/added/deprecated items" 36 | @echo " linkcheck to check all external links for integrity" 37 | @echo " doctest to run all doctests embedded in the documentation (if enabled)" 38 | 39 | clean: 40 | -rm -rf $(BUILDDIR)/* 41 | 42 | html: 43 | $(SPHINXBUILD) -W -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html 44 | @echo 45 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." 46 | 47 | dirhtml: 48 | $(SPHINXBUILD) -W -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml 49 | @echo 50 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." 51 | 52 | singlehtml: 53 | $(SPHINXBUILD) -W -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml 54 | @echo 55 | @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." 56 | 57 | pickle: 58 | $(SPHINXBUILD) -W -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle 59 | @echo 60 | @echo "Build finished; now you can process the pickle files." 61 | 62 | json: 63 | $(SPHINXBUILD) -W -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json 64 | @echo 65 | @echo "Build finished; now you can process the JSON files." 66 | 67 | htmlhelp: 68 | $(SPHINXBUILD) -W -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp 69 | @echo 70 | @echo "Build finished; now you can run HTML Help Workshop with the" \ 71 | ".hhp project file in $(BUILDDIR)/htmlhelp." 72 | 73 | epub: 74 | $(SPHINXBUILD) -W -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub 75 | @echo 76 | @echo "Build finished. The epub file is in $(BUILDDIR)/epub." 77 | 78 | latex: 79 | $(SPHINXBUILD) -W -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 80 | @echo 81 | @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." 82 | @echo "Run \`make' in that directory to run these through (pdf)latex" \ 83 | "(use \`make latexpdf' here to do that automatically)." 84 | 85 | latexpdf: 86 | $(SPHINXBUILD) -W -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 87 | @echo "Running LaTeX files through pdflatex..." 88 | $(MAKE) -C $(BUILDDIR)/latex all-pdf 89 | @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." 90 | 91 | text: 92 | $(SPHINXBUILD) -W -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text 93 | @echo 94 | @echo "Build finished. The text files are in $(BUILDDIR)/text." 95 | 96 | man: 97 | $(SPHINXBUILD) -W -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man 98 | @echo 99 | @echo "Build finished. The manual pages are in $(BUILDDIR)/man." 100 | 101 | texinfo: 102 | $(SPHINXBUILD) -W -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo 103 | @echo 104 | @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." 105 | @echo "Run \`make' in that directory to run these through makeinfo" \ 106 | "(use \`make info' here to do that automatically)." 107 | 108 | info: 109 | $(SPHINXBUILD) -W -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo 110 | @echo "Running Texinfo files through makeinfo..." 111 | make -C $(BUILDDIR)/texinfo info 112 | @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." 113 | 114 | gettext: 115 | $(SPHINXBUILD) -W -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale 116 | @echo 117 | @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." 118 | 119 | changes: 120 | $(SPHINXBUILD) -W -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes 121 | @echo 122 | @echo "The overview file is in $(BUILDDIR)/changes." 123 | 124 | linkcheck: 125 | $(SPHINXBUILD) -W -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck 126 | @echo 127 | @echo "Link check complete; look for any errors in the above output " \ 128 | "or in $(BUILDDIR)/linkcheck/output.txt." 129 | 130 | doctest: 131 | $(SPHINXBUILD) -W -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest 132 | @echo "Testing of doctests in the sources finished, look at the " \ 133 | "results in $(BUILDDIR)/doctest/output.txt." 134 | -------------------------------------------------------------------------------- /docs/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | REM Command file for Sphinx documentation 4 | 5 | if "%SPHINXBUILD%" == "" ( 6 | set SPHINXBUILD=sphinx-build 7 | ) 8 | set BUILDDIR=build 9 | set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source 10 | set I18NSPHINXOPTS=%SPHINXOPTS% source 11 | if NOT "%PAPER%" == "" ( 12 | set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% 13 | set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% 14 | ) 15 | 16 | if "%1" == "" goto help 17 | 18 | if "%1" == "help" ( 19 | :help 20 | echo.Please use `make ^` where ^ is one of 21 | echo. html to make standalone HTML files 22 | echo. dirhtml to make HTML files named index.html in directories 23 | echo. singlehtml to make a single large HTML file 24 | echo. pickle to make pickle files 25 | echo. json to make JSON files 26 | echo. htmlhelp to make HTML files and a HTML help project 27 | echo. epub to make an epub 28 | echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter 29 | echo. text to make text files 30 | echo. man to make manual pages 31 | echo. texinfo to make Texinfo files 32 | echo. gettext to make PO message catalogs 33 | echo. changes to make an overview over all changed/added/deprecated items 34 | echo. linkcheck to check all external links for integrity 35 | echo. doctest to run all doctests embedded in the documentation if enabled 36 | goto end 37 | ) 38 | 39 | if "%1" == "clean" ( 40 | for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i 41 | del /q /s %BUILDDIR%\* 42 | goto end 43 | ) 44 | 45 | if "%1" == "html" ( 46 | %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html 47 | if errorlevel 1 exit /b 1 48 | echo. 49 | echo.Build finished. The HTML pages are in %BUILDDIR%/html. 50 | goto end 51 | ) 52 | 53 | if "%1" == "dirhtml" ( 54 | %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml 55 | if errorlevel 1 exit /b 1 56 | echo. 57 | echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. 58 | goto end 59 | ) 60 | 61 | if "%1" == "singlehtml" ( 62 | %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml 63 | if errorlevel 1 exit /b 1 64 | echo. 65 | echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. 66 | goto end 67 | ) 68 | 69 | if "%1" == "pickle" ( 70 | %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle 71 | if errorlevel 1 exit /b 1 72 | echo. 73 | echo.Build finished; now you can process the pickle files. 74 | goto end 75 | ) 76 | 77 | if "%1" == "json" ( 78 | %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json 79 | if errorlevel 1 exit /b 1 80 | echo. 81 | echo.Build finished; now you can process the JSON files. 82 | goto end 83 | ) 84 | 85 | if "%1" == "htmlhelp" ( 86 | %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp 87 | if errorlevel 1 exit /b 1 88 | echo. 89 | echo.Build finished; now you can run HTML Help Workshop with the ^ 90 | .hhp project file in %BUILDDIR%/htmlhelp. 91 | goto end 92 | ) 93 | 94 | if "%1" == "devhelp" ( 95 | %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp 96 | if errorlevel 1 exit /b 1 97 | echo. 98 | echo.Build finished. 99 | goto end 100 | ) 101 | 102 | if "%1" == "epub" ( 103 | %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub 104 | if errorlevel 1 exit /b 1 105 | echo. 106 | echo.Build finished. The epub file is in %BUILDDIR%/epub. 107 | goto end 108 | ) 109 | 110 | if "%1" == "latex" ( 111 | %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex 112 | if errorlevel 1 exit /b 1 113 | echo. 114 | echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. 115 | goto end 116 | ) 117 | 118 | if "%1" == "text" ( 119 | %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text 120 | if errorlevel 1 exit /b 1 121 | echo. 122 | echo.Build finished. The text files are in %BUILDDIR%/text. 123 | goto end 124 | ) 125 | 126 | if "%1" == "man" ( 127 | %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man 128 | if errorlevel 1 exit /b 1 129 | echo. 130 | echo.Build finished. The manual pages are in %BUILDDIR%/man. 131 | goto end 132 | ) 133 | 134 | if "%1" == "texinfo" ( 135 | %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo 136 | if errorlevel 1 exit /b 1 137 | echo. 138 | echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. 139 | goto end 140 | ) 141 | 142 | if "%1" == "gettext" ( 143 | %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale 144 | if errorlevel 1 exit /b 1 145 | echo. 146 | echo.Build finished. The message catalogs are in %BUILDDIR%/locale. 147 | goto end 148 | ) 149 | 150 | if "%1" == "changes" ( 151 | %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes 152 | if errorlevel 1 exit /b 1 153 | echo. 154 | echo.The overview file is in %BUILDDIR%/changes. 155 | goto end 156 | ) 157 | 158 | if "%1" == "linkcheck" ( 159 | %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck 160 | if errorlevel 1 exit /b 1 161 | echo. 162 | echo.Link check complete; look for any errors in the above output ^ 163 | or in %BUILDDIR%/linkcheck/output.txt. 164 | goto end 165 | ) 166 | 167 | if "%1" == "doctest" ( 168 | %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest 169 | if errorlevel 1 exit /b 1 170 | echo. 171 | echo.Testing of doctests in the sources finished, look at the ^ 172 | results in %BUILDDIR%/doctest/output.txt. 173 | goto end 174 | ) 175 | 176 | :end 177 | -------------------------------------------------------------------------------- /docs/source/API/.placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alchemy-fr/RabbitMQ-Management-API-Client/d1fd8e70db0bfc03a410f211103e155bf7ef9d79/docs/source/API/.placeholder -------------------------------------------------------------------------------- /docs/source/API/API/PROJECT_VERSION: -------------------------------------------------------------------------------- 1 | master -------------------------------------------------------------------------------- /docs/source/API/API/RabbitMQ.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ | RabbitMQ Manager Client API 7 | 8 | 9 | 10 |
11 | 18 | 19 |
RabbitMQ Manager Client API
20 | 21 |
Namespace
22 |

RabbitMQ

23 |
24 |
25 | 26 | 27 |
28 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /docs/source/API/API/RabbitMQ/Management.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ\Management | RabbitMQ Manager Client API 7 | 8 | 9 | 10 |
11 | 18 | 19 |
RabbitMQ Manager Client API
20 | 21 |
Namespace
22 |

RabbitMQ\Management

23 |
24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 |
APIClient
Guarantee
HttpClient
Hydrator
43 | 44 | 45 |
46 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /docs/source/API/API/RabbitMQ/Management/Entity.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ\Management\Entity | RabbitMQ Manager Client API 7 | 8 | 9 | 10 |
11 | 18 | 19 |
RabbitMQ Manager Client API
20 | 21 |
Namespace
22 |

RabbitMQ\Management\Entity

23 |
24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
AbstractEntity
Binding
Channel
Connection
Exchange
Queue
51 | 52 |

Interfaces

53 | 54 | 55 | 56 | 57 | 58 |
EntityInterface
59 | 60 |
61 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /docs/source/API/API/RabbitMQ/Management/Entity/AbstractEntity.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ\Management\Entity\AbstractEntity | RabbitMQ Manager Client API 7 | 8 | 9 | 10 |
11 | 18 | 19 |
RabbitMQ Manager Client API
20 | 21 |
Class
22 |

RabbitMQ\Management\Entity\AbstractEntity

23 |
24 |
25 |

abstract class AbstractEntity implements 26 | EntityInterface

27 | 28 | 29 | 30 | 31 |

Methods

32 | 33 | 34 | 35 | 38 | 42 | 43 | 44 | 45 | 48 | 52 | 53 | 54 |
36 | 37 | 39 | setAPIClient(APIClient $client) 40 |

41 |
46 | 47 | 49 | toJson() 50 |

51 |
55 | 56 | 57 |

Details

58 | 59 |

60 |
at line 14
61 | public 62 | setAPIClient(APIClient $client) 63 |

64 |
65 |

66 |

67 |
68 |

Parameters

69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 |
APIClient$client
77 | 78 | 79 | 80 | 81 |
82 |
83 | 84 |

85 |
at line 19
86 | public 87 | toJson() 88 |

89 |
90 |

91 |

92 |
93 | 94 | 95 | 96 |
97 |
98 | 99 | 100 |
101 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /docs/source/API/API/RabbitMQ/Management/Entity/Binding.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ\Management\Entity\Binding | RabbitMQ Manager Client API 7 | 8 | 9 | 10 |
11 | 18 | 19 |
RabbitMQ Manager Client API
20 | 21 |
Class
22 |

RabbitMQ\Management\Entity\Binding

23 |
24 |
25 |

class Binding extends AbstractEntity

26 | 27 | 28 | 29 |

Properties

30 | 31 | 32 | 33 | 36 | 37 | 38 | 39 | 40 | 43 | 44 | 45 | 46 | 47 | 50 | 51 | 52 | 53 | 54 | 57 | 58 | 59 | 60 | 61 | 64 | 65 | 66 | 67 | 68 | 71 | 72 | 73 | 74 | 75 | 78 | 79 | 80 | 81 |
34 | 35 | $source
41 | 42 | $vhost
48 | 49 | $destination
55 | 56 | $destination_type
62 | 63 | $routing_key
69 | 70 | $arguments
76 | 77 | $properties_key
82 | 83 | 84 |

Methods

85 | 86 | 87 | 88 | 91 | 95 | 96 | 97 | 98 | 101 | 105 | 106 | 107 |
89 | 90 | 92 | setAPIClient(APIClient $client) 93 |

94 |
from AbstractEntity
99 | 100 | 102 | toJson() 103 |

104 |
from AbstractEntity
108 | 109 | 110 |

Details

111 | 112 |

113 |
in AbstractEntity at line 14
114 | public 115 | setAPIClient(APIClient $client) 116 |

117 |
118 |

119 |

120 |
121 |

Parameters

122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 |
APIClient$client
130 | 131 | 132 | 133 | 134 |
135 |
136 | 137 |

138 |
in AbstractEntity at line 19
139 | public 140 | toJson() 141 |

142 |
143 |

144 |

145 |
146 | 147 | 148 | 149 |
150 |
151 | 152 | 153 |
154 | 157 | 158 | 159 | -------------------------------------------------------------------------------- /docs/source/API/API/RabbitMQ/Management/Entity/EntityInterface.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ\Management\Entity\EntityInterface | RabbitMQ Manager Client API 7 | 8 | 9 | 10 |
11 | 18 | 19 |
RabbitMQ Manager Client API
20 | 21 |
Interface
22 |

RabbitMQ\Management\Entity\EntityInterface

23 |
24 |
25 |

interface EntityInterface

26 | 27 | 28 | 29 | 30 |

Methods

31 | 32 | 33 | 34 | 37 | 41 | 42 | 43 | 44 | 47 | 51 | 52 | 53 |
35 | 36 | 38 | toJson() 39 |

40 |
45 | 46 | 48 | setAPIClient(APIClient $client) 49 |

50 |
54 | 55 | 56 |

Details

57 | 58 |

59 |
at line 9
60 | public 61 | toJson() 62 |

63 |
64 |

65 |

66 |
67 | 68 | 69 | 70 |
71 |
72 | 73 |

74 |
at line 10
75 | public 76 | setAPIClient(APIClient $client) 77 |

78 |
79 |

80 |

81 |
82 |

Parameters

83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 |
APIClient$client
91 | 92 | 93 | 94 | 95 |
96 |
97 | 98 | 99 |
100 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /docs/source/API/API/RabbitMQ/Management/Entity/Exchange.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ\Management\Entity\Exchange | RabbitMQ Manager Client API 7 | 8 | 9 | 10 |
11 | 18 | 19 |
RabbitMQ Manager Client API
20 | 21 |
Class
22 |

RabbitMQ\Management\Entity\Exchange

23 |
24 |
25 |

class Exchange extends AbstractEntity

26 | 27 | 28 | 29 |

Properties

30 | 31 | 32 | 33 | 36 | 37 | 38 | 39 | 40 | 43 | 44 | 45 | 46 | 47 | 50 | 51 | 52 | 53 | 54 | 57 | 58 | 59 | 60 | 61 | 64 | 65 | 66 | 67 | 68 | 71 | 72 | 73 | 74 | 75 | 78 | 79 | 80 | 81 |
34 | 35 | $name
41 | 42 | $vhost
48 | 49 | $type
55 | 56 | $durable
62 | 63 | $auto_delete
69 | 70 | $internal
76 | 77 | $arguments
82 | 83 | 84 |

Methods

85 | 86 | 87 | 88 | 91 | 95 | 96 | 97 | 98 | 101 | 105 | 106 | 107 |
89 | 90 | 92 | setAPIClient(APIClient $client) 93 |

94 |
from AbstractEntity
99 | 100 | 102 | toJson() 103 |

104 |
from AbstractEntity
108 | 109 | 110 |

Details

111 | 112 |

113 |
in AbstractEntity at line 14
114 | public 115 | setAPIClient(APIClient $client) 116 |

117 |
118 |

119 |

120 |
121 |

Parameters

122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 |
APIClient$client
130 | 131 | 132 | 133 | 134 |
135 |
136 | 137 |

138 |
in AbstractEntity at line 19
139 | public 140 | toJson() 141 |

142 |
143 |

144 |

145 |
146 | 147 | 148 | 149 |
150 |
151 | 152 | 153 |
154 | 157 | 158 | 159 | -------------------------------------------------------------------------------- /docs/source/API/API/RabbitMQ/Management/Entity/namespace-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ\Management\Entity | RabbitMQ Manager Client API 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/source/API/API/RabbitMQ/Management/Exception.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ\Management\Exception | RabbitMQ Manager Client API 7 | 8 | 9 | 10 |
11 | 18 | 19 |
RabbitMQ Manager Client API
20 | 21 |
Namespace
22 |

RabbitMQ\Management\Exception

23 |
24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 |
InvalidArgumentException
PreconditionFailedException
RuntimeException
39 | 40 |

Interfaces

41 | 42 | 43 | 44 | 45 | 46 |
ExceptionInterface
47 | 48 |

Exceptions

49 | 50 | 51 | 52 | 53 | 54 |
EntityNotFoundException
55 |
56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /docs/source/API/API/RabbitMQ/Management/Exception/EntityNotFoundException.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ\Management\Exception\EntityNotFoundException | RabbitMQ Manager Client API 7 | 8 | 9 | 10 |
11 | 18 | 19 |
RabbitMQ Manager Client API
20 | 21 |
Class
22 |

RabbitMQ\Management\Exception\EntityNotFoundException

23 |
24 |
25 |

class EntityNotFoundException extends Exception implements 26 | ExceptionInterface

27 | 28 | 29 | 30 | 31 |
32 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/source/API/API/RabbitMQ/Management/Exception/ExceptionInterface.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ\Management\Exception\ExceptionInterface | RabbitMQ Manager Client API 7 | 8 | 9 | 10 |
11 | 18 | 19 |
RabbitMQ Manager Client API
20 | 21 |
Interface
22 |

RabbitMQ\Management\Exception\ExceptionInterface

23 |
24 |
25 |

interface ExceptionInterface

26 | 27 | 28 | 29 | 30 |
31 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /docs/source/API/API/RabbitMQ/Management/Exception/InvalidArgumentException.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ\Management\Exception\InvalidArgumentException | RabbitMQ Manager Client API 7 | 8 | 9 | 10 |
11 | 18 | 19 |
RabbitMQ Manager Client API
20 | 21 |
Class
22 |

RabbitMQ\Management\Exception\InvalidArgumentException

23 |
24 |
25 |

class InvalidArgumentException extends InvalidArgumentException implements 26 | ExceptionInterface

27 | 28 | 29 | 30 | 31 |
32 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/source/API/API/RabbitMQ/Management/Exception/PreconditionFailedException.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ\Management\Exception\PreconditionFailedException | RabbitMQ Manager Client API 7 | 8 | 9 | 10 |
11 | 18 | 19 |
RabbitMQ Manager Client API
20 | 21 |
Class
22 |

RabbitMQ\Management\Exception\PreconditionFailedException

23 |
24 |
25 |

class PreconditionFailedException extends InvalidArgumentException

26 | 27 | 28 | 29 | 30 |
31 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /docs/source/API/API/RabbitMQ/Management/Exception/RuntimeException.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ\Management\Exception\RuntimeException | RabbitMQ Manager Client API 7 | 8 | 9 | 10 |
11 | 18 | 19 |
RabbitMQ Manager Client API
20 | 21 |
Class
22 |

RabbitMQ\Management\Exception\RuntimeException

23 |
24 |
25 |

class RuntimeException extends RuntimeException implements 26 | ExceptionInterface

27 | 28 | 29 | 30 | 31 |
32 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/source/API/API/RabbitMQ/Management/Exception/namespace-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ\Management\Exception | RabbitMQ Manager Client API 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/source/API/API/RabbitMQ/Management/HttpClient.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ\Management\HttpClient | RabbitMQ Manager Client API 7 | 8 | 9 | 10 |
11 | 18 | 19 |
RabbitMQ Manager Client API
20 | 21 |
Class
22 |

RabbitMQ\Management\HttpClient

23 |
24 |
25 |

class HttpClient extends Client

26 | 27 | 28 | 29 | 30 |

Methods

31 | 32 | 33 | 34 | 37 | 41 | 42 | 43 | 44 | 47 | 51 | 52 | 53 |
35 | 36 | 38 | getHydrator() 39 |

40 |
45 | static HttpClient 46 | 48 | factory(array|Collection $config = array()) 49 |

Factory method to create the HttpClient

50 |
54 | 55 | 56 |

Details

57 | 58 |

59 |
at line 12
60 | public 61 | getHydrator() 62 |

63 |
64 |

65 |

66 |
67 | 68 | 69 | 70 |
71 |
72 | 73 |

74 |
at line 35
75 | static public HttpClient 76 | factory(array|Collection $config = array()) 77 |

78 |
79 |

Factory method to create the HttpClient

80 |

The following array keys and values are available options:
81 | - url : Base URL of web service
82 | - port : Port of web service
83 | - scheme : URI scheme: http or https
84 | - username: API username
85 | - password: API password

86 |
87 |

Parameters

88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 |
array|Collection$configConfiguration data
96 | 97 | 98 |

Return Value

99 | 100 | 101 | 102 | 103 | 104 | 105 |
HttpClient
106 | 107 | 108 | 109 |
110 |
111 | 112 | 113 |
114 | 117 | 118 | 119 | -------------------------------------------------------------------------------- /docs/source/API/API/RabbitMQ/Management/Hydrator.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ\Management\Hydrator | RabbitMQ Manager Client API 7 | 8 | 9 | 10 |
11 | 18 | 19 |
RabbitMQ Manager Client API
20 | 21 |
Class
22 |

RabbitMQ\Management\Hydrator

23 |
24 |
25 |

class Hydrator

26 | 27 | 28 | 29 | 30 |

Methods

31 | 32 | 33 | 34 | 37 | 41 | 42 | 43 | 44 | 47 | 51 | 52 | 53 | 54 | 57 | 61 | 62 | 63 |
35 | static  36 | 38 | getInstance() 39 |

40 |
45 | 46 | 48 | hydrate(EntityInterface $entity, $data) 49 |

50 |
55 | static  56 | 58 | camelize($attribute) 59 |

60 |
64 | 65 | 66 |

Details

67 | 68 |

69 |
at line 11
70 | static public 71 | getInstance() 72 |

73 |
74 |

75 |

76 |
77 | 78 | 79 | 80 |
81 |
82 | 83 |

84 |
at line 20
85 | public 86 | hydrate(EntityInterface $entity, $data) 87 |

88 |
89 |

90 |

91 |
92 |

Parameters

93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 |
EntityInterface$entity
$data
106 | 107 | 108 | 109 | 110 |
111 |
112 | 113 |

114 |
at line 32
115 | static public 116 | camelize($attribute) 117 |

118 |
119 |

120 |

121 |
122 |

Parameters

123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 |
$attribute
131 | 132 | 133 | 134 | 135 |
136 |
137 | 138 | 139 |
140 | 143 | 144 | 145 | -------------------------------------------------------------------------------- /docs/source/API/API/RabbitMQ/Management/namespace-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ\Management | RabbitMQ Manager Client API 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/source/API/API/RabbitMQ/namespace-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ | RabbitMQ Manager Client API 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/source/API/API/SAMI_VERSION: -------------------------------------------------------------------------------- 1 | 0.8.1-DEV -------------------------------------------------------------------------------- /docs/source/API/API/classes-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | All Classes | RabbitMQ Manager Client API 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/source/API/API/classes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Classes | RabbitMQ Manager Client API 7 | 8 | 9 | 10 |
11 | 18 | 19 |
RabbitMQ Manager Client API
20 | 21 |

Classes

22 |
23 |
24 | 25 | 26 | 29 | 32 | 33 | 34 | 37 | 40 | 41 | 42 | 45 | 48 | 49 | 50 | 53 | 56 | 57 | 58 | 61 | 64 | 65 | 66 | 69 | 72 | 73 | 74 | 77 | 80 | 81 | 82 | 85 | 88 | 89 | 90 | 93 | 96 | 97 | 98 | 101 | 104 | 105 | 106 | 109 | 112 | 113 | 114 | 117 | 120 | 121 | 122 | 125 | 128 | 129 | 130 | 133 | 136 | 137 | 138 | 141 | 144 | 145 | 146 | 149 | 152 | 153 |
27 | RabbitMQ\Management\APIClient 28 | 30 | 31 |
35 | RabbitMQ\Management\Entity\AbstractEntity 36 | 38 | 39 |
43 | RabbitMQ\Management\Entity\Binding 44 | 46 | 47 |
51 | RabbitMQ\Management\Entity\Channel 52 | 54 | 55 |
59 | RabbitMQ\Management\Entity\Connection 60 | 62 | 63 |
67 | RabbitMQ\Management\Entity\EntityInterface 68 | 70 | 71 |
75 | RabbitMQ\Management\Entity\Exchange 76 | 78 | 79 |
83 | RabbitMQ\Management\Entity\Queue 84 | 86 | 87 |
91 | RabbitMQ\Management\Exception\EntityNotFoundException 92 | 94 | 95 |
99 | RabbitMQ\Management\Exception\ExceptionInterface 100 | 102 | 103 |
107 | RabbitMQ\Management\Exception\InvalidArgumentException 108 | 110 | 111 |
115 | RabbitMQ\Management\Exception\PreconditionFailedException 116 | 118 | 119 |
123 | RabbitMQ\Management\Exception\RuntimeException 124 | 126 | 127 |
131 | RabbitMQ\Management\Guarantee 132 | 134 | 135 |
139 | RabbitMQ\Management\HttpClient 140 | 142 | 143 |
147 | RabbitMQ\Management\Hydrator 148 | 150 | 151 |
154 |
155 | 158 | 159 | 160 | -------------------------------------------------------------------------------- /docs/source/API/API/css/main.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2009 Vladimir Kolesnikov 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining 5 | a copy of this software and associated documentation files (the 6 | "Software"), to deal in the Software without restriction, including 7 | without limitation the rights to use, copy, modify, merge, publish, 8 | distribute, sublicense, and/or sell copies of the Software, and to 9 | permit persons to whom the Software is furnished to do so, subject to 10 | the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 19 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 20 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 21 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | */ 23 | 24 | a { 25 | color: #00F; 26 | text-decoration: none; 27 | } 28 | 29 | a:hover { 30 | color: #77F; 31 | text-decoration: underline; 32 | } 33 | 34 | body, td, p { 35 | font-family: "Bitstream Vera Sans", Verdana, Arial, Helvetica, sans-serif; 36 | background: #FFF; 37 | color: #000; 38 | margin: 0px; 39 | font-size: small; 40 | } 41 | 42 | p { 43 | margin-top: 0.5em; 44 | margin-bottom: 0.5em; 45 | } 46 | 47 | #content { 48 | margin: 2em; 49 | margin-left: 3.5em; 50 | margin-right: 3.5em; 51 | } 52 | 53 | #description p { 54 | margin-bottom: 0.5em; 55 | } 56 | 57 | .sectiontitle { 58 | margin-top: 1em; 59 | margin-bottom: 1em; 60 | padding: 0.5em; 61 | padding-left: 2em; 62 | background: #005; 63 | color: #FFF; 64 | font-weight: bold; 65 | } 66 | 67 | .attr-rw { 68 | padding-left: 1em; 69 | padding-right: 1em; 70 | text-align: center; 71 | color: #055; 72 | } 73 | 74 | .attr-name { 75 | font-weight: bold; 76 | } 77 | 78 | .attr-desc { 79 | } 80 | 81 | .attr-desc p { 82 | margin-top: 0; 83 | } 84 | 85 | .attr-value { 86 | font-family: monospace; 87 | } 88 | 89 | .file-title-prefix { 90 | font-size: large; 91 | } 92 | 93 | .file-title { 94 | font-size: large; 95 | font-weight: bold; 96 | background: #005; 97 | color: #FFF; 98 | } 99 | 100 | .banner { 101 | background: #005; 102 | color: #FFF; 103 | border: 1px solid black; 104 | padding: 1em; 105 | } 106 | 107 | .banner td { 108 | background: transparent; 109 | color: #FFF; 110 | } 111 | 112 | h1 a, h2 a, .sectiontitle a, .banner a { 113 | color: #FF0; 114 | } 115 | 116 | h1 a:hover, h2 a:hover, .sectiontitle a:hover, .banner a:hover { 117 | color: #FF7; 118 | } 119 | 120 | .dyn-source { 121 | display: none; 122 | background: #fffde8; 123 | color: #000; 124 | border: #ffe0bb dotted 1px; 125 | margin: 0.5em 2em 0.5em 2em; 126 | padding: 0.5em; 127 | } 128 | 129 | .dyn-source .cmt { 130 | color: #00F; 131 | font-style: italic; 132 | } 133 | 134 | .dyn-source .kw { 135 | color: #070; 136 | font-weight: bold; 137 | } 138 | 139 | .method { 140 | margin-left: 1em; 141 | margin-right: 1em; 142 | margin-bottom: 1em; 143 | } 144 | 145 | .description pre { 146 | padding: 0.5em; 147 | border: #ffe0bb dotted 1px; 148 | background: #fffde8; 149 | } 150 | 151 | .method .title { 152 | font-family: monospace; 153 | font-size: large; 154 | border-bottom: 1px dashed black; 155 | margin-bottom: 0.3em; 156 | padding-bottom: 0.1em; 157 | } 158 | 159 | .method .description, .method .sourcecode { 160 | margin-left: 1em; 161 | } 162 | 163 | .description p, .sourcecode p { 164 | margin-bottom: 0.5em; 165 | } 166 | 167 | .method .sourcecode p.source-link { 168 | text-indent: 0em; 169 | margin-top: 0.5em; 170 | } 171 | 172 | .method .aka { 173 | margin-top: 0.3em; 174 | margin-left: 1em; 175 | font-style: italic; 176 | text-indent: 2em; 177 | } 178 | 179 | h1 { 180 | padding: 1em; 181 | margin-left: -1.5em; 182 | font-size: x-large; 183 | font-weight: bold; 184 | color: #FFF; 185 | background: #007; 186 | } 187 | 188 | h2 { 189 | padding: 0.5em 1em 0.5em 1em; 190 | margin-left: -1.5em; 191 | font-size: large; 192 | font-weight: bold; 193 | color: #FFF; 194 | background: #009; 195 | } 196 | 197 | h3, h4, h5, h6 { 198 | color: #220088; 199 | border-bottom: #5522bb solid 1px; 200 | } 201 | 202 | .sourcecode > pre { 203 | padding: 0.5em; 204 | border: 1px dotted black; 205 | background: #FFE; 206 | } 207 | 208 | dt { 209 | font-weight: bold 210 | } 211 | 212 | dd { 213 | margin-bottom: 0.7em; 214 | } -------------------------------------------------------------------------------- /docs/source/API/API/css/reset.css: -------------------------------------------------------------------------------- 1 | /* http://meyerweb.com/eric/tools/css/reset/ */ 2 | /* v1.0 | 20080212 */ 3 | 4 | html, body, div, span, applet, object, iframe, 5 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 6 | a, abbr, acronym, address, big, cite, code, 7 | del, dfn, em, font, img, ins, kbd, q, s, samp, 8 | small, strike, strong, sub, sup, tt, var, 9 | b, u, i, center, 10 | dl, dt, dd, ol, ul, li, 11 | fieldset, form, label, legend, 12 | table, caption, tbody, tfoot, thead, tr, th, td { 13 | margin: 0; 14 | padding: 0; 15 | border: 0; 16 | outline: 0; 17 | font-size: 100%; 18 | vertical-align: baseline; 19 | background: transparent; 20 | } 21 | body { 22 | line-height: 1; 23 | } 24 | ol, ul { 25 | list-style: none; 26 | } 27 | blockquote, q { 28 | quotes: none; 29 | } 30 | blockquote:before, blockquote:after, 31 | q:before, q:after { 32 | content: ''; 33 | content: none; 34 | } 35 | 36 | /* remember to define focus styles! */ 37 | :focus { 38 | outline: 0; 39 | } 40 | 41 | /* remember to highlight inserts somehow! */ 42 | ins { 43 | text-decoration: none; 44 | } 45 | del { 46 | text-decoration: line-through; 47 | } 48 | 49 | /* tables still need 'cellspacing="0"' in the markup */ 50 | table { 51 | border-collapse: collapse; 52 | border-spacing: 0; 53 | } -------------------------------------------------------------------------------- /docs/source/API/API/i/arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alchemy-fr/RabbitMQ-Management-API-Client/d1fd8e70db0bfc03a410f211103e155bf7ef9d79/docs/source/API/API/i/arrows.png -------------------------------------------------------------------------------- /docs/source/API/API/i/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alchemy-fr/RabbitMQ-Management-API-Client/d1fd8e70db0bfc03a410f211103e155bf7ef9d79/docs/source/API/API/i/loader.gif -------------------------------------------------------------------------------- /docs/source/API/API/i/results_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alchemy-fr/RabbitMQ-Management-API-Client/d1fd8e70db0bfc03a410f211103e155bf7ef9d79/docs/source/API/API/i/results_bg.png -------------------------------------------------------------------------------- /docs/source/API/API/i/tree_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alchemy-fr/RabbitMQ-Management-API-Client/d1fd8e70db0bfc03a410f211103e155bf7ef9d79/docs/source/API/API/i/tree_bg.png -------------------------------------------------------------------------------- /docs/source/API/API/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RabbitMQ Manager Client API 7 | 8 | 9 | 10 | 11 | 12 | 13 | <body> 14 | Your browser does not support frames. Go to the <a href="namespaces.html">non-frame version</a>. 15 | </body> 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /docs/source/API/API/interfaces.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Interfaces | RabbitMQ Manager Client API 7 | 8 | 9 | 10 |
11 | 18 | 19 |
RabbitMQ Manager Client API
20 | 21 |

Interfaces

22 |
23 |
24 | 25 | 26 | 27 | 30 | 31 | 32 | 33 | 36 | 37 |
RabbitMQ\Management\Entity\EntityInterface 28 | 29 |
RabbitMQ\Management\Exception\ExceptionInterface 34 | 35 |
38 |
39 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /docs/source/API/API/namespaces-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Namespaces | RabbitMQ Manager Client API 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/source/API/API/namespaces.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Namespaces | RabbitMQ Manager Client API 7 | 8 | 9 | 10 |
11 | 18 | 19 |
RabbitMQ Manager Client API
20 | 21 |

Namespaces

22 |
23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 |
RabbitMQ
RabbitMQ\Management
RabbitMQ\Management\Entity
RabbitMQ\Management\Exception
38 |
39 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /docs/source/API/API/opensearch.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alchemy-fr/RabbitMQ-Management-API-Client/d1fd8e70db0bfc03a410f211103e155bf7ef9d79/docs/source/API/API/opensearch.xml -------------------------------------------------------------------------------- /docs/source/API/API/panel.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | RabbitMQ Manager Client API 5 | 6 | 7 | 8 | 9 | 10 | 46 | 47 | 48 |
49 |
50 | loading... 51 |
52 |
53 | 60 |
61 |
62 |
    63 |
64 |
65 |
66 |
    67 |
68 |
69 |
70 | 71 | 72 | -------------------------------------------------------------------------------- /docs/source/API/API/renderer.index: -------------------------------------------------------------------------------- 1 | C:19:"Sami\Renderer\Index":1708:{a:3:{i:0;a:16:{s:29:"RabbitMQ\Management\APIClient";s:40:"244291c67ab3935e7a4d1c171ee025193bfafddb";s:41:"RabbitMQ\Management\Entity\AbstractEntity";s:40:"4792c34cf700117dc139105ef36dbe256777e450";s:34:"RabbitMQ\Management\Entity\Binding";s:40:"8cae11525d2ba624523e216b4cd47daaaf2a3576";s:34:"RabbitMQ\Management\Entity\Channel";s:40:"1cdaf6af065625b0e7b0e9e8b9762831fca114c9";s:37:"RabbitMQ\Management\Entity\Connection";s:40:"77afb46e670adea37e9c9352d17f30ee682fae62";s:42:"RabbitMQ\Management\Entity\EntityInterface";s:40:"032aa706cffb3b773bf90354496942ed550eaa0c";s:35:"RabbitMQ\Management\Entity\Exchange";s:40:"34e973c624c84f7d8f3cbef73b84aeb4a0de1f0a";s:32:"RabbitMQ\Management\Entity\Queue";s:40:"e2cb9044832a3f34cf0d0b52bb2cc7541b22c156";s:53:"RabbitMQ\Management\Exception\EntityNotFoundException";s:40:"6a3cac0a3d4178b2ab0acad0f49b6ecf14b0590c";s:48:"RabbitMQ\Management\Exception\ExceptionInterface";s:40:"361e0f64a34e7e4cf8fca216d19691072170f7b2";s:54:"RabbitMQ\Management\Exception\InvalidArgumentException";s:40:"c50ffc24327e39ca02e61e87610ec178776d4db6";s:57:"RabbitMQ\Management\Exception\PreconditionFailedException";s:40:"9e38705adcbf8cb9e2a9115c8fbb0a3b9965a092";s:46:"RabbitMQ\Management\Exception\RuntimeException";s:40:"70a66c4897f180e047e9cf5df6196aedd71d4d8c";s:29:"RabbitMQ\Management\Guarantee";s:40:"df03ed192097b8cb63fc28b277f8ffaec3fe19b3";s:30:"RabbitMQ\Management\HttpClient";s:40:"3005499788bd5ff8399a67fe5eadaa6975cd6356";s:28:"RabbitMQ\Management\Hydrator";s:40:"dc7c4e84db3ffb456cb7f19fb32cd6f24a3d9835";}i:1;a:1:{i:0;s:6:"master";}i:2;a:4:{i:0;s:8:"RabbitMQ";i:1;s:19:"RabbitMQ\Management";i:2;s:26:"RabbitMQ\Management\Entity";i:3;s:29:"RabbitMQ\Management\Exception";}}} -------------------------------------------------------------------------------- /docs/source/API/API/tree.js: -------------------------------------------------------------------------------- 1 | var tree = [["RabbitMQ",,"", 2 | [["Management","RabbitMQ\/Management.html","", 3 | [["Entity","RabbitMQ\/Management\/Entity.html","", 4 | [["AbstractEntity","RabbitMQ\/Management\/Entity\/AbstractEntity.html","", 5 | [ ]],["Binding","RabbitMQ\/Management\/Entity\/Binding.html"," < AbstractEntity", 6 | [ ]],["Channel","RabbitMQ\/Management\/Entity\/Channel.html"," < AbstractEntity", 7 | [ ]],["Connection","RabbitMQ\/Management\/Entity\/Connection.html"," < AbstractEntity", 8 | [ ]],["EntityInterface","RabbitMQ\/Management\/Entity\/EntityInterface.html","", 9 | [ ]],["Exchange","RabbitMQ\/Management\/Entity\/Exchange.html"," < AbstractEntity", 10 | [ ]],["Queue","RabbitMQ\/Management\/Entity\/Queue.html"," < AbstractEntity", 11 | [ ]] ]],["Exception","RabbitMQ\/Management\/Exception.html","", 12 | [["EntityNotFoundException","RabbitMQ\/Management\/Exception\/EntityNotFoundException.html"," < Exception", 13 | [ ]],["ExceptionInterface","RabbitMQ\/Management\/Exception\/ExceptionInterface.html","", 14 | [ ]],["InvalidArgumentException","RabbitMQ\/Management\/Exception\/InvalidArgumentException.html"," < InvalidArgumentException", 15 | [ ]],["PreconditionFailedException","RabbitMQ\/Management\/Exception\/PreconditionFailedException.html"," < InvalidArgumentException", 16 | [ ]],["RuntimeException","RabbitMQ\/Management\/Exception\/RuntimeException.html"," < RuntimeException", 17 | [ ]] ]],["APIClient","RabbitMQ\/Management\/APIClient.html","", 18 | [ ]],["Guarantee","RabbitMQ\/Management\/Guarantee.html","", 19 | [ ]],["HttpClient","RabbitMQ\/Management\/HttpClient.html"," < Client", 20 | [ ]],["Hydrator","RabbitMQ\/Management\/Hydrator.html","", 21 | [ ]] ]] ]] ] 22 | 23 | -------------------------------------------------------------------------------- /docs/source/_static/.placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alchemy-fr/RabbitMQ-Management-API-Client/d1fd8e70db0bfc03a410f211103e155bf7ef9d79/docs/source/_static/.placeholder -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/analytics.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/localtoc.html: -------------------------------------------------------------------------------- 1 | {# 2 | basic/localtoc.html 3 | ~~~~~~~~~~~~~~~~~~~ 4 | 5 | Sphinx sidebar template: local table of contents. 6 | 7 | :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. 8 | :license: BSD, see LICENSE for details. 9 | #} 10 | {%- if display_toc %} 11 | {{ toc }} 12 | {%- endif %} 13 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/ribbon.html: -------------------------------------------------------------------------------- 1 | 2 | Fork me on GitHub 3 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/searchbox.html: -------------------------------------------------------------------------------- 1 | {# 2 | basic/searchbox.html 3 | ~~~~~~~~~~~~~~~~~~~~ 4 | 5 | Sphinx sidebar template: quick search box. 6 | 7 | :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. 8 | :license: BSD, see LICENSE for details. 9 | #} 10 | {%- if pagename != "search" %} 11 | 19 | {%- endif %} 20 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/Alchemy.css_t: -------------------------------------------------------------------------------- 1 | body, html { 2 | background-color:#FFFFFF; 3 | } 4 | 5 | .hero-unit { 6 | background-color: transparent; 7 | } 8 | 9 | tt.literal{ 10 | font-weight:bold; 11 | } 12 | 13 | a.headerlink { 14 | display:none; 15 | } 16 | 17 | div.highlight pre { 18 | background-color: #000000; 19 | color:#DDDDDD; 20 | } 21 | 22 | .sphinxsidebarwrapper ul { 23 | list-style-type: square; 24 | } 25 | 26 | .sphinxsidebarwrapper ul li a{ 27 | color: #333333; 28 | font-size:1.05em; 29 | } 30 | 31 | h1 { 32 | margin-top: 15px; 33 | } 34 | 35 | h2 { 36 | margin-top: 10px; 37 | } 38 | 39 | /* -- navigation styles ----- */ 40 | .navbar { 41 | line-height:1em; 42 | } 43 | #navigation { 44 | min-height: 29px; 45 | line-height: 30px; 46 | display:inline-block; 47 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 48 | font-weight: normal; 49 | } 50 | #navigation ul { 51 | display: block; 52 | float: left; 53 | left: 0; 54 | margin: 0 10px 0 0; 55 | position: relative; 56 | } 57 | #navigation li { 58 | float: left; 59 | display:block; 60 | line-height:38px; 61 | } 62 | #navigation ul > li > a { 63 | color: #999999; 64 | float: none; 65 | line-height: 19px; 66 | padding: 10px 10px 11px; 67 | text-decoration: none; 68 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 69 | } 70 | #navigation li a { 71 | padding:3px 8px; 72 | color: #999; 73 | } 74 | #navigation li.current a { 75 | color: #FFFFFF; 76 | } 77 | #navigation li a:hover { 78 | color: #FFFFFF; 79 | } 80 | #navigation li a:hover, #navigation li a { 81 | text-decoration:none; 82 | } 83 | #navigation li, #ddLinks, #menu { 84 | font-size: 14px; 85 | } 86 | /* -------------------------- */ 87 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/bootstrapCustom.css: -------------------------------------------------------------------------------- 1 | h1, h2, h3, h4, h5, h6{ 2 | padding: 40px 0 5px; 3 | } 4 | 5 | h3{ 6 | padding: 40px 0 10px; 7 | } 8 | 9 | a, a:hover, a:visited{ 10 | color:#0088CC; 11 | text-decoration:underline; 12 | } 13 | 14 | .navbar a, 15 | .sphinxsidebarwrapper a{ 16 | text-decoration:none; 17 | } 18 | 19 | .admonition.note .first.admonition-title { 20 | font-family: century gothic; 21 | font-weight: bold; 22 | text-align : center; 23 | line-height: 30px; 24 | overflow:hidden; 25 | -webkit-border-radius:50px; 26 | -moz-border-radius:50px; 27 | border-radius:50px; 28 | background-color: blue; 29 | box-shadow: 0.5px 0.5px 2px #343434;; 30 | color:white; 31 | width:50px; 32 | margin-right:1em; 33 | float:left; 34 | } 35 | 36 | .admonition.note .last { 37 | line-height: 25px; 38 | } 39 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/img/project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alchemy-fr/RabbitMQ-Management-API-Client/d1fd8e70db0bfc03a410f211103e155bf7ef9d79/docs/source/_themes/Alchemy/static/img/project.png -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/js/plugins.js: -------------------------------------------------------------------------------- 1 | // usage: log('inside coolFunc', this, arguments); 2 | // paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/ 3 | window.log = function f(){ log.history = log.history || []; log.history.push(arguments); if(this.console) { var args = arguments, newarr; try { args.callee = f.caller } catch(e) {}; newarr = [].slice.call(args); if (typeof console.log === 'object') log.apply.call(console.log, console, newarr); else console.log.apply(console, newarr);}}; 4 | 5 | // make it safe to use console.log always 6 | (function(a){function b(){}for(var c="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profileEnd,time,timeEnd,trace,warn".split(","),d;!!(d=c.pop());){a[d]=a[d]||b;}}) 7 | (function(){try{console.log();return window.console;}catch(a){return (window.console={});}}()); 8 | 9 | 10 | // place any jQuery/helper plugins in here, instead of separate, slower script files. 11 | 12 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/js/script.js: -------------------------------------------------------------------------------- 1 | /* Author: 2 | 3 | */ 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/accordion.less: -------------------------------------------------------------------------------- 1 | // ACCORDION 2 | // --------- 3 | 4 | 5 | // Parent container 6 | .accordion { 7 | margin-bottom: @baseLineHeight; 8 | } 9 | 10 | // Group == heading + body 11 | .accordion-group { 12 | margin-bottom: 2px; 13 | border: 1px solid #e5e5e5; 14 | .border-radius(4px); 15 | } 16 | .accordion-heading { 17 | border-bottom: 0; 18 | } 19 | .accordion-heading .accordion-toggle { 20 | display: block; 21 | padding: 8px 15px; 22 | } 23 | 24 | // Inner needs the styles because you can't animate properly with any styles on the element 25 | .accordion-inner { 26 | padding: 9px 15px; 27 | border-top: 1px solid #e5e5e5; 28 | } 29 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/alerts.less: -------------------------------------------------------------------------------- 1 | // ALERT STYLES 2 | // ------------ 3 | 4 | // Base alert styles 5 | .alert { 6 | padding: 8px 35px 8px 14px; 7 | margin-bottom: @baseLineHeight; 8 | text-shadow: 0 1px 0 rgba(255,255,255,.5); 9 | background-color: @warningBackground; 10 | border: 1px solid @warningBorder; 11 | .border-radius(4px); 12 | color: @warningText; 13 | } 14 | .alert-heading { 15 | color: inherit; 16 | } 17 | 18 | // Adjust close link position 19 | .alert .close { 20 | position: relative; 21 | top: -2px; 22 | right: -21px; 23 | line-height: 18px; 24 | } 25 | 26 | // Alternate styles 27 | // ---------------- 28 | 29 | .alert-success { 30 | background-color: @successBackground; 31 | border-color: @successBorder; 32 | color: @successText; 33 | } 34 | .alert-danger, 35 | .alert-error { 36 | background-color: @errorBackground; 37 | border-color: @errorBorder; 38 | color: @errorText; 39 | } 40 | .alert-info { 41 | background-color: @infoBackground; 42 | border-color: @infoBorder; 43 | color: @infoText; 44 | } 45 | 46 | // Block alerts 47 | // ------------------------ 48 | .alert-block { 49 | padding-top: 14px; 50 | padding-bottom: 14px; 51 | } 52 | .alert-block > p, 53 | .alert-block > ul { 54 | margin-bottom: 0; 55 | } 56 | .alert-block p + p { 57 | margin-top: 5px; 58 | } 59 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/badges.less: -------------------------------------------------------------------------------- 1 | // BADGES 2 | // ------ 3 | 4 | // Base 5 | .badge { 6 | padding: 1px 9px 2px; 7 | font-size: @baseFontSize * .925; 8 | font-weight: bold; 9 | white-space: nowrap; 10 | color: @white; 11 | background-color: @grayLight; 12 | .border-radius(9px); 13 | } 14 | 15 | // Hover state 16 | .badge:hover { 17 | color: @white; 18 | text-decoration: none; 19 | cursor: pointer; 20 | } 21 | 22 | // Colors 23 | .badge-error { background-color: @errorText; } 24 | .badge-error:hover { background-color: darken(@errorText, 10%); } 25 | 26 | .badge-warning { background-color: @orange; } 27 | .badge-warning:hover { background-color: darken(@orange, 10%); } 28 | 29 | .badge-success { background-color: @successText; } 30 | .badge-success:hover { background-color: darken(@successText, 10%); } 31 | 32 | .badge-info { background-color: @infoText; } 33 | .badge-info:hover { background-color: darken(@infoText, 10%); } 34 | 35 | .badge-inverse { background-color: @grayDark; } 36 | .badge-inverse:hover { background-color: darken(@grayDark, 10%); } -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/bootstrap.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v2.0.2 3 | * 4 | * Copyright 2012 Twitter, Inc 5 | * Licensed under the Apache License v2.0 6 | * http://www.apache.org/licenses/LICENSE-2.0 7 | * 8 | * Designed and built with all the love in the world @twitter by @mdo and @fat. 9 | */ 10 | 11 | // CSS Reset 12 | @import "reset.less"; 13 | 14 | // Core variables and mixins 15 | @import "variables.less"; // Modify this for custom colors, font-sizes, etc 16 | @import "mixins.less"; 17 | 18 | // Grid system and page structure 19 | @import "scaffolding.less"; 20 | @import "grid.less"; 21 | @import "layouts.less"; 22 | 23 | // Base CSS 24 | @import "type.less"; 25 | @import "code.less"; 26 | @import "forms.less"; 27 | @import "tables.less"; 28 | 29 | // Components: common 30 | @import "sprites.less"; 31 | @import "dropdowns.less"; 32 | @import "wells.less"; 33 | @import "component-animations.less"; 34 | @import "close.less"; 35 | 36 | // Components: Buttons & Alerts 37 | @import "buttons.less"; 38 | @import "button-groups.less"; 39 | @import "alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less 40 | 41 | // Components: Nav 42 | @import "navs.less"; 43 | @import "navbar.less"; 44 | @import "breadcrumbs.less"; 45 | @import "pagination.less"; 46 | @import "pager.less"; 47 | 48 | // Components: Popovers 49 | @import "modals.less"; 50 | @import "tooltip.less"; 51 | @import "popovers.less"; 52 | 53 | // Components: Misc 54 | @import "thumbnails.less"; 55 | @import "labels.less"; 56 | @import "badges.less"; 57 | @import "progress-bars.less"; 58 | @import "accordion.less"; 59 | @import "carousel.less"; 60 | @import "hero-unit.less"; 61 | 62 | // Utility classes 63 | @import "utilities.less"; // Has to be last to override when necessary 64 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // BREADCRUMBS 2 | // ----------- 3 | 4 | .breadcrumb { 5 | padding: 7px 14px; 6 | margin: 0 0 @baseLineHeight; 7 | list-style: none; 8 | #gradient > .vertical(@white, #f5f5f5); 9 | border: 1px solid #ddd; 10 | .border-radius(3px); 11 | .box-shadow(inset 0 1px 0 @white); 12 | li { 13 | display: inline-block; 14 | .ie7-inline-block(); 15 | text-shadow: 0 1px 0 @white; 16 | } 17 | .divider { 18 | padding: 0 5px; 19 | color: @grayLight; 20 | } 21 | .active a { 22 | color: @grayDark; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/button-groups.less: -------------------------------------------------------------------------------- 1 | // BUTTON GROUPS 2 | // ------------- 3 | 4 | 5 | // Make the div behave like a button 6 | .btn-group { 7 | position: relative; 8 | .clearfix(); // clears the floated buttons 9 | .ie7-restore-left-whitespace(); 10 | } 11 | 12 | // Space out series of button groups 13 | .btn-group + .btn-group { 14 | margin-left: 5px; 15 | } 16 | 17 | // Optional: Group multiple button groups together for a toolbar 18 | .btn-toolbar { 19 | margin-top: @baseLineHeight / 2; 20 | margin-bottom: @baseLineHeight / 2; 21 | .btn-group { 22 | display: inline-block; 23 | .ie7-inline-block(); 24 | } 25 | } 26 | 27 | // Float them, remove border radius, then re-add to first and last elements 28 | .btn-group .btn { 29 | position: relative; 30 | float: left; 31 | margin-left: -1px; 32 | .border-radius(0); 33 | } 34 | // Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match 35 | .btn-group .btn:first-child { 36 | margin-left: 0; 37 | -webkit-border-top-left-radius: 4px; 38 | -moz-border-radius-topleft: 4px; 39 | border-top-left-radius: 4px; 40 | -webkit-border-bottom-left-radius: 4px; 41 | -moz-border-radius-bottomleft: 4px; 42 | border-bottom-left-radius: 4px; 43 | } 44 | .btn-group .btn:last-child, 45 | .btn-group .dropdown-toggle { 46 | -webkit-border-top-right-radius: 4px; 47 | -moz-border-radius-topright: 4px; 48 | border-top-right-radius: 4px; 49 | -webkit-border-bottom-right-radius: 4px; 50 | -moz-border-radius-bottomright: 4px; 51 | border-bottom-right-radius: 4px; 52 | } 53 | // Reset corners for large buttons 54 | .btn-group .btn.large:first-child { 55 | margin-left: 0; 56 | -webkit-border-top-left-radius: 6px; 57 | -moz-border-radius-topleft: 6px; 58 | border-top-left-radius: 6px; 59 | -webkit-border-bottom-left-radius: 6px; 60 | -moz-border-radius-bottomleft: 6px; 61 | border-bottom-left-radius: 6px; 62 | } 63 | .btn-group .btn.large:last-child, 64 | .btn-group .large.dropdown-toggle { 65 | -webkit-border-top-right-radius: 6px; 66 | -moz-border-radius-topright: 6px; 67 | border-top-right-radius: 6px; 68 | -webkit-border-bottom-right-radius: 6px; 69 | -moz-border-radius-bottomright: 6px; 70 | border-bottom-right-radius: 6px; 71 | } 72 | 73 | // On hover/focus/active, bring the proper btn to front 74 | .btn-group .btn:hover, 75 | .btn-group .btn:focus, 76 | .btn-group .btn:active, 77 | .btn-group .btn.active { 78 | z-index: 2; 79 | } 80 | 81 | // On active and open, don't show outline 82 | .btn-group .dropdown-toggle:active, 83 | .btn-group.open .dropdown-toggle { 84 | outline: 0; 85 | } 86 | 87 | 88 | 89 | // Split button dropdowns 90 | // ---------------------- 91 | 92 | // Give the line between buttons some depth 93 | .btn-group .dropdown-toggle { 94 | padding-left: 8px; 95 | padding-right: 8px; 96 | @shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); 97 | .box-shadow(@shadow); 98 | *padding-top: 3px; 99 | *padding-bottom: 3px; 100 | } 101 | .btn-group .btn-mini.dropdown-toggle { 102 | padding-left: 5px; 103 | padding-right: 5px; 104 | *padding-top: 1px; 105 | *padding-bottom: 1px; 106 | } 107 | .btn-group .btn-small.dropdown-toggle { 108 | *padding-top: 4px; 109 | *padding-bottom: 4px; 110 | } 111 | .btn-group .btn-large.dropdown-toggle { 112 | padding-left: 12px; 113 | padding-right: 12px; 114 | } 115 | 116 | .btn-group.open { 117 | // IE7's z-index only goes to the nearest positioned ancestor, which would 118 | // make the menu appear below buttons that appeared later on the page 119 | *z-index: @zindexDropdown; 120 | 121 | // Reposition menu on open and round all corners 122 | .dropdown-menu { 123 | display: block; 124 | margin-top: 1px; 125 | .border-radius(5px); 126 | } 127 | 128 | .dropdown-toggle { 129 | background-image: none; 130 | @shadow: inset 0 1px 6px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); 131 | .box-shadow(@shadow); 132 | } 133 | } 134 | 135 | // Reposition the caret 136 | .btn .caret { 137 | margin-top: 7px; 138 | margin-left: 0; 139 | } 140 | .btn:hover .caret, 141 | .open.btn-group .caret { 142 | .opacity(100); 143 | } 144 | // Carets in other button sizes 145 | .btn-mini .caret { 146 | margin-top: 5px; 147 | } 148 | .btn-small .caret { 149 | margin-top: 6px; 150 | } 151 | .btn-large .caret { 152 | margin-top: 6px; 153 | border-left: 5px solid transparent; 154 | border-right: 5px solid transparent; 155 | border-top: 5px solid @black; 156 | } 157 | 158 | 159 | // Account for other colors 160 | .btn-primary, 161 | .btn-warning, 162 | .btn-danger, 163 | .btn-info, 164 | .btn-success, 165 | .btn-inverse { 166 | .caret { 167 | border-top-color: @white; 168 | border-bottom-color: @white; 169 | .opacity(75); 170 | } 171 | } 172 | 173 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/buttons.less: -------------------------------------------------------------------------------- 1 | // BUTTON STYLES 2 | // ------------- 3 | 4 | 5 | // Base styles 6 | // -------------------------------------------------- 7 | 8 | // Core 9 | .btn { 10 | display: inline-block; 11 | .ie7-inline-block(); 12 | padding: 4px 10px 4px; 13 | margin-bottom: 0; // For input.btn 14 | font-size: @baseFontSize; 15 | line-height: @baseLineHeight; 16 | color: @grayDark; 17 | text-align: center; 18 | text-shadow: 0 1px 1px rgba(255,255,255,.75); 19 | vertical-align: middle; 20 | .buttonBackground(@btnBackground, @btnBackgroundHighlight); 21 | border: 1px solid @btnBorder; 22 | border-bottom-color: darken(@btnBorder, 10%); 23 | .border-radius(4px); 24 | @shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); 25 | .box-shadow(@shadow); 26 | cursor: pointer; 27 | 28 | // Give IE7 some love 29 | .ie7-restore-left-whitespace(); 30 | } 31 | 32 | // Hover state 33 | .btn:hover { 34 | color: @grayDark; 35 | text-decoration: none; 36 | background-color: darken(@white, 10%); 37 | background-position: 0 -15px; 38 | 39 | // transition is only when going to hover, otherwise the background 40 | // behind the gradient (there for IE<=9 fallback) gets mismatched 41 | .transition(background-position .1s linear); 42 | } 43 | 44 | // Focus state for keyboard and accessibility 45 | .btn:focus { 46 | .tab-focus(); 47 | } 48 | 49 | // Active state 50 | .btn.active, 51 | .btn:active { 52 | background-image: none; 53 | @shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); 54 | .box-shadow(@shadow); 55 | background-color: darken(@white, 10%); 56 | background-color: darken(@white, 15%) e("\9"); 57 | outline: 0; 58 | } 59 | 60 | // Disabled state 61 | .btn.disabled, 62 | .btn[disabled] { 63 | cursor: default; 64 | background-image: none; 65 | background-color: darken(@white, 10%); 66 | .opacity(65); 67 | .box-shadow(none); 68 | } 69 | 70 | 71 | // Button Sizes 72 | // -------------------------------------------------- 73 | 74 | // Large 75 | .btn-large { 76 | padding: 9px 14px; 77 | font-size: @baseFontSize + 2px; 78 | line-height: normal; 79 | .border-radius(5px); 80 | } 81 | .btn-large [class^="icon-"] { 82 | margin-top: 1px; 83 | } 84 | 85 | // Small 86 | .btn-small { 87 | padding: 5px 9px; 88 | font-size: @baseFontSize - 2px; 89 | line-height: @baseLineHeight - 2px; 90 | } 91 | .btn-small [class^="icon-"] { 92 | margin-top: -1px; 93 | } 94 | 95 | // Mini 96 | .btn-mini { 97 | padding: 2px 6px; 98 | font-size: @baseFontSize - 2px; 99 | line-height: @baseLineHeight - 4px; 100 | } 101 | 102 | 103 | // Alternate buttons 104 | // -------------------------------------------------- 105 | 106 | // Set text color 107 | // ------------------------- 108 | .btn-primary, 109 | .btn-primary:hover, 110 | .btn-warning, 111 | .btn-warning:hover, 112 | .btn-danger, 113 | .btn-danger:hover, 114 | .btn-success, 115 | .btn-success:hover, 116 | .btn-info, 117 | .btn-info:hover, 118 | .btn-inverse, 119 | .btn-inverse:hover { 120 | text-shadow: 0 -1px 0 rgba(0,0,0,.25); 121 | color: @white; 122 | } 123 | // Provide *some* extra contrast for those who can get it 124 | .btn-primary.active, 125 | .btn-warning.active, 126 | .btn-danger.active, 127 | .btn-success.active, 128 | .btn-info.active, 129 | .btn-inverse.active { 130 | color: rgba(255,255,255,.75); 131 | } 132 | 133 | // Set the backgrounds 134 | // ------------------------- 135 | .btn-primary { 136 | .buttonBackground(@btnPrimaryBackground, @btnPrimaryBackgroundHighlight); 137 | } 138 | // Warning appears are orange 139 | .btn-warning { 140 | .buttonBackground(@btnWarningBackground, @btnWarningBackgroundHighlight); 141 | } 142 | // Danger and error appear as red 143 | .btn-danger { 144 | .buttonBackground(@btnDangerBackground, @btnDangerBackgroundHighlight); 145 | } 146 | // Success appears as green 147 | .btn-success { 148 | .buttonBackground(@btnSuccessBackground, @btnSuccessBackgroundHighlight); 149 | } 150 | // Info appears as a neutral blue 151 | .btn-info { 152 | .buttonBackground(@btnInfoBackground, @btnInfoBackgroundHighlight); 153 | } 154 | // Inverse appears as dark gray 155 | .btn-inverse { 156 | .buttonBackground(@btnInverseBackground, @btnInverseBackgroundHighlight); 157 | } 158 | 159 | 160 | // Cross-browser Jank 161 | // -------------------------------------------------- 162 | 163 | button.btn, 164 | input[type="submit"].btn { 165 | 166 | // Firefox 3.6 only I believe 167 | &::-moz-focus-inner { 168 | padding: 0; 169 | border: 0; 170 | } 171 | 172 | // IE7 has some default padding on button controls 173 | *padding-top: 2px; 174 | *padding-bottom: 2px; 175 | &.btn-large { 176 | *padding-top: 7px; 177 | *padding-bottom: 7px; 178 | } 179 | &.btn-small { 180 | *padding-top: 3px; 181 | *padding-bottom: 3px; 182 | } 183 | &.btn-mini { 184 | *padding-top: 1px; 185 | *padding-bottom: 1px; 186 | } 187 | } 188 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/carousel.less: -------------------------------------------------------------------------------- 1 | // CAROUSEL 2 | // -------- 3 | 4 | .carousel { 5 | position: relative; 6 | margin-bottom: @baseLineHeight; 7 | line-height: 1; 8 | } 9 | 10 | .carousel-inner { 11 | overflow: hidden; 12 | width: 100%; 13 | position: relative; 14 | } 15 | 16 | .carousel { 17 | 18 | .item { 19 | display: none; 20 | position: relative; 21 | .transition(.6s ease-in-out left); 22 | } 23 | 24 | // Account for jankitude on images 25 | .item > img { 26 | display: block; 27 | line-height: 1; 28 | } 29 | 30 | .active, 31 | .next, 32 | .prev { display: block; } 33 | 34 | .active { 35 | left: 0; 36 | } 37 | 38 | .next, 39 | .prev { 40 | position: absolute; 41 | top: 0; 42 | width: 100%; 43 | } 44 | 45 | .next { 46 | left: 100%; 47 | } 48 | .prev { 49 | left: -100%; 50 | } 51 | .next.left, 52 | .prev.right { 53 | left: 0; 54 | } 55 | 56 | .active.left { 57 | left: -100%; 58 | } 59 | .active.right { 60 | left: 100%; 61 | } 62 | 63 | } 64 | 65 | // Left/right controls for nav 66 | // --------------------------- 67 | 68 | .carousel-control { 69 | position: absolute; 70 | top: 40%; 71 | left: 15px; 72 | width: 40px; 73 | height: 40px; 74 | margin-top: -20px; 75 | font-size: 60px; 76 | font-weight: 100; 77 | line-height: 30px; 78 | color: @white; 79 | text-align: center; 80 | background: @grayDarker; 81 | border: 3px solid @white; 82 | .border-radius(23px); 83 | .opacity(50); 84 | 85 | // we can't have this transition here 86 | // because webkit cancels the carousel 87 | // animation if you trip this while 88 | // in the middle of another animation 89 | // ;_; 90 | // .transition(opacity .2s linear); 91 | 92 | // Reposition the right one 93 | &.right { 94 | left: auto; 95 | right: 15px; 96 | } 97 | 98 | // Hover state 99 | &:hover { 100 | color: @white; 101 | text-decoration: none; 102 | .opacity(90); 103 | } 104 | } 105 | 106 | // Caption for text below images 107 | // ----------------------------- 108 | 109 | .carousel-caption { 110 | position: absolute; 111 | left: 0; 112 | right: 0; 113 | bottom: 0; 114 | padding: 10px 15px 5px; 115 | background: @grayDark; 116 | background: rgba(0,0,0,.75); 117 | } 118 | .carousel-caption h4, 119 | .carousel-caption p { 120 | color: @white; 121 | } 122 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/close.less: -------------------------------------------------------------------------------- 1 | // CLOSE ICONS 2 | // ----------- 3 | 4 | .close { 5 | float: right; 6 | font-size: 20px; 7 | font-weight: bold; 8 | line-height: @baseLineHeight; 9 | color: @black; 10 | text-shadow: 0 1px 0 rgba(255,255,255,1); 11 | .opacity(20); 12 | &:hover { 13 | color: @black; 14 | text-decoration: none; 15 | .opacity(40); 16 | cursor: pointer; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/code.less: -------------------------------------------------------------------------------- 1 | // Code.less 2 | // Code typography styles for the and
 elements
 3 | // --------------------------------------------------------
 4 | 
 5 | // Inline and block code styles
 6 | code,
 7 | pre {
 8 |   padding: 0 3px 2px;
 9 |   #font > #family > .monospace;
10 |   font-size: @baseFontSize - 1;
11 |   color: @grayDark;
12 |   .border-radius(3px);
13 | }
14 | 
15 | // Inline code
16 | code {
17 |   padding: 2px 4px;
18 |   color: #d14;
19 |   background-color: #f7f7f9;
20 |   border: 1px solid #e1e1e8;
21 | }
22 | 
23 | // Blocks of code
24 | pre {
25 |   display: block;
26 |   padding: (@baseLineHeight - 1) / 2;
27 |   margin: 0 0 @baseLineHeight / 2;
28 |   font-size: @baseFontSize * .925; // 13px to 12px
29 |   line-height: @baseLineHeight;
30 |   background-color: #f5f5f5;
31 |   border: 1px solid #ccc; // fallback for IE7-8
32 |   border: 1px solid rgba(0,0,0,.15);
33 |   .border-radius(4px);
34 |   white-space: pre;
35 |   white-space: pre-wrap;
36 |   word-break: break-all;
37 |   word-wrap: break-word;
38 | 
39 |   // Make prettyprint styles more spaced out for readability
40 |   &.prettyprint {
41 |     margin-bottom: @baseLineHeight;
42 |   }
43 | 
44 |   // Account for some code outputs that place code tags in pre tags
45 |   code {
46 |     padding: 0;
47 |     color: inherit;
48 |     background-color: transparent;
49 |     border: 0;
50 |   }
51 | }
52 | 
53 | // Enable scrollable blocks of code
54 | .pre-scrollable {
55 |   max-height: 340px;
56 |   overflow-y: scroll;
57 | }


--------------------------------------------------------------------------------
/docs/source/_themes/Alchemy/static/less/component-animations.less:
--------------------------------------------------------------------------------
 1 | // COMPONENT ANIMATIONS
 2 | // --------------------
 3 | 
 4 | .fade {
 5 |   .transition(opacity .15s linear);
 6 |   opacity: 0;
 7 |   &.in {
 8 |     opacity: 1;
 9 |   }
10 | }
11 | 
12 | .collapse {
13 |   .transition(height .35s ease);
14 |   position:relative;
15 |   overflow:hidden;
16 |   height: 0;
17 |   &.in {
18 |     height: auto;
19 |   }
20 | }


--------------------------------------------------------------------------------
/docs/source/_themes/Alchemy/static/less/dropdowns.less:
--------------------------------------------------------------------------------
  1 | // DROPDOWN MENUS
  2 | // --------------
  3 | 
  4 | // Use the .menu class on any 
  • element within the topbar or ul.tabs and you'll get some superfancy dropdowns 5 | .dropdown { 6 | position: relative; 7 | } 8 | .dropdown-toggle { 9 | // The caret makes the toggle a bit too tall in IE7 10 | *margin-bottom: -3px; 11 | } 12 | .dropdown-toggle:active, 13 | .open .dropdown-toggle { 14 | outline: 0; 15 | } 16 | 17 | // Dropdown arrow/caret 18 | // -------------------- 19 | .caret { 20 | display: inline-block; 21 | width: 0; 22 | height: 0; 23 | vertical-align: top; 24 | border-left: 4px solid transparent; 25 | border-right: 4px solid transparent; 26 | border-top: 4px solid @black; 27 | .opacity(30); 28 | content: ""; 29 | } 30 | 31 | // Place the caret 32 | .dropdown .caret { 33 | margin-top: 8px; 34 | margin-left: 2px; 35 | } 36 | .dropdown:hover .caret, 37 | .open.dropdown .caret { 38 | .opacity(100); 39 | } 40 | 41 | // The dropdown menu (ul) 42 | // ---------------------- 43 | .dropdown-menu { 44 | position: absolute; 45 | top: 100%; 46 | left: 0; 47 | z-index: @zindexDropdown; 48 | float: left; 49 | display: none; // none by default, but block on "open" of the menu 50 | min-width: 160px; 51 | padding: 4px 0; 52 | margin: 0; // override default ul 53 | list-style: none; 54 | background-color: @dropdownBackground; 55 | border-color: #ccc; 56 | border-color: rgba(0,0,0,.2); 57 | border-style: solid; 58 | border-width: 1px; 59 | .border-radius(0 0 5px 5px); 60 | .box-shadow(0 5px 10px rgba(0,0,0,.2)); 61 | -webkit-background-clip: padding-box; 62 | -moz-background-clip: padding; 63 | background-clip: padding-box; 64 | *border-right-width: 2px; 65 | *border-bottom-width: 2px; 66 | 67 | // Aligns the dropdown menu to right 68 | &.pull-right { 69 | right: 0; 70 | left: auto; 71 | } 72 | 73 | // Dividers (basically an hr) within the dropdown 74 | .divider { 75 | .nav-divider(); 76 | } 77 | 78 | // Links within the dropdown menu 79 | a { 80 | display: block; 81 | padding: 3px 15px; 82 | clear: both; 83 | font-weight: normal; 84 | line-height: @baseLineHeight; 85 | color: @dropdownLinkColor; 86 | white-space: nowrap; 87 | } 88 | } 89 | 90 | // Hover state 91 | // ----------- 92 | .dropdown-menu li > a:hover, 93 | .dropdown-menu .active > a, 94 | .dropdown-menu .active > a:hover { 95 | color: @dropdownLinkColorHover; 96 | text-decoration: none; 97 | background-color: @dropdownLinkBackgroundHover; 98 | } 99 | 100 | // Open state for the dropdown 101 | // --------------------------- 102 | .dropdown.open { 103 | // IE7's z-index only goes to the nearest positioned ancestor, which would 104 | // make the menu appear below buttons that appeared later on the page 105 | *z-index: @zindexDropdown; 106 | 107 | .dropdown-toggle { 108 | color: @white; 109 | background: #ccc; 110 | background: rgba(0,0,0,.3); 111 | } 112 | .dropdown-menu { 113 | display: block; 114 | } 115 | } 116 | 117 | // Right aligned dropdowns 118 | .pull-right .dropdown-menu { 119 | left: auto; 120 | right: 0; 121 | } 122 | 123 | // Allow for dropdowns to go bottom up (aka, dropup-menu) 124 | // ------------------------------------------------------ 125 | // Just add .dropup after the standard .dropdown class and you're set, bro. 126 | // TODO: abstract this so that the navbar fixed styles are not placed here? 127 | .dropup, 128 | .navbar-fixed-bottom .dropdown { 129 | // Reverse the caret 130 | .caret { 131 | border-top: 0; 132 | border-bottom: 4px solid @black; 133 | content: "\2191"; 134 | } 135 | // Different positioning for bottom up menu 136 | .dropdown-menu { 137 | top: auto; 138 | bottom: 100%; 139 | margin-bottom: 1px; 140 | } 141 | } 142 | 143 | // Typeahead 144 | // --------- 145 | .typeahead { 146 | margin-top: 2px; // give it some space to breathe 147 | .border-radius(4px); 148 | } 149 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/grid.less: -------------------------------------------------------------------------------- 1 | // Fixed (940px) 2 | #grid > .core(@gridColumnWidth, @gridGutterWidth); 3 | 4 | // Fluid (940px) 5 | #grid > .fluid(@fluidGridColumnWidth, @fluidGridGutterWidth); -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/hero-unit.less: -------------------------------------------------------------------------------- 1 | // HERO UNIT 2 | // --------- 3 | 4 | .hero-unit { 5 | padding: 60px; 6 | margin-bottom: 30px; 7 | background-color: @heroUnitBackground; 8 | .border-radius(6px); 9 | h1 { 10 | margin-bottom: 0; 11 | font-size: 60px; 12 | line-height: 1; 13 | color: @heroUnitHeadingColor; 14 | letter-spacing: -1px; 15 | } 16 | p { 17 | font-size: 18px; 18 | font-weight: 200; 19 | line-height: @baseLineHeight * 1.5; 20 | color: @heroUnitLeadColor; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/labels.less: -------------------------------------------------------------------------------- 1 | // LABELS 2 | // ------ 3 | 4 | // Base 5 | .label { 6 | padding: 1px 4px 2px; 7 | font-size: @baseFontSize * .846; 8 | font-weight: bold; 9 | line-height: 13px; // ensure proper line-height if floated 10 | color: @white; 11 | vertical-align: middle; 12 | white-space: nowrap; 13 | text-shadow: 0 -1px 0 rgba(0,0,0,.25); 14 | background-color: @grayLight; 15 | .border-radius(3px); 16 | } 17 | 18 | // Hover state 19 | .label:hover { 20 | color: @white; 21 | text-decoration: none; 22 | } 23 | 24 | // Colors 25 | .label-important { background-color: @errorText; } 26 | .label-important:hover { background-color: darken(@errorText, 10%); } 27 | 28 | .label-warning { background-color: @orange; } 29 | .label-warning:hover { background-color: darken(@orange, 10%); } 30 | 31 | .label-success { background-color: @successText; } 32 | .label-success:hover { background-color: darken(@successText, 10%); } 33 | 34 | .label-info { background-color: @infoText; } 35 | .label-info:hover { background-color: darken(@infoText, 10%); } 36 | 37 | .label-inverse { background-color: @grayDark; } 38 | .label-inverse:hover { background-color: darken(@grayDark, 10%); } -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/layouts.less: -------------------------------------------------------------------------------- 1 | // 2 | // Layouts 3 | // Fixed-width and fluid (with sidebar) layouts 4 | // -------------------------------------------- 5 | 6 | 7 | // Container (centered, fixed-width layouts) 8 | .container { 9 | .container-fixed(); 10 | } 11 | 12 | // Fluid layouts (left aligned, with sidebar, min- & max-width content) 13 | .container-fluid { 14 | padding-left: @gridGutterWidth; 15 | padding-right: @gridGutterWidth; 16 | .clearfix(); 17 | } -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/modals.less: -------------------------------------------------------------------------------- 1 | // MODALS 2 | // ------ 3 | 4 | // Recalculate z-index where appropriate 5 | .modal-open { 6 | .dropdown-menu { z-index: @zindexDropdown + @zindexModal; } 7 | .dropdown.open { *z-index: @zindexDropdown + @zindexModal; } 8 | .popover { z-index: @zindexPopover + @zindexModal; } 9 | .tooltip { z-index: @zindexTooltip + @zindexModal; } 10 | } 11 | 12 | // Background 13 | .modal-backdrop { 14 | position: fixed; 15 | top: 0; 16 | right: 0; 17 | bottom: 0; 18 | left: 0; 19 | z-index: @zindexModalBackdrop; 20 | background-color: @black; 21 | // Fade for backdrop 22 | &.fade { opacity: 0; } 23 | } 24 | 25 | .modal-backdrop, 26 | .modal-backdrop.fade.in { 27 | .opacity(80); 28 | } 29 | 30 | // Base modal 31 | .modal { 32 | position: fixed; 33 | top: 50%; 34 | left: 50%; 35 | z-index: @zindexModal; 36 | overflow: auto; 37 | width: 560px; 38 | margin: -250px 0 0 -280px; 39 | background-color: @white; 40 | border: 1px solid #999; 41 | border: 1px solid rgba(0,0,0,.3); 42 | *border: 1px solid #999; /* IE6-7 */ 43 | .border-radius(6px); 44 | .box-shadow(0 3px 7px rgba(0,0,0,0.3)); 45 | .background-clip(padding-box); 46 | &.fade { 47 | .transition(e('opacity .3s linear, top .3s ease-out')); 48 | top: -25%; 49 | } 50 | &.fade.in { top: 50%; } 51 | } 52 | .modal-header { 53 | padding: 9px 15px; 54 | border-bottom: 1px solid #eee; 55 | // Close icon 56 | .close { margin-top: 2px; } 57 | } 58 | 59 | // Body (where all modal content resises) 60 | .modal-body { 61 | overflow-y: auto; 62 | max-height: 400px; 63 | padding: 15px; 64 | } 65 | // Remove bottom margin if need be 66 | .modal-form { 67 | margin-bottom: 0; 68 | } 69 | 70 | // Footer (for actions) 71 | .modal-footer { 72 | padding: 14px 15px 15px; 73 | margin-bottom: 0; 74 | text-align: right; // right align buttons 75 | background-color: #f5f5f5; 76 | border-top: 1px solid #ddd; 77 | .border-radius(0 0 6px 6px); 78 | .box-shadow(inset 0 1px 0 @white); 79 | .clearfix(); // clear it in case folks use .pull-* classes on buttons 80 | 81 | // Properly space out buttons 82 | .btn + .btn { 83 | margin-left: 5px; 84 | margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs 85 | } 86 | // but override that for button groups 87 | .btn-group .btn + .btn { 88 | margin-left: -1px; 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/pager.less: -------------------------------------------------------------------------------- 1 | // PAGER 2 | // ----- 3 | 4 | .pager { 5 | margin-left: 0; 6 | margin-bottom: @baseLineHeight; 7 | list-style: none; 8 | text-align: center; 9 | .clearfix(); 10 | } 11 | .pager li { 12 | display: inline; 13 | } 14 | .pager a { 15 | display: inline-block; 16 | padding: 5px 14px; 17 | background-color: #fff; 18 | border: 1px solid #ddd; 19 | .border-radius(15px); 20 | } 21 | .pager a:hover { 22 | text-decoration: none; 23 | background-color: #f5f5f5; 24 | } 25 | .pager .next a { 26 | float: right; 27 | } 28 | .pager .previous a { 29 | float: left; 30 | } 31 | .pager .disabled a, 32 | .pager .disabled a:hover { 33 | color: @grayLight; 34 | background-color: #fff; 35 | cursor: default; 36 | } -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/pagination.less: -------------------------------------------------------------------------------- 1 | // PAGINATION 2 | // ---------- 3 | 4 | .pagination { 5 | height: @baseLineHeight * 2; 6 | margin: @baseLineHeight 0; 7 | } 8 | .pagination ul { 9 | display: inline-block; 10 | .ie7-inline-block(); 11 | margin-left: 0; 12 | margin-bottom: 0; 13 | .border-radius(3px); 14 | .box-shadow(0 1px 2px rgba(0,0,0,.05)); 15 | } 16 | .pagination li { 17 | display: inline; 18 | } 19 | .pagination a { 20 | float: left; 21 | padding: 0 14px; 22 | line-height: (@baseLineHeight * 2) - 2; 23 | text-decoration: none; 24 | border: 1px solid #ddd; 25 | border-left-width: 0; 26 | } 27 | .pagination a:hover, 28 | .pagination .active a { 29 | background-color: #f5f5f5; 30 | } 31 | .pagination .active a { 32 | color: @grayLight; 33 | cursor: default; 34 | } 35 | .pagination .disabled span, 36 | .pagination .disabled a, 37 | .pagination .disabled a:hover { 38 | color: @grayLight; 39 | background-color: transparent; 40 | cursor: default; 41 | } 42 | .pagination li:first-child a { 43 | border-left-width: 1px; 44 | .border-radius(3px 0 0 3px); 45 | } 46 | .pagination li:last-child a { 47 | .border-radius(0 3px 3px 0); 48 | } 49 | 50 | // Centered 51 | .pagination-centered { 52 | text-align: center; 53 | } 54 | .pagination-right { 55 | text-align: right; 56 | } 57 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/popovers.less: -------------------------------------------------------------------------------- 1 | // POPOVERS 2 | // -------- 3 | 4 | .popover { 5 | position: absolute; 6 | top: 0; 7 | left: 0; 8 | z-index: @zindexPopover; 9 | display: none; 10 | padding: 5px; 11 | &.top { margin-top: -5px; } 12 | &.right { margin-left: 5px; } 13 | &.bottom { margin-top: 5px; } 14 | &.left { margin-left: -5px; } 15 | &.top .arrow { #popoverArrow > .top(); } 16 | &.right .arrow { #popoverArrow > .right(); } 17 | &.bottom .arrow { #popoverArrow > .bottom(); } 18 | &.left .arrow { #popoverArrow > .left(); } 19 | .arrow { 20 | position: absolute; 21 | width: 0; 22 | height: 0; 23 | } 24 | } 25 | .popover-inner { 26 | padding: 3px; 27 | width: 280px; 28 | overflow: hidden; 29 | background: @black; // has to be full background declaration for IE fallback 30 | background: rgba(0,0,0,.8); 31 | .border-radius(6px); 32 | .box-shadow(0 3px 7px rgba(0,0,0,0.3)); 33 | } 34 | .popover-title { 35 | padding: 9px 15px; 36 | line-height: 1; 37 | background-color: #f5f5f5; 38 | border-bottom:1px solid #eee; 39 | .border-radius(3px 3px 0 0); 40 | } 41 | .popover-content { 42 | padding: 14px; 43 | background-color: @white; 44 | .border-radius(0 0 3px 3px); 45 | .background-clip(padding-box); 46 | p, ul, ol { 47 | margin-bottom: 0; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/progress-bars.less: -------------------------------------------------------------------------------- 1 | // PROGRESS BARS 2 | // ------------- 3 | 4 | 5 | // ANIMATIONS 6 | // ---------- 7 | 8 | // Webkit 9 | @-webkit-keyframes progress-bar-stripes { 10 | from { background-position: 0 0; } 11 | to { background-position: 40px 0; } 12 | } 13 | 14 | // Firefox 15 | @-moz-keyframes progress-bar-stripes { 16 | from { background-position: 0 0; } 17 | to { background-position: 40px 0; } 18 | } 19 | 20 | // IE9 21 | @-ms-keyframes progress-bar-stripes { 22 | from { background-position: 0 0; } 23 | to { background-position: 40px 0; } 24 | } 25 | 26 | // Spec 27 | @keyframes progress-bar-stripes { 28 | from { background-position: 0 0; } 29 | to { background-position: 40px 0; } 30 | } 31 | 32 | 33 | 34 | // THE BARS 35 | // -------- 36 | 37 | // Outer container 38 | .progress { 39 | overflow: hidden; 40 | height: 18px; 41 | margin-bottom: 18px; 42 | #gradient > .vertical(#f5f5f5, #f9f9f9); 43 | .box-shadow(inset 0 1px 2px rgba(0,0,0,.1)); 44 | .border-radius(4px); 45 | } 46 | 47 | // Bar of progress 48 | .progress .bar { 49 | width: 0%; 50 | height: 18px; 51 | color: @white; 52 | font-size: 12px; 53 | text-align: center; 54 | text-shadow: 0 -1px 0 rgba(0,0,0,.25); 55 | #gradient > .vertical(#149bdf, #0480be); 56 | .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15)); 57 | .box-sizing(border-box); 58 | .transition(width .6s ease); 59 | } 60 | 61 | // Striped bars 62 | .progress-striped .bar { 63 | #gradient > .striped(#149bdf); 64 | .background-size(40px 40px); 65 | } 66 | 67 | // Call animation for the active one 68 | .progress.active .bar { 69 | -webkit-animation: progress-bar-stripes 2s linear infinite; 70 | -moz-animation: progress-bar-stripes 2s linear infinite; 71 | animation: progress-bar-stripes 2s linear infinite; 72 | } 73 | 74 | 75 | 76 | // COLORS 77 | // ------ 78 | 79 | // Danger (red) 80 | .progress-danger .bar { 81 | #gradient > .vertical(#ee5f5b, #c43c35); 82 | } 83 | .progress-danger.progress-striped .bar { 84 | #gradient > .striped(#ee5f5b); 85 | } 86 | 87 | // Success (green) 88 | .progress-success .bar { 89 | #gradient > .vertical(#62c462, #57a957); 90 | } 91 | .progress-success.progress-striped .bar { 92 | #gradient > .striped(#62c462); 93 | } 94 | 95 | // Info (teal) 96 | .progress-info .bar { 97 | #gradient > .vertical(#5bc0de, #339bb9); 98 | } 99 | .progress-info.progress-striped .bar { 100 | #gradient > .striped(#5bc0de); 101 | } 102 | 103 | // Warning (orange) 104 | .progress-warning .bar { 105 | #gradient > .vertical(lighten(@orange, 15%), @orange); 106 | } 107 | .progress-warning.progress-striped .bar { 108 | #gradient > .striped(lighten(@orange, 15%)); 109 | } 110 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/reset.less: -------------------------------------------------------------------------------- 1 | // Reset.less 2 | // Adapted from Normalize.css http://github.com/necolas/normalize.css 3 | // ------------------------------------------------------------------------ 4 | 5 | // Display in IE6-9 and FF3 6 | // ------------------------- 7 | 8 | article, 9 | aside, 10 | details, 11 | figcaption, 12 | figure, 13 | footer, 14 | header, 15 | hgroup, 16 | nav, 17 | section { 18 | display: block; 19 | } 20 | 21 | // Display block in IE6-9 and FF3 22 | // ------------------------- 23 | 24 | audio, 25 | canvas, 26 | video { 27 | display: inline-block; 28 | *display: inline; 29 | *zoom: 1; 30 | } 31 | 32 | // Prevents modern browsers from displaying 'audio' without controls 33 | // ------------------------- 34 | 35 | audio:not([controls]) { 36 | display: none; 37 | } 38 | 39 | // Base settings 40 | // ------------------------- 41 | 42 | html { 43 | font-size: 100%; 44 | -webkit-text-size-adjust: 100%; 45 | -ms-text-size-adjust: 100%; 46 | } 47 | // Focus states 48 | a:focus { 49 | .tab-focus(); 50 | } 51 | // Hover & Active 52 | a:hover, 53 | a:active { 54 | outline: 0; 55 | } 56 | 57 | // Prevents sub and sup affecting line-height in all browsers 58 | // ------------------------- 59 | 60 | sub, 61 | sup { 62 | position: relative; 63 | font-size: 75%; 64 | line-height: 0; 65 | vertical-align: baseline; 66 | } 67 | sup { 68 | top: -0.5em; 69 | } 70 | sub { 71 | bottom: -0.25em; 72 | } 73 | 74 | // Img border in a's and image quality 75 | // ------------------------- 76 | 77 | img { 78 | height: auto; 79 | border: 0; 80 | -ms-interpolation-mode: bicubic; 81 | vertical-align: middle; 82 | } 83 | 84 | // Forms 85 | // ------------------------- 86 | 87 | // Font size in all browsers, margin changes, misc consistency 88 | button, 89 | input, 90 | select, 91 | textarea { 92 | margin: 0; 93 | font-size: 100%; 94 | vertical-align: middle; 95 | } 96 | button, 97 | input { 98 | *overflow: visible; // Inner spacing ie IE6/7 99 | line-height: normal; // FF3/4 have !important on line-height in UA stylesheet 100 | } 101 | button::-moz-focus-inner, 102 | input::-moz-focus-inner { // Inner padding and border oddities in FF3/4 103 | padding: 0; 104 | border: 0; 105 | } 106 | button, 107 | input[type="button"], 108 | input[type="reset"], 109 | input[type="submit"] { 110 | cursor: pointer; // Cursors on all buttons applied consistently 111 | -webkit-appearance: button; // Style clickable inputs in iOS 112 | } 113 | input[type="search"] { // Appearance in Safari/Chrome 114 | -webkit-appearance: textfield; 115 | -webkit-box-sizing: content-box; 116 | -moz-box-sizing: content-box; 117 | box-sizing: content-box; 118 | } 119 | input[type="search"]::-webkit-search-decoration, 120 | input[type="search"]::-webkit-search-cancel-button { 121 | -webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5 122 | } 123 | textarea { 124 | overflow: auto; // Remove vertical scrollbar in IE6-9 125 | vertical-align: top; // Readability and alignment cross-browser 126 | } 127 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/scaffolding.less: -------------------------------------------------------------------------------- 1 | // Scaffolding 2 | // Basic and global styles for generating a grid system, structural layout, and page templates 3 | // ------------------------------------------------------------------------------------------- 4 | 5 | 6 | // Body reset 7 | // ---------- 8 | 9 | body { 10 | margin: 0; 11 | font-family: @baseFontFamily; 12 | font-size: @baseFontSize; 13 | line-height: @baseLineHeight; 14 | color: @textColor; 15 | background-color: @bodyBackground; 16 | } 17 | 18 | 19 | // Links 20 | // ----- 21 | 22 | a { 23 | color: @linkColor; 24 | text-decoration: none; 25 | } 26 | a:hover { 27 | color: @linkColorHover; 28 | text-decoration: underline; 29 | } 30 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/tables.less: -------------------------------------------------------------------------------- 1 | // 2 | // Tables.less 3 | // Tables for, you guessed it, tabular data 4 | // ---------------------------------------- 5 | 6 | 7 | // BASE TABLES 8 | // ----------------- 9 | 10 | table { 11 | max-width: 100%; 12 | border-collapse: collapse; 13 | border-spacing: 0; 14 | background-color: @tableBackground; 15 | } 16 | 17 | // BASELINE STYLES 18 | // --------------- 19 | 20 | .table { 21 | width: 100%; 22 | margin-bottom: @baseLineHeight; 23 | // Cells 24 | th, 25 | td { 26 | padding: 8px; 27 | line-height: @baseLineHeight; 28 | text-align: left; 29 | vertical-align: top; 30 | border-top: 1px solid @tableBorder; 31 | } 32 | th { 33 | font-weight: bold; 34 | } 35 | // Bottom align for column headings 36 | thead th { 37 | vertical-align: bottom; 38 | } 39 | // Remove top border from thead by default 40 | colgroup + thead tr:first-child th, 41 | colgroup + thead tr:first-child td, 42 | thead:first-child tr:first-child th, 43 | thead:first-child tr:first-child td { 44 | border-top: 0; 45 | } 46 | // Account for multiple tbody instances 47 | tbody + tbody { 48 | border-top: 2px solid @tableBorder; 49 | } 50 | } 51 | 52 | 53 | 54 | // CONDENSED TABLE W/ HALF PADDING 55 | // ------------------------------- 56 | 57 | .table-condensed { 58 | th, 59 | td { 60 | padding: 4px 5px; 61 | } 62 | } 63 | 64 | 65 | // BORDERED VERSION 66 | // ---------------- 67 | 68 | .table-bordered { 69 | border: 1px solid @tableBorder; 70 | border-left: 0; 71 | border-collapse: separate; // Done so we can round those corners! 72 | *border-collapse: collapsed; // IE7 can't round corners anyway 73 | .border-radius(4px); 74 | th, 75 | td { 76 | border-left: 1px solid @tableBorder; 77 | } 78 | // Prevent a double border 79 | thead:first-child tr:first-child th, 80 | tbody:first-child tr:first-child th, 81 | tbody:first-child tr:first-child td { 82 | border-top: 0; 83 | } 84 | // For first th or td in the first row in the first thead or tbody 85 | thead:first-child tr:first-child th:first-child, 86 | tbody:first-child tr:first-child td:first-child { 87 | .border-radius(4px 0 0 0); 88 | } 89 | thead:first-child tr:first-child th:last-child, 90 | tbody:first-child tr:first-child td:last-child { 91 | .border-radius(0 4px 0 0); 92 | } 93 | // For first th or td in the first row in the first thead or tbody 94 | thead:last-child tr:last-child th:first-child, 95 | tbody:last-child tr:last-child td:first-child { 96 | .border-radius(0 0 0 4px); 97 | } 98 | thead:last-child tr:last-child th:last-child, 99 | tbody:last-child tr:last-child td:last-child { 100 | .border-radius(0 0 4px 0); 101 | } 102 | } 103 | 104 | 105 | // ZEBRA-STRIPING 106 | // -------------- 107 | 108 | // Default zebra-stripe styles (alternating gray and transparent backgrounds) 109 | .table-striped { 110 | tbody { 111 | tr:nth-child(odd) td, 112 | tr:nth-child(odd) th { 113 | background-color: @tableBackgroundAccent; 114 | } 115 | } 116 | } 117 | 118 | 119 | // HOVER EFFECT 120 | // ------------ 121 | // Placed here since it has to come after the potential zebra striping 122 | .table { 123 | tbody tr:hover td, 124 | tbody tr:hover th { 125 | background-color: @tableBackgroundHover; 126 | } 127 | } 128 | 129 | 130 | // TABLE CELL SIZING 131 | // ----------------- 132 | 133 | // Change the columns 134 | table { 135 | .span1 { .tableColumns(1); } 136 | .span2 { .tableColumns(2); } 137 | .span3 { .tableColumns(3); } 138 | .span4 { .tableColumns(4); } 139 | .span5 { .tableColumns(5); } 140 | .span6 { .tableColumns(6); } 141 | .span7 { .tableColumns(7); } 142 | .span8 { .tableColumns(8); } 143 | .span9 { .tableColumns(9); } 144 | .span10 { .tableColumns(10); } 145 | .span11 { .tableColumns(11); } 146 | .span12 { .tableColumns(12); } 147 | .span13 { .tableColumns(13); } 148 | .span14 { .tableColumns(14); } 149 | .span15 { .tableColumns(15); } 150 | .span16 { .tableColumns(16); } 151 | .span17 { .tableColumns(17); } 152 | .span18 { .tableColumns(18); } 153 | .span19 { .tableColumns(19); } 154 | .span20 { .tableColumns(20); } 155 | .span21 { .tableColumns(21); } 156 | .span22 { .tableColumns(22); } 157 | .span23 { .tableColumns(23); } 158 | .span24 { .tableColumns(24); } 159 | } 160 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/thumbnails.less: -------------------------------------------------------------------------------- 1 | // THUMBNAILS 2 | // ---------- 3 | 4 | .thumbnails { 5 | margin-left: -@gridGutterWidth; 6 | list-style: none; 7 | .clearfix(); 8 | } 9 | .thumbnails > li { 10 | float: left; 11 | margin: 0 0 @baseLineHeight @gridGutterWidth; 12 | } 13 | .thumbnail { 14 | display: block; 15 | padding: 4px; 16 | line-height: 1; 17 | border: 1px solid #ddd; 18 | .border-radius(4px); 19 | .box-shadow(0 1px 1px rgba(0,0,0,.075)); 20 | } 21 | // Add a hover state for linked versions only 22 | a.thumbnail:hover { 23 | border-color: @linkColor; 24 | .box-shadow(0 1px 4px rgba(0,105,214,.25)); 25 | } 26 | // Images and captions 27 | .thumbnail > img { 28 | display: block; 29 | max-width: 100%; 30 | margin-left: auto; 31 | margin-right: auto; 32 | } 33 | .thumbnail .caption { 34 | padding: 9px; 35 | } 36 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/tooltip.less: -------------------------------------------------------------------------------- 1 | // TOOLTIP 2 | // ------= 3 | 4 | .tooltip { 5 | position: absolute; 6 | z-index: @zindexTooltip; 7 | display: block; 8 | visibility: visible; 9 | padding: 5px; 10 | font-size: 11px; 11 | .opacity(0); 12 | &.in { .opacity(80); } 13 | &.top { margin-top: -2px; } 14 | &.right { margin-left: 2px; } 15 | &.bottom { margin-top: 2px; } 16 | &.left { margin-left: -2px; } 17 | &.top .tooltip-arrow { #popoverArrow > .top(); } 18 | &.left .tooltip-arrow { #popoverArrow > .left(); } 19 | &.bottom .tooltip-arrow { #popoverArrow > .bottom(); } 20 | &.right .tooltip-arrow { #popoverArrow > .right(); } 21 | } 22 | .tooltip-inner { 23 | max-width: 200px; 24 | padding: 3px 8px; 25 | color: @white; 26 | text-align: center; 27 | text-decoration: none; 28 | background-color: @black; 29 | .border-radius(4px); 30 | } 31 | .tooltip-arrow { 32 | position: absolute; 33 | width: 0; 34 | height: 0; 35 | } 36 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/type.less: -------------------------------------------------------------------------------- 1 | // Typography.less 2 | // Headings, body text, lists, code, and more for a versatile and durable typography system 3 | // ---------------------------------------------------------------------------------------- 4 | 5 | 6 | // BODY TEXT 7 | // --------- 8 | 9 | p { 10 | margin: 0 0 @baseLineHeight / 2; 11 | font-family: @baseFontFamily; 12 | font-size: @baseFontSize; 13 | line-height: @baseLineHeight; 14 | small { 15 | font-size: @baseFontSize - 2; 16 | color: @grayLight; 17 | } 18 | } 19 | .lead { 20 | margin-bottom: @baseLineHeight; 21 | font-size: 20px; 22 | font-weight: 200; 23 | line-height: @baseLineHeight * 1.5; 24 | } 25 | 26 | // HEADINGS 27 | // -------- 28 | 29 | h1, h2, h3, h4, h5, h6 { 30 | margin: 0; 31 | font-family: @headingsFontFamily; 32 | font-weight: @headingsFontWeight; 33 | color: @headingsColor; 34 | text-rendering: optimizelegibility; // Fix the character spacing for headings 35 | small { 36 | font-weight: normal; 37 | color: @grayLight; 38 | } 39 | } 40 | h1 { 41 | font-size: 30px; 42 | line-height: @baseLineHeight * 2; 43 | small { 44 | font-size: 18px; 45 | } 46 | } 47 | h2 { 48 | font-size: 24px; 49 | line-height: @baseLineHeight * 2; 50 | small { 51 | font-size: 18px; 52 | } 53 | } 54 | h3 { 55 | line-height: @baseLineHeight * 1.5; 56 | font-size: 18px; 57 | small { 58 | font-size: 14px; 59 | } 60 | } 61 | h4, h5, h6 { 62 | line-height: @baseLineHeight; 63 | } 64 | h4 { 65 | font-size: 14px; 66 | small { 67 | font-size: 12px; 68 | } 69 | } 70 | h5 { 71 | font-size: 12px; 72 | } 73 | h6 { 74 | font-size: 11px; 75 | color: @grayLight; 76 | text-transform: uppercase; 77 | } 78 | 79 | // Page header 80 | .page-header { 81 | padding-bottom: @baseLineHeight - 1; 82 | margin: @baseLineHeight 0; 83 | border-bottom: 1px solid @grayLighter; 84 | } 85 | .page-header h1 { 86 | line-height: 1; 87 | } 88 | 89 | 90 | 91 | // LISTS 92 | // ----- 93 | 94 | // Unordered and Ordered lists 95 | ul, ol { 96 | padding: 0; 97 | margin: 0 0 @baseLineHeight / 2 25px; 98 | } 99 | ul ul, 100 | ul ol, 101 | ol ol, 102 | ol ul { 103 | margin-bottom: 0; 104 | } 105 | ul { 106 | list-style: disc; 107 | } 108 | ol { 109 | list-style: decimal; 110 | } 111 | li { 112 | line-height: @baseLineHeight; 113 | } 114 | ul.unstyled, 115 | ol.unstyled { 116 | margin-left: 0; 117 | list-style: none; 118 | } 119 | 120 | // Description Lists 121 | dl { 122 | margin-bottom: @baseLineHeight; 123 | } 124 | dt, 125 | dd { 126 | line-height: @baseLineHeight; 127 | } 128 | dt { 129 | font-weight: bold; 130 | line-height: @baseLineHeight - 1; // fix jank Helvetica Neue font bug 131 | } 132 | dd { 133 | margin-left: @baseLineHeight / 2; 134 | } 135 | // Horizontal layout (like forms) 136 | .dl-horizontal { 137 | dt { 138 | float: left; 139 | clear: left; 140 | width: 120px; 141 | text-align: right; 142 | } 143 | dd { 144 | margin-left: 130px; 145 | } 146 | } 147 | 148 | // MISC 149 | // ---- 150 | 151 | // Horizontal rules 152 | hr { 153 | margin: @baseLineHeight 0; 154 | border: 0; 155 | border-top: 1px solid @hrBorder; 156 | border-bottom: 1px solid @white; 157 | } 158 | 159 | // Emphasis 160 | strong { 161 | font-weight: bold; 162 | } 163 | em { 164 | font-style: italic; 165 | } 166 | .muted { 167 | color: @grayLight; 168 | } 169 | 170 | // Abbreviations and acronyms 171 | abbr[title] { 172 | border-bottom: 1px dotted #ddd; 173 | cursor: help; 174 | } 175 | abbr.initialism { 176 | font-size: 90%; 177 | text-transform: uppercase; 178 | } 179 | 180 | // Blockquotes 181 | blockquote { 182 | padding: 0 0 0 15px; 183 | margin: 0 0 @baseLineHeight; 184 | border-left: 5px solid @grayLighter; 185 | p { 186 | margin-bottom: 0; 187 | #font > .shorthand(16px,300,@baseLineHeight * 1.25); 188 | } 189 | small { 190 | display: block; 191 | line-height: @baseLineHeight; 192 | color: @grayLight; 193 | &:before { 194 | content: '\2014 \00A0'; 195 | } 196 | } 197 | 198 | // Float right with text-align: right 199 | &.pull-right { 200 | float: right; 201 | padding-left: 0; 202 | padding-right: 15px; 203 | border-left: 0; 204 | border-right: 5px solid @grayLighter; 205 | p, 206 | small { 207 | text-align: right; 208 | } 209 | } 210 | } 211 | 212 | // Quotes 213 | q:before, 214 | q:after, 215 | blockquote:before, 216 | blockquote:after { 217 | content: ""; 218 | } 219 | 220 | // Addresses 221 | address { 222 | display: block; 223 | margin-bottom: @baseLineHeight; 224 | line-height: @baseLineHeight; 225 | font-style: normal; 226 | } 227 | 228 | // Misc 229 | small { 230 | font-size: 100%; 231 | } 232 | cite { 233 | font-style: normal; 234 | } 235 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/utilities.less: -------------------------------------------------------------------------------- 1 | // UTILITY CLASSES 2 | // --------------- 3 | 4 | // Quick floats 5 | .pull-right { 6 | float: right; 7 | } 8 | .pull-left { 9 | float: left; 10 | } 11 | 12 | // Toggling content 13 | .hide { 14 | display: none; 15 | } 16 | .show { 17 | display: block; 18 | } 19 | 20 | // Visibility 21 | .invisible { 22 | visibility: hidden; 23 | } 24 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/variables.less: -------------------------------------------------------------------------------- 1 | // Variables.less 2 | // Variables to customize the look and feel of Bootstrap 3 | // ----------------------------------------------------- 4 | 5 | 6 | 7 | // GLOBAL VALUES 8 | // -------------------------------------------------- 9 | 10 | 11 | // Grays 12 | // ------------------------- 13 | @black: #000; 14 | @grayDarker: #222; 15 | @grayDark: #333; 16 | @gray: #555; 17 | @grayLight: #999; 18 | @grayLighter: #eee; 19 | @white: #fff; 20 | 21 | 22 | // Accent colors 23 | // ------------------------- 24 | @blue: #049cdb; 25 | @blueDark: #0064cd; 26 | @green: #46a546; 27 | @red: #9d261d; 28 | @yellow: #ffc40d; 29 | @orange: #f89406; 30 | @pink: #c3325f; 31 | @purple: #7a43b6; 32 | 33 | 34 | // Scaffolding 35 | // ------------------------- 36 | @bodyBackground: @white; 37 | @textColor: @grayDark; 38 | 39 | 40 | // Links 41 | // ------------------------- 42 | @linkColor: #08c; 43 | @linkColorHover: darken(@linkColor, 15%); 44 | 45 | 46 | // Typography 47 | // ------------------------- 48 | @baseFontSize: 13px; 49 | @baseFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif; 50 | @baseLineHeight: 18px; 51 | @altFontFamily: Georgia, "Times New Roman", Times, serif; 52 | 53 | @headingsFontFamily: inherit; // empty to use BS default, @baseFontFamily 54 | @headingsFontWeight: bold; // instead of browser default, bold 55 | @headingsColor: inherit; // empty to use BS default, @textColor 56 | 57 | 58 | // Tables 59 | // ------------------------- 60 | @tableBackground: transparent; // overall background-color 61 | @tableBackgroundAccent: #f9f9f9; // for striping 62 | @tableBackgroundHover: #f5f5f5; // for hover 63 | @tableBorder: #ddd; // table and cell border 64 | 65 | 66 | // Buttons 67 | // ------------------------- 68 | @btnBackground: @white; 69 | @btnBackgroundHighlight: darken(@white, 10%); 70 | @btnBorder: darken(@white, 20%); 71 | 72 | @btnPrimaryBackground: @linkColor; 73 | @btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 15%); 74 | 75 | @btnInfoBackground: #5bc0de; 76 | @btnInfoBackgroundHighlight: #2f96b4; 77 | 78 | @btnSuccessBackground: #62c462; 79 | @btnSuccessBackgroundHighlight: #51a351; 80 | 81 | @btnWarningBackground: lighten(@orange, 15%); 82 | @btnWarningBackgroundHighlight: @orange; 83 | 84 | @btnDangerBackground: #ee5f5b; 85 | @btnDangerBackgroundHighlight: #bd362f; 86 | 87 | @btnInverseBackground: @gray; 88 | @btnInverseBackgroundHighlight: @grayDarker; 89 | 90 | 91 | // Forms 92 | // ------------------------- 93 | @inputBackground: @white; 94 | @inputBorder: #ccc; 95 | @inputDisabledBackground: @grayLighter; 96 | 97 | 98 | // Dropdowns 99 | // ------------------------- 100 | @dropdownBackground: @white; 101 | @dropdownBorder: rgba(0,0,0,.2); 102 | @dropdownLinkColor: @grayDark; 103 | @dropdownLinkColorHover: @white; 104 | @dropdownLinkBackgroundHover: @linkColor; 105 | 106 | 107 | 108 | 109 | // COMPONENT VARIABLES 110 | // -------------------------------------------------- 111 | 112 | // Z-index master list 113 | // ------------------------- 114 | // Used for a bird's eye view of components dependent on the z-axis 115 | // Try to avoid customizing these :) 116 | @zindexDropdown: 1000; 117 | @zindexPopover: 1010; 118 | @zindexTooltip: 1020; 119 | @zindexFixedNavbar: 1030; 120 | @zindexModalBackdrop: 1040; 121 | @zindexModal: 1050; 122 | 123 | 124 | // Sprite icons path 125 | // ------------------------- 126 | @iconSpritePath: "../img/glyphicons-halflings.png"; 127 | @iconWhiteSpritePath: "../img/glyphicons-halflings-white.png"; 128 | 129 | 130 | // Input placeholder text color 131 | // ------------------------- 132 | @placeholderText: @grayLight; 133 | 134 | 135 | // Hr border color 136 | // ------------------------- 137 | @hrBorder: @grayLighter; 138 | 139 | 140 | // Navbar 141 | // ------------------------- 142 | @navbarHeight: 40px; 143 | @navbarBackground: @grayDarker; 144 | @navbarBackgroundHighlight: @grayDark; 145 | 146 | @navbarText: @grayLight; 147 | @navbarLinkColor: @grayLight; 148 | @navbarLinkColorHover: @white; 149 | @navbarLinkColorActive: @navbarLinkColorHover; 150 | @navbarLinkBackgroundHover: transparent; 151 | @navbarLinkBackgroundActive: @navbarBackground; 152 | 153 | @navbarSearchBackground: lighten(@navbarBackground, 25%); 154 | @navbarSearchBackgroundFocus: @white; 155 | @navbarSearchBorder: darken(@navbarSearchBackground, 30%); 156 | @navbarSearchPlaceholderColor: #ccc; 157 | 158 | 159 | // Hero unit 160 | // ------------------------- 161 | @heroUnitBackground: @grayLighter; 162 | @heroUnitHeadingColor: inherit; 163 | @heroUnitLeadColor: inherit; 164 | 165 | 166 | // Form states and alerts 167 | // ------------------------- 168 | @warningText: #c09853; 169 | @warningBackground: #fcf8e3; 170 | @warningBorder: darken(spin(@warningBackground, -10), 3%); 171 | 172 | @errorText: #b94a48; 173 | @errorBackground: #f2dede; 174 | @errorBorder: darken(spin(@errorBackground, -10), 3%); 175 | 176 | @successText: #468847; 177 | @successBackground: #dff0d8; 178 | @successBorder: darken(spin(@successBackground, -10), 5%); 179 | 180 | @infoText: #3a87ad; 181 | @infoBackground: #d9edf7; 182 | @infoBorder: darken(spin(@infoBackground, -10), 7%); 183 | 184 | 185 | 186 | 187 | // GRID 188 | // -------------------------------------------------- 189 | 190 | // Default 940px grid 191 | // ------------------------- 192 | @gridColumns: 12; 193 | @gridColumnWidth: 60px; 194 | @gridGutterWidth: 20px; 195 | @gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1)); 196 | 197 | 198 | // Fluid grid 199 | // ------------------------- 200 | @fluidGridColumnWidth: 6.382978723%; 201 | @fluidGridGutterWidth: 2.127659574%; 202 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/less/wells.less: -------------------------------------------------------------------------------- 1 | // WELLS 2 | // ----- 3 | 4 | .well { 5 | min-height: 20px; 6 | padding: 19px; 7 | margin-bottom: 20px; 8 | background-color: #f5f5f5; 9 | border: 1px solid #eee; 10 | border: 1px solid rgba(0,0,0,.05); 11 | .border-radius(4px); 12 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 13 | blockquote { 14 | border-color: #ddd; 15 | border-color: rgba(0,0,0,.15); 16 | } 17 | } 18 | 19 | // Sizes 20 | .well-large { 21 | padding: 24px; 22 | .border-radius(6px); 23 | } 24 | .well-small { 25 | padding: 9px; 26 | .border-radius(3px); 27 | } 28 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/main.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Here you write your customizations 3 | */ 4 | 5 | body, html { 6 | background-color:#659258; 7 | } 8 | 9 | h1,h2,h3,h4,h5,h6, a, a:hover, a:visited{ 10 | color:#294347; 11 | } 12 | 13 | .hero-unit{ 14 | background-color: transparent; 15 | } 16 | 17 | .hero-unit h1{ 18 | color:#df8800; 19 | } 20 | 21 | blockquote { 22 | border-color: #df8800; 23 | } 24 | 25 | .admonition.note .first.admonition-title { 26 | background-color:#294347; 27 | } 28 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/static/pygments.css: -------------------------------------------------------------------------------- 1 | .highlight .hll { background-color: #000000 } 2 | .highlight { background: #eeffcc; } 3 | .highlight .c { color: #408090; font-style: italic } /* Comment */ 4 | .highlight .err { border: 1px solid #FF0000 } /* Error */ 5 | .highlight .k { color: #007020; font-weight: bold } /* Keyword */ 6 | .highlight .o { color: #666666 } /* Operator */ 7 | .highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ 8 | .highlight .cp { color: #007020 } /* Comment.Preproc */ 9 | .highlight .c1 { color: #BBBBBB; font-style: italic } /* Comment.Single */ 10 | .highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ 11 | .highlight .gd { color: #A00000 } /* Generic.Deleted */ 12 | .highlight .ge { font-style: italic } /* Generic.Emph */ 13 | .highlight .gr { color: #FF0000 } /* Generic.Error */ 14 | .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ 15 | .highlight .gi { color: #00A000 } /* Generic.Inserted */ 16 | .highlight .go { color: #303030 } /* Generic.Output */ 17 | .highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ 18 | .highlight .gs { font-weight: bold } /* Generic.Strong */ 19 | .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ 20 | .highlight .gt { color: #0040D0 } /* Generic.Traceback */ 21 | .highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ 22 | .highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ 23 | .highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ 24 | .highlight .kp { color: #007020 } /* Keyword.Pseudo */ 25 | .highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ 26 | .highlight .kt { color: #902000 } /* Keyword.Type */ 27 | .highlight .m { color: #208050 } /* Literal.Number */ 28 | .highlight .s { color: #80A0D0 } /* Literal.String */ 29 | .highlight .na { color: #80A0D0 } /* Name.Attribute */ 30 | .highlight .nb { color: #007020 } /* Name.Builtin */ 31 | .highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ 32 | .highlight .no { color: #60add5 } /* Name.Constant */ 33 | .highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ 34 | .highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ 35 | .highlight .ne { color: #007020 } /* Name.Exception */ 36 | .highlight .nf { color: #06287e } /* Name.Function */ 37 | .highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ 38 | .highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ 39 | .highlight .nt { color: yellow; font-weight: bold } /* Name.Tag */ 40 | .highlight .nv { color: #bb60d5 } /* Name.Variable */ 41 | .highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ 42 | .highlight .w { color: #bbbbbb } /* Text.Whitespace */ 43 | .highlight .mf { color: #208050 } /* Literal.Number.Float */ 44 | .highlight .mh { color: #208050 } /* Literal.Number.Hex */ 45 | .highlight .mi { color: #208050 } /* Literal.Number.Integer */ 46 | .highlight .mo { color: #208050 } /* Literal.Number.Oct */ 47 | .highlight .sb { color: #80A0D0 } /* Literal.String.Backtick */ 48 | .highlight .sc { color: #80A0D0 } /* Literal.String.Char */ 49 | .highlight .sd { color: #BBBBBB; font-style: italic } /* Literal.String.Doc */ 50 | .highlight .s2 { color: #80A0D0 } /* Literal.String.Double */ 51 | .highlight .se { color: #80A0D0; font-weight: bold } /* Literal.String.Escape */ 52 | .highlight .sh { color: #80A0D0 } /* Literal.String.Heredoc */ 53 | .highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ 54 | .highlight .sx { color: #c65d09 } /* Literal.String.Other */ 55 | .highlight .sr { color: #235388 } /* Literal.String.Regex */ 56 | .highlight .s1 { color: #80A0D0 } /* Literal.String.Single */ 57 | .highlight .ss { color: #517918 } /* Literal.String.Symbol */ 58 | .highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ 59 | .highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ 60 | .highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ 61 | .highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ 62 | .highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ 63 | -------------------------------------------------------------------------------- /docs/source/_themes/Alchemy/theme.conf: -------------------------------------------------------------------------------- 1 | [theme] 2 | inherit = basic 3 | stylesheet = Alchemy.css 4 | pygments_style = sphinx 5 | 6 | [options] 7 | rightsidebar = false 8 | stickysidebar = false 9 | collapsiblesidebar = false 10 | externalrefs = false 11 | -------------------------------------------------------------------------------- /docs/source/conf.py: -------------------------------------------------------------------------------- 1 | import sys, os 2 | import os.path 3 | 4 | current_dir = os.path.dirname(os.path.abspath(__file__)) 5 | sys.path.append(current_dir) 6 | sys.path.append(current_dir + '/sphinxPHP') 7 | 8 | # If extensions (or modules to document with autodoc) are in another directory, 9 | # add these directories to sys.path here. If the directory is relative to the 10 | # documentation root, use os.path.abspath to make it absolute, like shown here. 11 | #sys.path.insert(0, os.path.abspath('.')) 12 | 13 | import sensio 14 | extensions = ['sensio.sphinx.refinclude', 'sensio.sphinx.configurationblock', 'sensio.sphinx.phpcode'] 15 | 16 | # -- General configuration ----------------------------------------------------- 17 | 18 | # If your documentation needs a minimal Sphinx version, state it here. 19 | #needs_sphinx = '1.0' 20 | 21 | # Add any Sphinx extension module names here, as strings. They can be extensions 22 | # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. 23 | extensions = [] 24 | 25 | # Add any paths that contain templates here, relative to this directory. 26 | templates_path = ['_templates'] 27 | 28 | # The suffix of source filenames. 29 | source_suffix = '.rst' 30 | 31 | # The encoding of source files. 32 | #source_encoding = 'utf-8-sig' 33 | 34 | # The master toctree document. 35 | master_doc = 'index' 36 | 37 | # General information about the project. 38 | project = u'Project' 39 | copyright = u'2012' 40 | 41 | # The version info for the project you're documenting, acts as replacement for 42 | # |version| and |release|, also used in various other places throughout the 43 | # built documents. 44 | # 45 | # The short X.Y version. 46 | version = '0.1' 47 | # The full version, including alpha/beta/rc tags. 48 | release = '0.1' 49 | 50 | # The language for content autogenerated by Sphinx. Refer to documentation 51 | # for a list of supported languages. 52 | #language = None 53 | 54 | # There are two options for replacing |today|: either, you set today to some 55 | # non-false value, then it is used: 56 | #today = '' 57 | # Else, today_fmt is used as the format for a strftime call. 58 | #today_fmt = '%B %d, %Y' 59 | 60 | # List of patterns, relative to source directory, that match files and 61 | # directories to ignore when looking for source files. 62 | exclude_patterns = [] 63 | 64 | # The reST default role (used for this markup: `text`) to use for all documents. 65 | #default_role = None 66 | 67 | # If true, '()' will be appended to :func: etc. cross-reference text. 68 | #add_function_parentheses = True 69 | 70 | # If true, the current module name will be prepended to all description 71 | # unit titles (such as .. function::). 72 | #add_module_names = True 73 | 74 | # If true, sectionauthor and moduleauthor directives will be shown in the 75 | # output. They are ignored by default. 76 | #show_authors = False 77 | 78 | # The name of the Pygments (syntax highlighting) style to use. 79 | pygments_style = 'sphinx' 80 | 81 | # A list of ignored prefixes for module index sorting. 82 | #modindex_common_prefix = [] 83 | 84 | 85 | # -- Options for HTML output --------------------------------------------------- 86 | 87 | # The theme to use for HTML and HTML Help pages. See the documentation for 88 | # a list of builtin themes. 89 | html_theme = 'Alchemy' 90 | 91 | # Theme options are theme-specific and customize the look and feel of a theme 92 | # further. For a list of options available for each theme, see the 93 | # documentation. 94 | #html_theme_options = {} 95 | 96 | # Add any paths that contain custom themes here, relative to this directory. 97 | html_theme_path = ['_themes'] 98 | 99 | # The name for this set of Sphinx documents. If None, it defaults to 100 | # " v documentation". 101 | #html_title = None 102 | 103 | # A shorter title for the navigation bar. Default is the same as html_title. 104 | #html_short_title = None 105 | 106 | # The name of an image file (relative to this directory) to place at the top 107 | # of the sidebar. 108 | #html_logo = None 109 | 110 | # The name of an image file (within the static path) to use as favicon of the 111 | # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 112 | # pixels large. 113 | #html_favicon = None 114 | 115 | # Add any paths that contain custom static files (such as style sheets) here, 116 | # relative to this directory. They are copied after the builtin static files, 117 | # so a file named "default.css" will overwrite the builtin "default.css". 118 | html_static_path = ['_static', 'API'] 119 | 120 | # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, 121 | # using the given strftime format. 122 | #html_last_updated_fmt = '%b %d, %Y' 123 | 124 | # If true, SmartyPants will be used to convert quotes and dashes to 125 | # typographically correct entities. 126 | #html_use_smartypants = True 127 | 128 | # Custom sidebar templates, maps document names to template names. 129 | #html_sidebars = {} 130 | 131 | # Additional templates that should be rendered to pages, maps page names to 132 | # template names. 133 | #html_additional_pages = {} 134 | 135 | # If false, no module index is generated. 136 | #html_domain_indices = True 137 | 138 | # If false, no index is generated. 139 | #html_use_index = True 140 | 141 | # If true, the index is split into individual pages for each letter. 142 | #html_split_index = False 143 | 144 | # If true, links to the reST sources are added to the pages. 145 | #html_show_sourcelink = True 146 | 147 | # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. 148 | #html_show_sphinx = True 149 | 150 | # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. 151 | #html_show_copyright = True 152 | 153 | # If true, an OpenSearch description file will be output, and all pages will 154 | # contain a tag referring to it. The value of this option must be the 155 | # base URL from which the finished HTML is served. 156 | #html_use_opensearch = '' 157 | 158 | # This is the file name suffix for HTML files (e.g. ".xhtml"). 159 | #html_file_suffix = None 160 | 161 | # Output file base name for HTML help builder. 162 | htmlhelp_basename = 'Project' 163 | 164 | 165 | # -- Options for LaTeX output -------------------------------------------------- 166 | 167 | latex_elements = { 168 | # The paper size ('letterpaper' or 'a4paper'). 169 | #'papersize': 'letterpaper', 170 | 171 | # The font size ('10pt', '11pt' or '12pt'). 172 | #'pointsize': '10pt', 173 | 174 | # Additional stuff for the LaTeX preamble. 175 | #'preamble': '', 176 | } 177 | 178 | # Grouping the document tree into LaTeX files. List of tuples 179 | # (source start file, target name, title, author, documentclass [howto/manual]). 180 | latex_documents = [ 181 | ('index', 'Project.tex', u'Project Documentation', 182 | u'Project', 'manual'), 183 | ] 184 | 185 | # The name of an image file (relative to this directory) to place at the top of 186 | # the title page. 187 | #latex_logo = None 188 | 189 | # For "manual" documents, if this is true, then toplevel headings are parts, 190 | # not chapters. 191 | #latex_use_parts = False 192 | 193 | # If true, show page references after internal links. 194 | #latex_show_pagerefs = False 195 | 196 | # If true, show URL addresses after external links. 197 | #latex_show_urls = False 198 | 199 | # Documents to append as an appendix to all manuals. 200 | #latex_appendices = [] 201 | 202 | # If false, no module index is generated. 203 | #latex_domain_indices = True 204 | 205 | 206 | # -- Options for manual page output -------------------------------------------- 207 | 208 | # One entry per manual page. List of tuples 209 | # (source start file, name, description, authors, manual section). 210 | man_pages = [ 211 | ('index', 'project', u'Project Documentation', 212 | [u'Copyright'], 1) 213 | ] 214 | 215 | # If true, show URL addresses after external links. 216 | #man_show_urls = False 217 | 218 | 219 | # -- Options for Texinfo output ------------------------------------------------ 220 | 221 | # Grouping the document tree into Texinfo files. List of tuples 222 | # (source start file, target name, title, author, 223 | # dir menu entry, description, category) 224 | texinfo_documents = [ 225 | ('index', 'Project', u'Project Documentation', 226 | u'Copyright', 'Project', 'One line description of project.', 227 | 'Miscellaneous'), 228 | ] 229 | 230 | # Documents to append as an appendix to all manuals. 231 | #texinfo_appendices = [] 232 | 233 | # If false, no module index is generated. 234 | #texinfo_domain_indices = True 235 | 236 | # How to display URL addresses: 'footnote', 'no', or 'inline'. 237 | #texinfo_show_urls = 'footnote' 238 | 239 | 240 | from local_conf import * -------------------------------------------------------------------------------- /docs/source/index.rst: -------------------------------------------------------------------------------- 1 | RabbitMQ Management API Client Documentation 2 | ============================================ 3 | 4 | Introduction 5 | ------------ 6 | 7 | RabbitMQ Managemenet API Client is an object oriented PHP client for the `RabbitMQ 8 | Management API `_ 9 | provided by the `RabbitMQ Management Plugin `_ 10 | 11 | This library depends on `Guzzle `_ 12 | and `Doctrine Common `_. 13 | 14 | Installation 15 | ------------ 16 | 17 | We rely on `composer `_ to use this library. If you do 18 | no still use composer for your project, you can start with this ``composer.json`` 19 | at the root of your project: 20 | 21 | .. code-block:: json 22 | 23 | { 24 | "require": { 25 | "alchemy/rabbitmq-management-client": "master" 26 | } 27 | } 28 | 29 | Install composer : 30 | 31 | .. code-block:: bash 32 | 33 | # Install composer 34 | curl -s http://getcomposer.org/installer | php 35 | # Upgrade your install 36 | php composer.phar install 37 | 38 | You now just have to autoload the library to use it : 39 | 40 | .. code-block:: php 41 | 42 | `_. 49 | 50 | Basic Usage 51 | ----------- 52 | 53 | Here is a simple way to instantiate the APIClient an retrieve a queue : 54 | 55 | .. code-block:: php 56 | 57 | 'localhost')); 61 | 62 | $queue = $client->getQueue('/', 'queue.leuleu'); 63 | 64 | The APIClient factory requires the url option to build. Other available options 65 | are : 66 | 67 | - scheme : The scheme to access the API endpoint (default to 'http') 68 | - port : The port number of the API endpoint (default to '55672') 69 | - username : The username to connect to the API endpoint (default to 'guest') 70 | - password : The password to connect to the API endpoint (default to 'guest') 71 | 72 | For all available methods, it is recommended to browse the API. 73 | 74 | Guarantees 75 | ---------- 76 | 77 | What you probably want to do with this library is to ensure the RabbitMQ 78 | queues, exchanges and bindings settings. This can be easily done with the 79 | ``Guarantee`` Component. 80 | 81 | ``Guarantee`` will look in the configuration to find if what you ask for is 82 | already correctly set up and eventually fix it if you ask for it. 83 | 84 | Probing a queue 85 | +++++++++++++++ 86 | 87 | Let's probe the status of a queue ; the probe will return one of the following 88 | constants : 89 | 90 | - ``RabbitMQ\Management\Guarantee::PROBE_RESULT_OK`` If the probed entity is set up with 91 | correct options 92 | - ``RabbitMQ\Management\Guarantee::PROBE_RESULT_MISCONFIGURED`` If the probed entity is 93 | set up with wrong options 94 | - ``RabbitMQ\Management\Guarantee::PROBE_RESULT__ABSENT`` if the probed entity is absent 95 | 96 | 97 | .. code-block:: php 98 | 99 | 'localhost')); 105 | $manager = new Guarantee($client); 106 | 107 | $queue = new Queue(); 108 | $queue->vhost = '/'; 109 | $queue->name = 'queue.leuleu'; 110 | $queue->durable = true; 111 | $queue->auto_delete = false; 112 | 113 | $status = $manager->probeQueue($queue); 114 | 115 | switch ($status) { 116 | case Guarantee::PROBE_ABSENT; 117 | echo "The queue does not exists"; 118 | break; 119 | case Guarantee::PROBE_MISCONFIGURED; 120 | echo "The queue exists but is not well configured"; 121 | break; 122 | case Guarantee::PROBE_OK; 123 | echo "The queue exists and is well configured"; 124 | break; 125 | } 126 | 127 | Probing an exchange 128 | +++++++++++++++++++ 129 | 130 | The same is available for exchanges : 131 | 132 | .. code-block:: php 133 | 134 | vhost = '/'; 139 | $exchange->name = 'exchange.dispatcher'; 140 | $exchange->type = 'fanout'; 141 | 142 | $status = $manager->probeExchange($exchange); 143 | 144 | Ensure queue configuration 145 | ++++++++++++++++++++++++++ 146 | 147 | Let's now ensure a queue is set up as required : 148 | 149 | .. code-block:: php 150 | 151 | 'localhost')); 157 | $manager = new Guarantee($client); 158 | 159 | $queue = new Queue(); 160 | $queue->vhost = '/'; 161 | $queue->name = 'queue.leuleu'; 162 | $queue->durable = true; 163 | $queue->auto_delete = false; 164 | 165 | // Will modify the queue if it is not configured yet 166 | $manager->ensureQueue($queue); 167 | 168 | Recipes 169 | ------- 170 | 171 | These recipes are samples of code you could re-use. Most of these are about 172 | guarantees that are also provided by the ``Guarantee`` component. 173 | 174 | Monitor a queue 175 | +++++++++++++++ 176 | 177 | .. code-block:: php 178 | 179 | getQueue('/', 'queue.leuleu'); 185 | 186 | sprintf("Queue contains %d messages", $queue->messages); 187 | sprintf("Queue is idle since %s", $queue->idle_since); 188 | 189 | } catch (EntityNotFoundException $e) { 190 | echo "The queue is not found"; 191 | } 192 | 193 | Handling Exceptions 194 | ------------------- 195 | 196 | RabbitMQ Management API Client throws 4 different types of exception : 197 | 198 | - ``RabbitMQ\Management\Exception\EntityNotFoundException`` is thrown when an entity is not 199 | found. 200 | - ``RabbitMQ\Management\Exception\InvalidArgumentException`` is thrown when an invalid 201 | argument (name, vhost, ...) is provided 202 | - ``RabbitMQ\Management\Exception\PreconditionFailedException`` is thrown when you try to 203 | add an existing queue/exchange with different parameters (similar to HTTP 406). 204 | - ``RabbitMQ\Management\Exception\RuntimeException`` which extends SPL RuntimeException 205 | 206 | All these Exception implements ``RabbitMQ\Management\Exception\ExceptionInterface`` so you can catch 207 | any of these exceptions by catching this exception interface. 208 | 209 | Report a bug 210 | ------------ 211 | 212 | If you experience an issue, please report it in our 213 | `issue tracker `_. Before 214 | reporting an issue, please be sure that it is not already reported by browsing 215 | open issues. 216 | 217 | Ask for a feature 218 | ----------------- 219 | 220 | We would be glad you ask for a feature ! Feel free to add a feature request in 221 | the `issues manager `_ on GitHub ! 222 | 223 | Contribute 224 | ---------- 225 | 226 | You find a bug and resolved it ? You added a feature and want to share ? You 227 | found a typo in this doc and fixed it ? Feel free to send a 228 | `Pull Request `_ on GitHub, we will 229 | be glad to merge your code. 230 | 231 | Run tests 232 | --------- 233 | 234 | RabbitMQ Management Client relies on 235 | `PHPUnit `_ for unit tests. 236 | To run tests on your system, ensure you have PHPUnit installed, and, at the 237 | root of the project, execute it : 238 | 239 | .. code-block:: bash 240 | 241 | phpunit 242 | 243 | About 244 | ----- 245 | 246 | RabbitMQ Management Client has been written by Romain Neutron @ `Alchemy `_ 247 | for `Gloubster `_. 248 | 249 | License 250 | ------- 251 | 252 | RabbitMQ Management API client is licensed under the 253 | `MIT License `_ 254 | -------------------------------------------------------------------------------- /docs/source/local_conf.py: -------------------------------------------------------------------------------- 1 | 2 | # project name 3 | project = u'RabbitMQ Management API Client' 4 | 5 | # Tex info conf 6 | texinfo_documents = [ 7 | ('index', 'RabbitMQ Management API Client', u'RabbitMQ Management API Client Documentation', 8 | u'Alchemy', 'RabbitMQ Management API Client', 'RabbitMQ Management Plugin PHP Client.', 9 | 'Miscellaneous'), 10 | ] 11 | 12 | # Man page conf 13 | man_pages = [ 14 | ('index', 'RabbitMQ Management API Client', u'RabbitMQ Management API Client Documentation', 15 | [u'Copyright holder'], 1) 16 | ] 17 | 18 | # Latex doc conf 19 | latex_documents = [ 20 | ('index', 'ProjectName.tex', u'RabbitMQ Management API Client Documentation', 21 | u'Alchemy', 'manual'), 22 | ] 23 | 24 | # html help basename 25 | htmlhelp_basename = 'PROJECTdoc' 26 | 27 | # version 28 | version = '0.1' 29 | 30 | # release 31 | release = '0.1' 32 | 33 | # Copyright Value ex : copyright = u'2012, Alchemy' 34 | copyright = u'2012, Alchemy' -------------------------------------------------------------------------------- /docs/source/local_conf.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alchemy-fr/RabbitMQ-Management-API-Client/d1fd8e70db0bfc03a410f211103e155bf7ef9d79/docs/source/local_conf.pyc -------------------------------------------------------------------------------- /docs/source/sphinxPHP/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010-2012 Fabien Potencier 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /docs/source/sphinxPHP/README.md: -------------------------------------------------------------------------------- 1 | Sphinx Extensions for PHP and Symfony 2 | ===================================== 3 | 4 | After adding `sensio` to your path (with something like `sys.path.insert(0, 5 | os.path.abspath('./path/to/sensio'))`), you can use the following extensions 6 | in your `conf.py` file: 7 | 8 | * `sensio.sphinx.refinclude` 9 | * `sensio.sphinx.configurationblock` 10 | * `sensio.sphinx.phpcode` 11 | 12 | To enable highlighting for PHP code not between `` by default: 13 | 14 | lexers['php'] = PhpLexer(startinline=True) 15 | lexers['php-annotations'] = PhpLexer(startinline=True) 16 | 17 | And here is how to use PHP as the primary domain: 18 | 19 | primary_domain = 'php' 20 | 21 | Configure the `api_url` for links to the API: 22 | 23 | api_url = 'http://api.symfony.com/master/%s' 24 | -------------------------------------------------------------------------------- /docs/source/sphinxPHP/sensio/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alchemy-fr/RabbitMQ-Management-API-Client/d1fd8e70db0bfc03a410f211103e155bf7ef9d79/docs/source/sphinxPHP/sensio/__init__.py -------------------------------------------------------------------------------- /docs/source/sphinxPHP/sensio/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alchemy-fr/RabbitMQ-Management-API-Client/d1fd8e70db0bfc03a410f211103e155bf7ef9d79/docs/source/sphinxPHP/sensio/__init__.pyc -------------------------------------------------------------------------------- /docs/source/sphinxPHP/sensio/sphinx/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alchemy-fr/RabbitMQ-Management-API-Client/d1fd8e70db0bfc03a410f211103e155bf7ef9d79/docs/source/sphinxPHP/sensio/sphinx/__init__.py -------------------------------------------------------------------------------- /docs/source/sphinxPHP/sensio/sphinx/configurationblock.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | :copyright: (c) 2010-2012 Fabien Potencier 4 | :license: MIT, see LICENSE for more details. 5 | """ 6 | 7 | from docutils.parsers.rst import Directive, directives 8 | from docutils import nodes 9 | from string import upper 10 | 11 | class configurationblock(nodes.General, nodes.Element): 12 | pass 13 | 14 | class ConfigurationBlock(Directive): 15 | has_content = True 16 | required_arguments = 0 17 | optional_arguments = 0 18 | final_argument_whitespace = True 19 | option_spec = {} 20 | formats = { 21 | 'html': 'HTML', 22 | 'xml': 'XML', 23 | 'php': 'PHP', 24 | 'yaml': 'YAML', 25 | 'jinja': 'Twig', 26 | 'html+jinja': 'Twig', 27 | 'jinja+html': 'Twig', 28 | 'php+html': 'PHP', 29 | 'html+php': 'PHP', 30 | 'ini': 'INI', 31 | 'php-annotations': 'Annotations', 32 | } 33 | 34 | def run(self): 35 | env = self.state.document.settings.env 36 | 37 | node = nodes.Element() 38 | node.document = self.state.document 39 | self.state.nested_parse(self.content, self.content_offset, node) 40 | 41 | entries = [] 42 | for i, child in enumerate(node): 43 | if isinstance(child, nodes.literal_block): 44 | # add a title (the language name) before each block 45 | #targetid = "configuration-block-%d" % env.new_serialno('configuration-block') 46 | #targetnode = nodes.target('', '', ids=[targetid]) 47 | #targetnode.append(child) 48 | 49 | innernode = nodes.emphasis(self.formats[child['language']], self.formats[child['language']]) 50 | 51 | para = nodes.paragraph() 52 | para += [innernode, child] 53 | 54 | entry = nodes.list_item('') 55 | entry.append(para) 56 | entries.append(entry) 57 | 58 | resultnode = configurationblock() 59 | resultnode.append(nodes.bullet_list('', *entries)) 60 | 61 | return [resultnode] 62 | 63 | def visit_configurationblock_html(self, node): 64 | self.body.append(self.starttag(node, 'div', CLASS='configuration-block')) 65 | 66 | def depart_configurationblock_html(self, node): 67 | self.body.append('\n') 68 | 69 | def visit_configurationblock_latex(self, node): 70 | pass 71 | 72 | def depart_configurationblock_latex(self, node): 73 | pass 74 | 75 | def setup(app): 76 | app.add_node(configurationblock, 77 | html=(visit_configurationblock_html, depart_configurationblock_html), 78 | latex=(visit_configurationblock_latex, depart_configurationblock_latex)) 79 | app.add_directive('configuration-block', ConfigurationBlock) 80 | -------------------------------------------------------------------------------- /docs/source/sphinxPHP/sensio/sphinx/php.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | :copyright: (c) 2010-2012 Fabien Potencier 4 | :license: MIT, see LICENSE for more details. 5 | """ 6 | 7 | from sphinx import addnodes 8 | from sphinx.domains import Domain, ObjType 9 | from sphinx.locale import l_, _ 10 | from sphinx.directives import ObjectDescription 11 | from sphinx.domains.python import py_paramlist_re as js_paramlist_re 12 | from sphinx.roles import XRefRole 13 | from sphinx.util.nodes import make_refnode 14 | from sphinx.util.docfields import Field, GroupedField, TypedField 15 | 16 | def setup(app): 17 | app.add_domain(PHPDomain) 18 | 19 | class PHPXRefRole(XRefRole): 20 | def process_link(self, env, refnode, has_explicit_title, title, target): 21 | # basically what sphinx.domains.python.PyXRefRole does 22 | refnode['php:object'] = env.temp_data.get('php:object') 23 | if not has_explicit_title: 24 | title = title.lstrip('\\') 25 | target = target.lstrip('~') 26 | if title[0:1] == '~': 27 | title = title[1:] 28 | ns = title.rfind('\\') 29 | if ns != -1: 30 | title = title[ns+1:] 31 | if target[0:1] == '\\': 32 | target = target[1:] 33 | refnode['refspecific'] = True 34 | return title, target 35 | 36 | class PHPDomain(Domain): 37 | """PHP language domain.""" 38 | name = 'php' 39 | label = 'PHP' 40 | # if you add a new object type make sure to edit JSObject.get_index_string 41 | object_types = { 42 | } 43 | directives = { 44 | } 45 | roles = { 46 | 'func': PHPXRefRole(fix_parens=True), 47 | 'class': PHPXRefRole(), 48 | 'data': PHPXRefRole(), 49 | 'attr': PHPXRefRole(), 50 | } 51 | initial_data = { 52 | 'objects': {}, # fullname -> docname, objtype 53 | } 54 | 55 | def clear_doc(self, docname): 56 | for fullname, (fn, _) in self.data['objects'].items(): 57 | if fn == docname: 58 | del self.data['objects'][fullname] 59 | 60 | def find_obj(self, env, obj, name, typ, searchorder=0): 61 | if name[-2:] == '()': 62 | name = name[:-2] 63 | objects = self.data['objects'] 64 | newname = None 65 | if searchorder == 1: 66 | if obj and obj + '\\' + name in objects: 67 | newname = obj + '\\' + name 68 | else: 69 | newname = name 70 | else: 71 | if name in objects: 72 | newname = name 73 | elif obj and obj + '\\' + name in objects: 74 | newname = obj + '\\' + name 75 | return newname, objects.get(newname) 76 | 77 | def resolve_xref(self, env, fromdocname, builder, typ, target, node, 78 | contnode): 79 | objectname = node.get('php:object') 80 | searchorder = node.hasattr('refspecific') and 1 or 0 81 | name, obj = self.find_obj(env, objectname, target, typ, searchorder) 82 | if not obj: 83 | return None 84 | return make_refnode(builder, fromdocname, obj[0], name, contnode, name) 85 | 86 | def get_objects(self): 87 | for refname, (docname, type) in self.data['objects'].iteritems(): 88 | yield refname, refname, type, docname, refname, 1 89 | -------------------------------------------------------------------------------- /docs/source/sphinxPHP/sensio/sphinx/phpcode.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | :copyright: (c) 2010-2012 Fabien Potencier 4 | :license: MIT, see LICENSE for more details. 5 | """ 6 | 7 | from docutils import nodes, utils 8 | 9 | from sphinx.util.nodes import split_explicit_title 10 | from string import lower 11 | 12 | def php_namespace_role(typ, rawtext, text, lineno, inliner, options={}, content=[]): 13 | text = utils.unescape(text) 14 | env = inliner.document.settings.env 15 | base_url = env.app.config.api_url 16 | has_explicit_title, title, namespace = split_explicit_title(text) 17 | 18 | try: 19 | full_url = base_url % namespace.replace('\\', '/') + '.html' 20 | except (TypeError, ValueError): 21 | env.warn(env.docname, 'unable to expand %s api_url with base ' 22 | 'URL %r, please make sure the base contains \'%%s\' ' 23 | 'exactly once' % (typ, base_url)) 24 | full_url = base_url + utils.escape(full_class) 25 | if not has_explicit_title: 26 | name = namespace.lstrip('\\') 27 | ns = name.rfind('\\') 28 | if ns != -1: 29 | name = name[ns+1:] 30 | title = name 31 | list = [nodes.reference(title, title, internal=False, refuri=full_url, reftitle=namespace)] 32 | pnode = nodes.literal('', '', *list) 33 | return [pnode], [] 34 | 35 | def php_class_role(typ, rawtext, text, lineno, inliner, options={}, content=[]): 36 | text = utils.unescape(text) 37 | env = inliner.document.settings.env 38 | base_url = env.app.config.api_url 39 | has_explicit_title, title, full_class = split_explicit_title(text) 40 | 41 | try: 42 | full_url = base_url % full_class.replace('\\', '/') + '.html' 43 | except (TypeError, ValueError): 44 | env.warn(env.docname, 'unable to expand %s api_url with base ' 45 | 'URL %r, please make sure the base contains \'%%s\' ' 46 | 'exactly once' % (typ, base_url)) 47 | full_url = base_url + utils.escape(full_class) 48 | if not has_explicit_title: 49 | class_name = full_class.lstrip('\\') 50 | ns = class_name.rfind('\\') 51 | if ns != -1: 52 | class_name = class_name[ns+1:] 53 | title = class_name 54 | list = [nodes.reference(title, title, internal=False, refuri=full_url, reftitle=full_class)] 55 | pnode = nodes.literal('', '', *list) 56 | return [pnode], [] 57 | 58 | def php_method_role(typ, rawtext, text, lineno, inliner, options={}, content=[]): 59 | text = utils.unescape(text) 60 | env = inliner.document.settings.env 61 | base_url = env.app.config.api_url 62 | has_explicit_title, title, class_and_method = split_explicit_title(text) 63 | 64 | ns = class_and_method.rfind('::') 65 | full_class = class_and_method[:ns] 66 | method = class_and_method[ns+2:] 67 | 68 | try: 69 | full_url = base_url % full_class.replace('\\', '/') + '.html' + '#method_' + method 70 | except (TypeError, ValueError): 71 | env.warn(env.docname, 'unable to expand %s api_url with base ' 72 | 'URL %r, please make sure the base contains \'%%s\' ' 73 | 'exactly once' % (typ, base_url)) 74 | full_url = base_url + utils.escape(full_class) 75 | if not has_explicit_title: 76 | title = method + '()' 77 | list = [nodes.reference(title, title, internal=False, refuri=full_url, reftitle=full_class + '::' + method + '()')] 78 | pnode = nodes.literal('', '', *list) 79 | return [pnode], [] 80 | 81 | def php_phpclass_role(typ, rawtext, text, lineno, inliner, options={}, content=[]): 82 | text = utils.unescape(text) 83 | has_explicit_title, title, full_class = split_explicit_title(text) 84 | 85 | full_url = 'http://php.net/manual/en/class.%s.php' % lower(full_class) 86 | 87 | if not has_explicit_title: 88 | title = full_class 89 | list = [nodes.reference(title, title, internal=False, refuri=full_url, reftitle=full_class)] 90 | pnode = nodes.literal('', '', *list) 91 | return [pnode], [] 92 | 93 | def php_phpfunction_role(typ, rawtext, text, lineno, inliner, options={}, content=[]): 94 | text = utils.unescape(text) 95 | has_explicit_title, title, full_function = split_explicit_title(text) 96 | 97 | full_url = 'http://php.net/manual/en/function.%s.php' % lower(full_function.replace('_', '-')) 98 | 99 | if not has_explicit_title: 100 | title = full_function 101 | list = [nodes.reference(title, title, internal=False, refuri=full_url, reftitle=full_function)] 102 | pnode = nodes.literal('', '', *list) 103 | return [pnode], [] 104 | 105 | def setup(app): 106 | app.add_config_value('api_url', {}, 'env') 107 | app.add_role('namespace', php_namespace_role) 108 | app.add_role('class', php_class_role) 109 | app.add_role('method', php_method_role) 110 | app.add_role('phpclass', php_phpclass_role) 111 | app.add_role('phpfunction', php_phpfunction_role) 112 | -------------------------------------------------------------------------------- /docs/source/sphinxPHP/sensio/sphinx/refinclude.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | :copyright: (c) 2010-2012 Fabien Potencier 4 | :license: MIT, see LICENSE for more details. 5 | """ 6 | 7 | from docutils.parsers.rst import Directive, directives 8 | from docutils import nodes 9 | 10 | class refinclude(nodes.General, nodes.Element): 11 | pass 12 | 13 | class RefInclude(Directive): 14 | has_content = False 15 | required_arguments = 1 16 | optional_arguments = 0 17 | final_argument_whitespace = False 18 | option_spec = {} 19 | 20 | def run(self): 21 | document = self.state.document 22 | 23 | if not document.settings.file_insertion_enabled: 24 | return [document.reporter.warning('File insertion disabled', 25 | line=self.lineno)] 26 | 27 | env = self.state.document.settings.env 28 | target = self.arguments[0] 29 | 30 | node = refinclude() 31 | node['target'] = target 32 | 33 | return [node] 34 | 35 | def process_refinclude_nodes(app, doctree, docname): 36 | env = app.env 37 | for node in doctree.traverse(refinclude): 38 | docname, labelid, sectname = env.domaindata['std']['labels'].get(node['target'], 39 | ('','','')) 40 | 41 | if not docname: 42 | return [document.reporter.error('Unknown target name: "%s"' % node['target'], 43 | line=self.lineno)] 44 | 45 | resultnode = None 46 | dt = env.get_doctree(docname) 47 | for n in dt.traverse(nodes.section): 48 | if labelid in n['ids']: 49 | node.replace_self([n]) 50 | break 51 | 52 | def setup(app): 53 | app.add_node(refinclude) 54 | app.add_directive('include-ref', RefInclude) 55 | app.connect('doctree-resolved', process_refinclude_nodes) 56 | -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | tests 26 | 27 | 28 | 29 | 30 | vendor 31 | tests 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /sami_configuration.php: -------------------------------------------------------------------------------- 1 | files() 10 | ->name('*.php') 11 | ->in($dir = 'src') 12 | ; 13 | 14 | return new Sami($iterator, array( 15 | 'title' => 'RabbitMQ Manager Client API', 16 | 'theme' => 'enhanced', 17 | 'build_dir' => __DIR__.'/docs/source/API/API', 18 | 'cache_dir' => __DIR__.'/docs/source/API/API/cache', 19 | 'default_opened_level' => 2, 20 | )); 21 | -------------------------------------------------------------------------------- /src/RabbitMQ/Management/Entity/AbstractEntity.php: -------------------------------------------------------------------------------- 1 | APIClient = $client; 17 | } 18 | 19 | public function toJson() 20 | { 21 | $data = array(); 22 | 23 | $parameters = $this->getJsonParameters(); 24 | 25 | foreach ($this as $key => $value) { 26 | if (!in_array($key, $parameters)) { 27 | continue; 28 | } 29 | if (null === $value) { 30 | continue; 31 | } 32 | 33 | $data[$key] = $value; 34 | } 35 | 36 | return json_encode((object) $data); 37 | } 38 | 39 | abstract protected function getJsonParameters(); 40 | } 41 | -------------------------------------------------------------------------------- /src/RabbitMQ/Management/Entity/Binding.php: -------------------------------------------------------------------------------- 1 | APIClient->listBindingsByQueue($this); 60 | } 61 | 62 | protected function getJsonParameters() 63 | { 64 | return array('auto_delete', 'durable', 'arguments', 'vhost', 'name'); 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /src/RabbitMQ/Management/Exception/EntityNotFoundException.php: -------------------------------------------------------------------------------- 1 | client = $client; 22 | } 23 | 24 | public function probeExchange(Exchange $exchange) 25 | { 26 | try { 27 | if ($exchange->toJson() !== $this->client->getExchange($exchange->vhost, $exchange->name)->toJson()) { 28 | return self::PROBE_MISCONFIGURED; 29 | } else { 30 | return self::PROBE_OK; 31 | } 32 | } catch (EntityNotFoundException $e) { 33 | return self::PROBE_ABSENT; 34 | } 35 | } 36 | 37 | public function ensureExchange(Exchange $exchange) 38 | { 39 | switch ($this->probeExchange($exchange)) { 40 | case self::PROBE_ABSENT; 41 | $this->client->addExchange($exchange); 42 | break; 43 | case self::PROBE_MISCONFIGURED; 44 | $this->client->deleteExchange($exchange->vhost, $exchange->name); 45 | $this->client->addExchange($exchange); 46 | break; 47 | case self::PROBE_OK; 48 | $this->client->refreshExchange($exchange); 49 | break; 50 | default: 51 | throw new RuntimeException('Unable to probe exchange'); 52 | break; 53 | } 54 | } 55 | 56 | public function probeQueue(Queue $queue) 57 | { 58 | try { 59 | if ($queue->toJson() !== $this->client->getQueue($queue->vhost, $queue->name)->toJson()) { 60 | return self::PROBE_MISCONFIGURED; 61 | } else { 62 | return self::PROBE_OK; 63 | } 64 | } catch (EntityNotFoundException $e) { 65 | return self::PROBE_ABSENT; 66 | } 67 | } 68 | 69 | public function ensureQueue(Queue $queue) 70 | { 71 | switch ($this->probeQueue($queue)) { 72 | case self::PROBE_ABSENT; 73 | $this->client->addQueue($queue); 74 | break; 75 | case self::PROBE_MISCONFIGURED; 76 | $this->client->deleteQueue($queue->vhost, $queue->name); 77 | $this->client->addQueue($queue); 78 | break; 79 | case self::PROBE_OK; 80 | $this->client->refreshQueue($queue); 81 | break; 82 | default: 83 | throw new RuntimeException('Unable to probe queue'); 84 | break; 85 | } 86 | } 87 | 88 | public function probeBinding(Binding $binding) 89 | { 90 | $bindings = $this->client->listBindingsByExchangeAndQueue($binding->vhost, $binding->source, $binding->destination); 91 | $retval = self::PROBE_ABSENT; 92 | 93 | foreach ($bindings as $foundBinding) { 94 | if ($binding->toJson() === $foundBinding->toJson()) { 95 | $retval = self::PROBE_OK; 96 | break; 97 | } 98 | } 99 | 100 | return $retval; 101 | } 102 | 103 | public function ensureBinding(Binding $binding) 104 | { 105 | if (self::PROBE_OK !== $this->probeBinding($binding)) { 106 | $this->client->addBinding($binding); 107 | } 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /src/RabbitMQ/Management/HttpClient.php: -------------------------------------------------------------------------------- 1 | hydrator) { 16 | $this->hydrator = new Hydrator(); 17 | } 18 | 19 | return $this->hydrator; 20 | } 21 | 22 | /** 23 | * Factory method to create the HttpClient 24 | * 25 | * The following array keys and values are available options: 26 | * - url : Base URL of web service 27 | * - port : Port of web service 28 | * - scheme : URI scheme: http or https 29 | * - username: API username 30 | * - password: API password 31 | * 32 | * @param array|Collection $options Configuration data 33 | * 34 | * @return self 35 | */ 36 | public static function factory($options = array()) 37 | { 38 | $default = array( 39 | 'base_url' => '{scheme}://{username}:{password}@{host}:{port}', 40 | 'scheme' => 'http', 41 | 'username' => 'guest', 42 | 'password' => 'guest', 43 | 'port' => '15672', 44 | ); 45 | 46 | $required = array('username', 'password', 'host', 'base_url'); 47 | $config = Collection::fromConfig($options, $default, $required); 48 | 49 | $client = new self($config->get('base_url'), $config); 50 | 51 | return $client; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/RabbitMQ/Management/Hydrator.php: -------------------------------------------------------------------------------- 1 | $value) { 23 | if (!property_exists($entity, $key)) { 24 | throw new \InvalidArgumentException(sprintf('Entity %s does not have property %s', get_class($entity), $key)); 25 | } 26 | $entity->{$key} = $value; 27 | } 28 | 29 | return $entity; 30 | } 31 | 32 | public static function camelize($attribute) 33 | { 34 | return implode('', array_map(function($part) { 35 | return ucfirst($part); 36 | }, explode('_', $attribute))); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /tests/bootstrap.php: -------------------------------------------------------------------------------- 1 | add('RabbitMQ\Tests', __DIR__ . '/src'); 5 | --------------------------------------------------------------------------------