Statistics
| Branch: | Tag: | Revision:

root / snf-pithos-app / pithos / api / urls.py @ 8c7e1398

History | View | Annotate | Download (4.1 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 8f2eb016 Sofia Papagiannaki
    BASE_PATH, PITHOS_PREFIX, PUBLIC_PREFIX, VIEW_PREFIX,
44 f759041f Ilias Tsitsimpis
    ASTAKOS_AUTH_PROXY_PATH, ASTAKOS_AUTH_URL,
45 f759041f Ilias Tsitsimpis
    ASTAKOS_ACCOUNT_PROXY_PATH, ASTAKOS_ACCOUNT_URL,
46 9b953ed4 Sofia Papagiannaki
    ASTAKOS_UI_PROXY_PATH, ASTAKOS_UI_URL, pithos_services)
47 b956618e Antony Chazapis
48 aa153e99 Sofia Papagiannaki
49 347b2ba1 Giorgos Korfiatis
urlpatterns = []
50 347b2ba1 Giorgos Korfiatis
51 347b2ba1 Giorgos Korfiatis
# Redirects should be first, otherwise they may get overridden by wildcards
52 347b2ba1 Giorgos Korfiatis
extend_endpoint_with_slash(urlpatterns, pithos_services, "pithos_ui")
53 347b2ba1 Giorgos Korfiatis
extend_endpoint_with_slash(urlpatterns, pithos_services, "pithos_public")
54 347b2ba1 Giorgos Korfiatis
55 b956618e Antony Chazapis
# TODO: This only works when in this order.
56 5f2072f4 Kostas Papadimitriou
pithos_api_patterns = api_patterns(
57 0308f3a7 Sofia Papagiannaki
    'pithos.api.functions',
58 0308f3a7 Sofia Papagiannaki
    (r'^$', 'top_demux'),
59 0308f3a7 Sofia Papagiannaki
    (r'^(?P<v_account>.+?)/(?P<v_container>.+?)/(?P<v_object>.+?)$',
60 4691814d Ilias Tsitsimpis
     'object_demux'),
61 0308f3a7 Sofia Papagiannaki
    (r'^(?P<v_account>.+?)/(?P<v_container>.+?)/?$',
62 4691814d Ilias Tsitsimpis
     'container_demux'),
63 0308f3a7 Sofia Papagiannaki
    (r'^(?P<v_account>.+?)/?$', 'account_demux'))
64 a2c97d4c Antony Chazapis
65 63de12cf Sofia Papagiannaki
pithos_view_patterns = patterns(
66 63de12cf Sofia Papagiannaki
    'pithos.api.views',
67 8f2eb016 Sofia Papagiannaki
    (r'^(?P<v_account>.+?)/(?P<v_container>.+?)/(?P<v_object>.+?)$',
68 8f2eb016 Sofia Papagiannaki
     'object_read'))
69 63de12cf Sofia Papagiannaki
70 8a1ae1a7 Sofia Papagiannaki
pithos_patterns = []
71 9b953ed4 Sofia Papagiannaki
pithos_patterns += patterns(
72 9b953ed4 Sofia Papagiannaki
    '',
73 9b953ed4 Sofia Papagiannaki
    (r'{0}v1/'.format(prefix_pattern(PITHOS_PREFIX)),
74 9b953ed4 Sofia Papagiannaki
        include(pithos_api_patterns)),
75 9b953ed4 Sofia Papagiannaki
    (r'{0}.*'.format(prefix_pattern(PITHOS_PREFIX)),
76 9b953ed4 Sofia Papagiannaki
        api_endpoint_not_found),
77 9b953ed4 Sofia Papagiannaki
    (r'{0}(?P<v_public>.+?)/?$'.format(prefix_pattern(PUBLIC_PREFIX)),
78 9b953ed4 Sofia Papagiannaki
        'pithos.api.public.public_demux'),
79 9b953ed4 Sofia Papagiannaki
)
80 14569c60 Sofia Papagiannaki
81 8a1ae1a7 Sofia Papagiannaki
pithos_patterns += patterns(
82 0308f3a7 Sofia Papagiannaki
    '',
83 8f2eb016 Sofia Papagiannaki
    (r'{0}'.format(prefix_pattern(VIEW_PREFIX)),
84 63de12cf Sofia Papagiannaki
        include(pithos_view_patterns)))
85 890c2065 Sofia Papagiannaki
86 347b2ba1 Giorgos Korfiatis
urlpatterns += patterns(
87 e3ff6830 Georgios D. Tsoukalas
    '',
88 e3ff6830 Georgios D. Tsoukalas
    (prefix_pattern(BASE_PATH), include(pithos_patterns)),
89 e3ff6830 Georgios D. Tsoukalas
)
90 e3ff6830 Georgios D. Tsoukalas
91 d5ea70e4 Kostas Papadimitriou
92 f759041f Ilias Tsitsimpis
# --------------------------------------
93 f759041f Ilias Tsitsimpis
# PROXY settings
94 f759041f Ilias Tsitsimpis
astakos_auth_proxy = \
95 f759041f Ilias Tsitsimpis
    partial(proxy, proxy_base=ASTAKOS_AUTH_PROXY_PATH,
96 f759041f Ilias Tsitsimpis
            target_base=ASTAKOS_AUTH_URL)
97 f759041f Ilias Tsitsimpis
astakos_account_proxy = \
98 f759041f Ilias Tsitsimpis
    partial(proxy, proxy_base=ASTAKOS_ACCOUNT_PROXY_PATH,
99 f759041f Ilias Tsitsimpis
            target_base=ASTAKOS_ACCOUNT_URL)
100 56bc5d49 Kostas Papadimitriou
101 56bc5d49 Kostas Papadimitriou
# ui views serve html content, redirect instead of proxing
102 f759041f Ilias Tsitsimpis
astakos_ui_proxy = \
103 f759041f Ilias Tsitsimpis
    partial(proxy, proxy_base=ASTAKOS_UI_PROXY_PATH,
104 56bc5d49 Kostas Papadimitriou
            target_base=ASTAKOS_UI_URL, redirect=True)
105 e3ff6830 Georgios D. Tsoukalas
106 f759041f Ilias Tsitsimpis
urlpatterns += api_patterns(
107 f759041f Ilias Tsitsimpis
    '',
108 f759041f Ilias Tsitsimpis
    (prefix_pattern(ASTAKOS_AUTH_PROXY_PATH), astakos_auth_proxy),
109 f759041f Ilias Tsitsimpis
    (prefix_pattern(ASTAKOS_ACCOUNT_PROXY_PATH), astakos_account_proxy),
110 f759041f Ilias Tsitsimpis
)
111 f759041f Ilias Tsitsimpis
urlpatterns += patterns(
112 f759041f Ilias Tsitsimpis
    '',
113 f759041f Ilias Tsitsimpis
    (prefix_pattern(ASTAKOS_UI_PROXY_PATH), astakos_ui_proxy),
114 f759041f Ilias Tsitsimpis
)