28
28
@swag_from (get_docs_path_for ('clone_api.yaml' ))
29
29
@api_blueprint .route ('/clone' , methods = ['POST' ])
30
30
def push_repo ():
31
- if not request .data :
32
- logger .error ("The request did not contain data" )
33
- raise ApiError (message = "No data" , status_code = 400 , details = "The request did not contain data" )
34
- request .on_json_loading_failed = utils .on_json_load_error
35
- data = request .get_json ()
36
-
31
+ data = get_request_data ()
37
32
repo = create_repo_object (data )
38
-
33
+ if not GitHelper .validate_git_url (repo .repo ):
34
+ raise ApiError (message = "Error in cloning the repo" , status_code = 503 ,
35
+ details = "Error cloning the repo due to invalid repo URL" )
39
36
parsed_url = GitHelper .parse_git_url (repo .repo )
40
37
41
38
cloned_repo = clone_repo (parsed_url , repo )
@@ -67,7 +64,7 @@ def create_repo_object(data):
67
64
repo_schema = RepoSchema (unknown = INCLUDE )
68
65
repo = repo_schema .load (data )
69
66
except ValidationError as error :
70
- logger .error ("The data" + data + "was not valid due to " + str (error . messages ))
67
+ logger .error ("The data" + data + "was not valid due to " + str (error ))
71
68
raise ApiError ("Bad Request" , 400 , details = "Repository URL cannot be empty" )
72
69
return repo
73
70
@@ -87,7 +84,7 @@ def upload_repo(cloned_repo):
87
84
88
85
@api_blueprint .route ('/info' , methods = ['GET' ])
89
86
def info ():
90
- commit_hash = os .environ [ 'COMMIT_HASH' ] if not os . environ [ 'COMMIT_HASH' ] is None else ''
87
+ commit_hash = os .environ . get ( 'COMMIT_HASH' , '' )
91
88
return jsonify ({'commit_hash' : commit_hash }), 200
92
89
93
90
@@ -107,10 +104,7 @@ def status():
107
104
108
105
109
106
def get_upload_data ():
110
- if not request .data :
111
- raise ApiError (message = "No data" , status_code = 400 , details = "The request did not contain data" )
112
- request .on_json_loading_failed = utils .on_json_load_error
113
- request_data = request .get_json ()
107
+ request_data = get_request_data ()
114
108
if not 'status_key' in request_data .keys ():
115
109
raise ApiError (message = "Incorrect status key" , status_code = 400 ,
116
110
details = "The request did not contain key named status_key " )
@@ -119,6 +113,15 @@ def get_upload_data():
119
113
return status_data
120
114
121
115
116
+ def get_request_data ():
117
+ if not request .data :
118
+ raise ApiError (message = "No data" , status_code = 400 , details = "The request did not contain data" )
119
+ request .on_json_loading_failed = utils .on_json_load_error
120
+ # if Accept header is not present, try to access data as JSON
121
+ request_data = request .get_json () if request .get_json () is not None else request .get_json (force = True )
122
+ return request_data
123
+
124
+
122
125
@swag_from (get_docs_path_for ('progress_update_api_all.yaml' ))
123
126
@api_blueprint .route ('/progress-update/all' , methods = ['POST' ])
124
127
def progress_update ():
0 commit comments