~jderose/ubuntu/utopic/couchdb/1.6.0

« back to all changes in this revision

Viewing changes to src/etap/etap_web.erl

  • Committer: Package Import Robot
  • Author(s): Jason Gerard DeRose
  • Date: 2013-08-28 16:28:32 UTC
  • mfrom: (1.3.4)
  • Revision ID: package-import@ubuntu.com-20130828162832-gp22vmgpfzhk2zyu
Tags: 1.4.0-0ubuntu1
* New upstream release (LP: #1212481)
* Switch from CDBS to pure debhelper (compat 9)
* Bump Standards-Version to 3.9.4
* Use an Upstart job instead of the upstream SysV init.d script
* Remove Build-Depends: cdbs, libreadline-dev
* Add Build-Depends: erlang-os-mon, erlang-syntax-tools, python-sphinx,
  texlive-latex-base, texlive-latex-recommended, texlive-latex-extra,
  texlive-fonts-recommended, texinfo
* Remove couchdb-bin Depends: procps, lsb-base (needed for SysV init.d script)
* Remove couchdb-bin Depends: libjs-jquery (1.7.2 is in Saucy, but the
  internal CouchDB jquery is now at version 1.8.3)
* Simplify Erlang couchdb-bin Depends to just:
  ${erlang-abi:Depends}, ${erlang:Depends}
* Add couchdb Depends: upstart
* Remove deprecated couchdb-bin.postrm
* Thanks to the Upstart job, couchdb.postrm no longer needs `sleep 3` hack,
  nor needs to `rm -r -f "/var/run/couchdb"`
* Stop using versioned database_dir /var/lib/couchdb/VERSION as this isn't
  done upstream and CouchDB is no longer considered alpha software
* Remove README.Debian, README.source as they're no longer applicable
* Drop patches superseded upstream for CVE-2012-5649, CVE-2012-5650:
  - improve_parsing_of_mochiweb_relative_paths.patch
  - improve_script_url_validation.patch
  - include_a_comment_before_jsonp_output.patch
* Because of the switch to Upstart, drop unneeded SysV init.d script patches:
  - force-reload.patch
  - couchdb_own_rundir.patch
  - wait_for_couchdb_stop.patch
* Drop couchdb_sighup.patch, superseded upstream
* Drop logrotate_as_couchdb.patch as it doesn't make sense for the CouchDB
  daemon to be able to modify its own archived log files
* Move static data and docs in "/usr/share/couchdb" from `couchdb-bin` into
  new `couchdb-common` Architecture:all package
* Add couchdb-bin Depends: couchdb-common (= ${source:Version})
* debian/watch: point to current download location
* debian/rules: replace `get-orig-source` with `get-packaged-orig-source`

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
%% Copyright (c) 2008-2009 Nick Gerakines <nick@gerakines.net>
2
 
%% 
3
 
%% Permission is hereby granted, free of charge, to any person
4
 
%% obtaining a copy of this software and associated documentation
5
 
%% files (the "Software"), to deal in the Software without
6
 
%% restriction, including without limitation the rights to use,
7
 
%% copy, modify, merge, publish, distribute, sublicense, and/or sell
8
 
%% copies of the Software, and to permit persons to whom the
9
 
%% Software is furnished to do so, subject to the following
10
 
%% 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
17
 
%% OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
 
%% NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
 
%% HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
 
%% WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
 
%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
 
%% OTHER DEALINGS IN THE SOFTWARE.
23
 
%%
24
 
%% @author Nick Gerakines <nick@gerakines.net> [http://socklabs.com/]
25
 
%% @copyright 2008 Nick Gerakines
26
 
%% @todo Support cookies.
27
 
%% @doc Provide testing functionality for web requests.
28
 
-module(etap_web).
29
 
 
30
 
-export([simple_200/2, simple_404/2, build_request/4]).
31
 
 
32
 
%% @doc Fetch a url and verify that it returned a 200 status.
33
 
simple_200(Url, Desc) ->
34
 
    Request = build_request(get, Url, [], []),
35
 
    Request:status_is(200, Desc).
36
 
 
37
 
%% @doc Fetch a url and verify that it returned a 404 status.
38
 
simple_404(Url, Desc) ->
39
 
    Request = build_request(get, Url, [], []),
40
 
    Request:status_is(404, Desc).
41
 
 
42
 
%% @doc Create and return a request structure.
43
 
build_request(Method, Url, Headers, Body) 
44
 
 when Method==options;Method==get;Method==head;Method==delete;Method==trace ->
45
 
     try http:request(Method, {Url, Headers}, [{autoredirect, false}], []) of
46
 
        {ok, {OutStatus, OutHeaders, OutBody}} ->
47
 
            etap_request:new(Method, Url, Headers, Body, OutStatus, OutHeaders, OutBody);
48
 
        _ -> error
49
 
    catch
50
 
        _:_ -> error
51
 
    end;
52
 
 
53
 
%% @doc Create and return a request structure.
54
 
build_request(Method, Url, Headers, Body) when Method == post; Method == put ->
55
 
    ContentType = case lists:keysearch("Content-Type", 1, Headers) of
56
 
        {value, {"Content-Type", X}} -> X;
57
 
        _ -> []
58
 
    end,
59
 
    try http:request(Method, {Url, Headers, ContentType, Body}, [{autoredirect, false}], []) of
60
 
        {ok, {OutStatus, OutHeaders, OutBody}} ->
61
 
            etap_request:new(Method, Url, Headers, Body, OutStatus, OutHeaders, OutBody);
62
 
        _ -> error
63
 
    catch
64
 
        _:_ -> error
65
 
    end.