1
- import os
2
-
3
1
import requests
2
+ from requests .auth import AuthBase
4
3
5
4
from .model import (EntryCreatedRS , OperationCompletionRS )
6
5
7
6
7
+ class BearerAuth (AuthBase ):
8
+ """Attaches HTTP Bearer Authentication to the given Request object."""
9
+ def __init__ (self , token ):
10
+ self .token = token
11
+
12
+ def __call__ (self , r ):
13
+ r .headers ["Authorization" ] = "bearer {0}" .format (self .token )
14
+ return r
15
+
16
+
8
17
class ReportPortalService (object ):
9
18
"""Service class with report portal event callbacks."""
10
19
@@ -15,7 +24,7 @@ def __init__(self, endpoint, project, token, api_base=None):
15
24
endpoint: endpoint of report portal service.
16
25
project: project name to use for launch names.
17
26
token: authorization token.
18
- api_base: defaults to api/v1, can be customized to use another version.
27
+ api_base: defaults to api/v1, can be changed to other version.
19
28
"""
20
29
super (ReportPortalService , self ).__init__ ()
21
30
self .endpoint = endpoint
@@ -26,19 +35,19 @@ def __init__(self, endpoint, project, token, api_base=None):
26
35
self .base_url = self .uri_join (self .endpoint ,
27
36
self .api_base ,
28
37
self .project )
29
- self .headers = {"Content-Type" : "application/json" ,
30
- "Authorization" : "{0} {1}" .format ("bearer" ,
31
- self .token )}
32
38
self .session = requests .Session ()
39
+ self .session .auth = BearerAuth (self .token )
33
40
34
41
@staticmethod
35
42
def uri_join (* uri_parts ):
36
43
"""Join uri parts.
37
44
38
- Avoiding usage of urlparse.urljoin and os.path.join as it does not clearly join parts.
45
+ Avoiding usage of urlparse.urljoin and os.path.join
46
+ as it does not clearly join parts.
39
47
40
48
Args:
41
- *uri_parts: tuple of values for join, can contain back and forward slashes (will be stripped up).
49
+ *uri_parts: tuple of values for join, can contain back and forward
50
+ slashes (will be stripped up).
42
51
43
52
Returns:
44
53
An uri string.
@@ -48,33 +57,28 @@ def uri_join(*uri_parts):
48
57
49
58
def start_launch (self , start_launch_rq ):
50
59
url = self .uri_join (self .base_url , "launch" )
51
- r = self .session .post (url = url , headers = self .headers ,
52
- data = start_launch_rq .data )
60
+ r = self .session .post (url = url , json = start_launch_rq .as_dict ())
53
61
return EntryCreatedRS (raw = r .text )
54
62
55
63
def finish_launch (self , launch_id , finish_execution_rq ):
56
64
url = self .uri_join (self .base_url , "launch" , launch_id , "finish" )
57
- r = self .session .put (url = url , headers = self .headers ,
58
- data = finish_execution_rq .data )
65
+ r = self .session .put (url = url , json = finish_execution_rq .as_dict ())
59
66
return OperationCompletionRS (raw = r .text )
60
67
61
68
def start_test_item (self , parent_item_id , start_test_item_rq ):
62
69
if parent_item_id is not None :
63
70
url = self .uri_join (self .base_url , "item" , parent_item_id )
64
71
else :
65
72
url = self .uri_join (self .base_url , "item" )
66
- r = self .session .post (url = url , headers = self .headers ,
67
- data = start_test_item_rq .data )
73
+ r = self .session .post (url = url , json = start_test_item_rq .as_dict ())
68
74
return EntryCreatedRS (raw = r .text )
69
75
70
76
def finish_test_item (self , item_id , finish_test_item_rq ):
71
77
url = self .uri_join (self .base_url , "item" , item_id )
72
- r = self .session .put (url = url , headers = self .headers ,
73
- data = finish_test_item_rq .data )
78
+ r = self .session .put (url = url , json = finish_test_item_rq .as_dict ())
74
79
return OperationCompletionRS (raw = r .text )
75
80
76
81
def log (self , save_log_rq ):
77
82
url = self .uri_join (self .base_url , "log" )
78
- r = self .session .post (url = url , headers = self .headers ,
79
- data = save_log_rq .data )
83
+ r = self .session .post (url = url , json = save_log_rq .as_dict ())
80
84
return EntryCreatedRS (raw = r .text )
0 commit comments