maarch: sign wcs calls for formdata schema (#68912)

This commit is contained in:
Thomas NOËL 2022-09-13 11:34:17 +02:00
parent eb0baa5b59
commit a97ed47181
1 changed files with 19 additions and 21 deletions

View File

@ -23,10 +23,12 @@ from datetime import datetime
import passerelle.utils as utils
import requests
from django.conf import settings
from django.utils.decorators import method_decorator
from django.utils.encoding import force_text
from django.views.decorators.csrf import csrf_exempt
from django.views.generic import DetailView as GenericDetailView
from passerelle.base.signature import sign_url
from passerelle.soap import client_to_jsondict, sudsobject_to_dict
from suds import TypeNotFound
@ -36,6 +38,20 @@ from .soap import get_client
logger = logging.getLogger('minint_maarch')
def get_schema(formdata):
# get formdef schema from wcs API
url = formdata['url']
p = urllib.parse.urlsplit(url)
scheme, netloc, path, query, fragment = p.scheme, p.netloc, p.path, p.query, p.fragment
schema_path = path.rsplit('/', 2)[0] + '/schema'
schema_url = urllib.parse.urlunsplit((scheme, netloc, schema_path, query, fragment))
if getattr(settings, 'KNOWN_SERVICES', {}).get('wcs'):
wcs_service = list(settings.KNOWN_SERVICES['wcs'].values())[0]
schema_url += '?orig=%s' % wcs_service.get('orig')
schema_url = sign_url(schema_url, key=wcs_service.get('secret'))
return requests.get(schema_url).json()
class MaarchException(Exception):
pass
@ -95,13 +111,7 @@ class ResourceView(DetailView):
if debug:
debug_output = {}
# get formdef schema from wcs API
url = formdata['url']
p = urllib.parse.urlsplit(url)
scheme, netloc, path, query, fragment = p.scheme, p.netloc, p.path, p.query, p.fragment
schema_path = path.rsplit('/', 2)[0] + '/schema'
schema_url = urllib.parse.urlunsplit((scheme, netloc, schema_path, query, fragment))
schema = requests.get(schema_url).json()
schema = get_schema(formdata)
# storeAttachmentResource attachments: list, build from formdata file fields
attachments = []
@ -400,13 +410,7 @@ class AttachmentView(DetailView):
if debug:
debug_output = {}
# get formdef schema from wcs API
url = formdata['url']
p = urllib.parse.urlsplit(url)
scheme, netloc, path, query, fragment = p.scheme, p.netloc, p.path, p.query, p.fragment
schema_path = path.rsplit('/', 2)[0] + '/schema'
schema_url = urllib.parse.urlunsplit((scheme, netloc, schema_path, query, fragment))
schema = requests.get(schema_url).json()
schema = get_schema(formdata)
(
regexp_filename_search_pattern_in_label,
@ -521,13 +525,7 @@ class DebugView(DetailView):
if debug:
debug_output = {}
# get formdef schema from wcs API
url = formdata['url']
p = urllib.parse.urlsplit(url)
scheme, netloc, path, query, fragment = p.scheme, p.netloc, p.path, p.query, p.fragment
schema_path = path.rsplit('/', 2)[0] + '/schema'
schema_url = urllib.parse.urlunsplit((scheme, netloc, schema_path, query, fragment))
schema = requests.get(schema_url).json()
schema = get_schema(formdata)
# storeAttachmentResource attachments: list, build from formdata file fields
attachments = []