iparapheur: don't pass explicit parameters to transport (#31226)
This commit is contained in:
parent
7e8e9cc38b
commit
cc0cc0767d
|
@ -0,0 +1,60 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.18 on 2019-03-07 17:05
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('iparapheur', '0005_remove_iparapheur_log_level'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='iparapheur',
|
||||
old_name='username',
|
||||
new_name='basic_auth_username',
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='iparapheur',
|
||||
name='basic_auth_username',
|
||||
field=models.CharField(blank=True, max_length=128, verbose_name='Basic authentication username'),
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name='iparapheur',
|
||||
old_name='password',
|
||||
new_name='basic_auth_password',
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='iparapheur',
|
||||
name='basic_auth_password',
|
||||
field=models.CharField(blank=True, max_length=128, verbose_name='Basic authentication password'),
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name='iparapheur',
|
||||
old_name='keystore',
|
||||
new_name='client_certificate',
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='iparapheur',
|
||||
name='client_certificate',
|
||||
field=models.FileField(blank=True, null=True, upload_to=b'', verbose_name='TLS client certificate'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='iparapheur',
|
||||
name='trusted_certificate_authorities',
|
||||
field=models.FileField(blank=True, null=True, upload_to=b'', verbose_name='TLS trusted CAs'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='iparapheur',
|
||||
name='verify_cert',
|
||||
field=models.BooleanField(default=True, verbose_name='TLS verify certificates'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='iparapheur',
|
||||
name='http_proxy',
|
||||
field=models.CharField(blank=True, max_length=128, verbose_name='HTTP and HTTPS proxy'),
|
||||
),
|
||||
]
|
|
@ -26,7 +26,7 @@ from django.http import HttpResponse, Http404
|
|||
|
||||
from suds import WebFault
|
||||
|
||||
from passerelle.base.models import BaseResource
|
||||
from passerelle.base.models import BaseResource, HTTPResource
|
||||
from passerelle.utils.api import endpoint
|
||||
from passerelle.utils.jsonresponse import APIError
|
||||
|
||||
|
@ -66,20 +66,10 @@ class FileNotFoundError(Exception):
|
|||
http_status = 404
|
||||
|
||||
|
||||
class IParapheur(BaseResource):
|
||||
class IParapheur(BaseResource, HTTPResource):
|
||||
wsdl_url = models.CharField(max_length=128, blank=False,
|
||||
verbose_name=_('WSDL URL'),
|
||||
help_text=_('WSDL URL'))
|
||||
verify_cert = models.BooleanField(default=True,
|
||||
verbose_name=_('Check HTTPS Certificate validity'))
|
||||
username = models.CharField(max_length=128, blank=True,
|
||||
verbose_name=_('Username'))
|
||||
password = models.CharField(max_length=128, blank=True,
|
||||
verbose_name=_('Password'))
|
||||
keystore = models.FileField(upload_to='iparapheur', null=True, blank=True,
|
||||
verbose_name=_('Keystore'),
|
||||
help_text=_('Certificate and private key in PEM format'))
|
||||
|
||||
category = _('Business Process Connectors')
|
||||
|
||||
class Meta:
|
||||
|
|
|
@ -50,23 +50,12 @@ class Transport(HttpAuthenticated):
|
|||
self.model = model
|
||||
HttpAuthenticated.__init__(self, **kwargs)
|
||||
|
||||
def get_requests_kwargs(self):
|
||||
kwargs = {}
|
||||
if self.model.username:
|
||||
kwargs['auth'] = (self.model.username, self.model.password)
|
||||
if self.model.keystore:
|
||||
kwargs['cert'] = (self.model.keystore.path, self.model.keystore.path)
|
||||
if not self.model.verify_cert:
|
||||
kwargs['verify'] = False
|
||||
return kwargs
|
||||
|
||||
def open(self, request):
|
||||
# only use our custom handler to fetch service resources, not schemas
|
||||
# from other namespaces
|
||||
if 'www.w3.org' in request.url:
|
||||
return HttpAuthenticated.open(self, request)
|
||||
resp = self.model.requests.get(request.url, headers=request.headers,
|
||||
**self.get_requests_kwargs())
|
||||
resp = self.model.requests.get(request.url, headers=request.headers)
|
||||
return StringIO.StringIO(resp.content)
|
||||
|
||||
def send(self, request):
|
||||
|
@ -74,7 +63,7 @@ class Transport(HttpAuthenticated):
|
|||
self.addcredentials(request)
|
||||
try:
|
||||
resp = self.model.requests.post(request.url, data=request.message,
|
||||
headers=request.headers, **self.get_requests_kwargs())
|
||||
headers=request.headers)
|
||||
except(RequestException,) as e:
|
||||
raise TransportError(e.message.message, None)
|
||||
|
||||
|
|
|
@ -32,8 +32,8 @@ def conn():
|
|||
keytype='API',
|
||||
key=API_KEY)
|
||||
conn = IParapheur.objects.create(title='parapheur', slug='parapheur',
|
||||
wsdl_url=WSDL_URL, username='test',
|
||||
password='secret')
|
||||
wsdl_url=WSDL_URL, basic_auth_username='test',
|
||||
basic_auth_password='secret')
|
||||
obj_type = ContentType.objects.get_for_model(IParapheur)
|
||||
AccessRight.objects.create(codename='can_access',
|
||||
apiuser=api, resource_type=obj_type,
|
||||
|
|
Loading…
Reference in New Issue