Skip to content

Commit

Permalink
Merge pull request #62 from php-http/sphinx-rest
Browse files Browse the repository at this point in the history
Convert docs to reST
  • Loading branch information
ddeboer committed Jan 3, 2016
2 parents 2a38056 + 6072e01 commit d072b0a
Show file tree
Hide file tree
Showing 72 changed files with 1,860 additions and 1,233 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
_build
12 changes: 12 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
sudo: false

addons:
apt_packages:
- enchant

install:
- pip install --user -r requirements.txt

script:
- make SPHINXOPTS='-nW' html
- make spelling
197 changes: 197 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
# Makefile for Sphinx documentation
#

# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = _build

# User-friendly check for sphinx-build
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
endif

# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .

.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext

help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " applehelp to make an Apple Help Book"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " xml to make Docutils-native XML files"
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
@echo " coverage to run coverage check of the documentation (if enabled)"
@echo " spelling generate a spelling report"

clean:
rm -rf $(BUILDDIR)/*

html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."

dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."

singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."

pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."

json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."

htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."

qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/PHP-HTTP.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/PHP-HTTP.qhc"

applehelp:
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
@echo
@echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
@echo "N.B. You won't be able to view it unless you put it in" \
"~/Library/Documentation/Help or install it in your application" \
"bundle."

devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/PHP-HTTP"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/PHP-HTTP"
@echo "# devhelp"

epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."

latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."

latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."

latexpdfja:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through platex and dvipdfmx..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."

text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."

man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."

texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."

info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."

gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."

changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."

linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."

doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."

coverage:
$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
@echo "Testing of coverage in the sources finished, look at the " \
"results in $(BUILDDIR)/coverage/python.txt."

xml:
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
@echo
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."

pseudoxml:
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
@echo
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."

spelling:
$(SPHINXBUILD) -b spelling $(ALLSPHINXOPTS) $(BUILDDIR)/spelling
@echo "Spelling report generated in $(BUILDDIR)/spelling/output.txt"
Binary file added assets/img/plugefant.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 23 additions & 0 deletions clients.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
Clients & Adapters
==================

There are clients implementing one of the HTTPlug interfaces directly,
and adapter packages that implement the interface and forward the calls to HTTP clients not implementing the interface.

TODO

Clients:

.. toctree::

clients/curl-client
clients/socket-client
clients/mock-client

Client adapters:

.. toctree::

clients/guzzle5-adapter
clients/guzzle6-adapter
clients/react-adapter
2 changes: 2 additions & 0 deletions clients/curl-client.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
cURL Client
===========
2 changes: 2 additions & 0 deletions clients/guzzle5-adapter.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Guzzle5 Adapter
===============
2 changes: 2 additions & 0 deletions clients/guzzle6-adapter.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Guzzle6 Adapter
===============
2 changes: 2 additions & 0 deletions clients/mock-client.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Mock Client
===========
2 changes: 2 additions & 0 deletions clients/react-adapter.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
React Adapter
=============
2 changes: 2 additions & 0 deletions clients/socket-client.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Socket Client
=============
4 changes: 4 additions & 0 deletions components/adapter-integration-tests.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Adapter Integration Tests
=========================

TODO
80 changes: 80 additions & 0 deletions components/client-common.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
.. _client-common:

Client Common
=============

The client-common package provides some useful tools for working with HTTPlug.
Include them in your project with composer:

.. code-block:: bash
composer require php-http/client-common "^1.0"
HttpMethodsClient
-----------------

This client wraps the HttpClient and provides convenience methods for common HTTP requests like ``GET`` and ``POST``.
To be able to do that, it also wraps a message factory::

use Http\Discovery\HttpClientDiscovery;
use Http\Discovery\MessageFactoryDiscovery

$client = new HttpMethodsClient(
HttpClientDiscovery::find(),
MessageFactoryDiscovery::find()
);

$foo = $client->get('http://example.com/foo');
$bar = $client->get('http://example.com/bar', ['accept-encoding' => 'application/json']);
$post = $client->post('http://example.com/update', [], 'My post body');

BatchClient
-----------

This client wraps a HttpClient and extends it with the possibility to send an array of requests and to retrieve
their responses as a ``BatchResult``::

use Http\Discovery\HttpClientDiscovery;
use Http\Discovery\MessageFactoryDiscovery;

$messageFactory = MessageFactoryDiscovery::find();

$requests = [
$messageFactory->createRequest('GET', 'http://example.com/foo'),
$messageFactory->createRequest('POST', 'http://example.com/update', [], 'My post body'),
];

$client = new BatchClient(
HttpClientDiscovery::find()
);

$batchResult = $client->sendRequests($requests);

The ``BatchResult`` itself is an object that contains responses for all requests sent.
It provides methods that give appropriate information based on a given request::

$requests = [
$messageFactory->createRequest('GET', 'http://example.com/foo'),
$messageFactory->createRequest('POST', 'http://example.com/update', [], 'My post body'),
];

$batchResult = $client->sendRequests($requests);

if ($batchResult->hasResponses()) {
$fooSuccessful = $batchResult->isSuccesful($requests[0]);
$updateResponse = $batchResult->getResponseFor($request[1]);
}

If one or more of the requests throw exceptions, they are added to the
``BatchResult`` and the ``BatchClient`` will ultimately throw a
``BatchException`` containing the ``BatchResult`` and therefore its exceptions::

$requests = [
$messageFactory->createRequest('GET', 'http://example.com/update'),
];

try {
$batchResult = $client->sendRequests($requests);
} catch (BatchException $e) {
var_dump($e->getResult()->getExceptions());
}
3 changes: 2 additions & 1 deletion docs/components/promise.md → components/promise.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Promise
Promise
=======

Promise used for asynchronous HTTP requests.

Expand Down

0 comments on commit d072b0a

Please sign in to comment.