Statistics
| Branch: | Tag: | Revision:

root / snf-pithos-app / pithos / api / urls.py @ 381a548c

History | View | Annotate | Download (4 kB)

1 2e662088 Antony Chazapis
# Copyright 2011-2012 GRNET S.A. All rights reserved.
2 2715ade4 Sofia Papagiannaki
#
3 5635f9ef Antony Chazapis
# Redistribution and use in source and binary forms, with or
4 5635f9ef Antony Chazapis
# without modification, are permitted provided that the following
5 5635f9ef Antony Chazapis
# conditions are met:
6 2715ade4 Sofia Papagiannaki
#
7 5635f9ef Antony Chazapis
#   1. Redistributions of source code must retain the above
8 5635f9ef Antony Chazapis
#      copyright notice, this list of conditions and the following
9 5635f9ef Antony Chazapis
#      disclaimer.
10 2715ade4 Sofia Papagiannaki
#
11 5635f9ef Antony Chazapis
#   2. Redistributions in binary form must reproduce the above
12 5635f9ef Antony Chazapis
#      copyright notice, this list of conditions and the following
13 5635f9ef Antony Chazapis
#      disclaimer in the documentation and/or other materials
14 5635f9ef Antony Chazapis
#      provided with the distribution.
15 2715ade4 Sofia Papagiannaki
#
16 5635f9ef Antony Chazapis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 5635f9ef Antony Chazapis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 5635f9ef Antony Chazapis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 5635f9ef Antony Chazapis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 5635f9ef Antony Chazapis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 5635f9ef Antony Chazapis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 5635f9ef Antony Chazapis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 5635f9ef Antony Chazapis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 5635f9ef Antony Chazapis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 5635f9ef Antony Chazapis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 5635f9ef Antony Chazapis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 5635f9ef Antony Chazapis
# POSSIBILITY OF SUCH DAMAGE.
28 2715ade4 Sofia Papagiannaki
#
29 5635f9ef Antony Chazapis
# The views and conclusions contained in the software and
30 5635f9ef Antony Chazapis
# documentation are those of the authors and should not be
31 5635f9ef Antony Chazapis
# interpreted as representing official policies, either expressed
32 5635f9ef Antony Chazapis
# or implied, of GRNET S.A.
33 5635f9ef Antony Chazapis
34 aa153e99 Sofia Papagiannaki
from functools import partial
35 6b256427 Christos Stavrakakis
from django.conf.urls import include, patterns
36 a6b17d33 Christos Stavrakakis
37 aa153e99 Sofia Papagiannaki
from snf_django.lib.api.proxy import proxy
38 e3ff6830 Georgios D. Tsoukalas
from snf_django.lib.api.utils import prefix_pattern
39 5f2072f4 Kostas Papadimitriou
from snf_django.lib.api.urls import api_patterns
40 269ac8de Christos Stavrakakis
from snf_django.lib.api import api_endpoint_not_found
41 347b2ba1 Giorgos Korfiatis
from snf_django.utils.urls import extend_endpoint_with_slash
42 e3ff6830 Georgios D. Tsoukalas
from pithos.api.settings import (
43 f759041f Ilias Tsitsimpis
    BASE_PATH, PITHOS_PREFIX, PUBLIC_PREFIX, UI_PREFIX,
44 f759041f Ilias Tsitsimpis
    ASTAKOS_AUTH_PROXY_PATH, ASTAKOS_AUTH_URL,
45 f759041f Ilias Tsitsimpis
    ASTAKOS_ACCOUNT_PROXY_PATH, ASTAKOS_ACCOUNT_URL,
46 f759041f Ilias Tsitsimpis
    ASTAKOS_UI_PROXY_PATH, ASTAKOS_UI_URL,
47 f759041f Ilias Tsitsimpis
    pithos_services)
48 b956618e Antony Chazapis
49 aa153e99 Sofia Papagiannaki
50 347b2ba1 Giorgos Korfiatis
urlpatterns = []
51 347b2ba1 Giorgos Korfiatis
52 347b2ba1 Giorgos Korfiatis
# Redirects should be first, otherwise they may get overridden by wildcards
53 347b2ba1 Giorgos Korfiatis
extend_endpoint_with_slash(urlpatterns, pithos_services, "pithos_ui")
54 347b2ba1 Giorgos Korfiatis
extend_endpoint_with_slash(urlpatterns, pithos_services, "pithos_public")
55 347b2ba1 Giorgos Korfiatis
56 b956618e Antony Chazapis
# TODO: This only works when in this order.
57 5f2072f4 Kostas Papadimitriou
pithos_api_patterns = api_patterns(
58 0308f3a7 Sofia Papagiannaki
    'pithos.api.functions',
59 0308f3a7 Sofia Papagiannaki
    (r'^$', 'top_demux'),
60 0308f3a7 Sofia Papagiannaki
    (r'^(?P<v_account>.+?)/(?P<v_container>.+?)/(?P<v_object>.+?)$',
61 4691814d Ilias Tsitsimpis
     'object_demux'),
62 0308f3a7 Sofia Papagiannaki
    (r'^(?P<v_account>.+?)/(?P<v_container>.+?)/?$',
63 4691814d Ilias Tsitsimpis
     'container_demux'),
64 0308f3a7 Sofia Papagiannaki
    (r'^(?P<v_account>.+?)/?$', 'account_demux'))
65 a2c97d4c Antony Chazapis
66 63de12cf Sofia Papagiannaki
pithos_view_patterns = patterns(
67 63de12cf Sofia Papagiannaki
    'pithos.api.views',
68 80a3c208 Kostas Papadimitriou
    (r'^view/(?P<v_account>.+?)/(?P<v_container>.+?)/(?P<v_object>.+?)$',
69 381a548c Sofia Papagiannaki
     'object_demux'))
70 63de12cf Sofia Papagiannaki
71 e3ff6830 Georgios D. Tsoukalas
pithos_patterns = patterns(
72 0308f3a7 Sofia Papagiannaki
    '',
73 2a54b2dd Georgios D. Tsoukalas
    (r'{0}v1/'.format(prefix_pattern(PITHOS_PREFIX)),
74 2a54b2dd Georgios D. Tsoukalas
        include(pithos_api_patterns)),
75 269ac8de Christos Stavrakakis
    (r'{0}.*'.format(prefix_pattern(PITHOS_PREFIX)),
76 269ac8de Christos Stavrakakis
        api_endpoint_not_found),
77 2a54b2dd Georgios D. Tsoukalas
    (r'{0}(?P<v_public>.+?)/?$'.format(prefix_pattern(PUBLIC_PREFIX)),
78 63de12cf Sofia Papagiannaki
        'pithos.api.public.public_demux'),
79 94844ae4 Kostas Papadimitriou
    (r'{0}'.format(prefix_pattern(UI_PREFIX)),
80 63de12cf Sofia Papagiannaki
        include(pithos_view_patterns)))
81 890c2065 Sofia Papagiannaki
82 347b2ba1 Giorgos Korfiatis
urlpatterns += patterns(
83 e3ff6830 Georgios D. Tsoukalas
    '',
84 e3ff6830 Georgios D. Tsoukalas
    (prefix_pattern(BASE_PATH), include(pithos_patterns)),
85 e3ff6830 Georgios D. Tsoukalas
)
86 e3ff6830 Georgios D. Tsoukalas
87 d5ea70e4 Kostas Papadimitriou
88 f759041f Ilias Tsitsimpis
# --------------------------------------
89 f759041f Ilias Tsitsimpis
# PROXY settings
90 f759041f Ilias Tsitsimpis
astakos_auth_proxy = \
91 f759041f Ilias Tsitsimpis
    partial(proxy, proxy_base=ASTAKOS_AUTH_PROXY_PATH,
92 f759041f Ilias Tsitsimpis
            target_base=ASTAKOS_AUTH_URL)
93 f759041f Ilias Tsitsimpis
astakos_account_proxy = \
94 f759041f Ilias Tsitsimpis
    partial(proxy, proxy_base=ASTAKOS_ACCOUNT_PROXY_PATH,
95 f759041f Ilias Tsitsimpis
            target_base=ASTAKOS_ACCOUNT_URL)
96 f759041f Ilias Tsitsimpis
astakos_ui_proxy = \
97 f759041f Ilias Tsitsimpis
    partial(proxy, proxy_base=ASTAKOS_UI_PROXY_PATH,
98 f759041f Ilias Tsitsimpis
            target_base=ASTAKOS_UI_URL)
99 e3ff6830 Georgios D. Tsoukalas
100 f759041f Ilias Tsitsimpis
urlpatterns += api_patterns(
101 f759041f Ilias Tsitsimpis
    '',
102 f759041f Ilias Tsitsimpis
    (prefix_pattern(ASTAKOS_AUTH_PROXY_PATH), astakos_auth_proxy),
103 f759041f Ilias Tsitsimpis
    (prefix_pattern(ASTAKOS_ACCOUNT_PROXY_PATH), astakos_account_proxy),
104 f759041f Ilias Tsitsimpis
)
105 f759041f Ilias Tsitsimpis
urlpatterns += patterns(
106 f759041f Ilias Tsitsimpis
    '',
107 f759041f Ilias Tsitsimpis
    (prefix_pattern(ASTAKOS_UI_PROXY_PATH), astakos_ui_proxy),
108 f759041f Ilias Tsitsimpis
)