app/views/opro/oauth/docs/markdown/curl.md.erb

Summary

Maintainability
Test Coverage
# Curl

[Curl](http://curl.haxx.se/) is a command line tool for transferring data with a url syntax. Most systems should have curl installed. Open up terminal on OS X or command prompt on Windows and type in `curl`. There are parts of the OAuth process that were not intended for direct human interaction, such as exchanging the code from the Provider for an access_token. Because of this, it can be easier to use `curl` to talk to a server directly instead of using a web browser.

## What is it good for?

With curl, we're able to arbitrarily add parameters to our requests and send using arbitrary HTTP verbs (GET/POST/DELETE) that are difficult to simulate in the browser. If you need to `POST` data to a url, doing so with curl is much easier than constructing a form for testing.


## How do I use it?

On the command line, you should be able to get get help by typing `man curl` if your system supports man pages. Below are some simple and common use cases.

### Get Webpage

You can get the entire contents of a web document by simply calling curl with that url:

    $ curl https://www.google.com

### Get Headers


You can ask for the headers of a request by adding the `-I` flag to a curl command:

    $ curl https://www.google.com -I

The response may look something like this:

    HTTP/1.1 200 OK
    Expires: -1
    Cache-Control: private, max-age=0
    Content-Type: text/html; charset=ISO-8859-1
    Server: gws
    X-XSS-Protection: 1; mode=block
    X-Frame-Options: SAMEORIGIN
    Transfer-Encoding: chunked

### Set Headers

You can set a request header by using `-H`. For example, if you wanted to send an access_token in a header, you could issue this request (assuming your access token is '9693accessTokena7ca570bbaf'):

    $ curl -H "Authorization: token 9693accessTokena7ca570bbaf" "<%= oauth_test_url(:show_me_the_money, :protocol => @protocol) %>"


### HTTP Verb

You can specify the type of request you make in curl (GET, POST, PUT, DELETE, etc.) by using `-X`. For example, if you wanted to POST to the /products path at <%= root_url %>, you could do so like this:

    $ curl -X POST <%= root_url %>products

# Hurl

[Hurl](http://hurl.it/) is an open source browser-based `curl` implementation. If you're going to do quite a few curl requests, using it can be easier than the command line.