Skip to content

Commit bd2f17f

Browse files
authored
Merge pull request #7 from aprajshekhar/ap_CCS-3957_code_cleanup
CCS-3957: Update deployment pipeline. Code cleanup
2 parents 8c5c355 + 05df38b commit bd2f17f

File tree

2 files changed

+24
-13
lines changed

2 files changed

+24
-13
lines changed

git2pantheon/api/upload.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,11 @@
2828
@swag_from(get_docs_path_for('clone_api.yaml'))
2929
@api_blueprint.route('/clone', methods=['POST'])
3030
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()
3732
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")
3936
parsed_url = GitHelper.parse_git_url(repo.repo)
4037

4138
cloned_repo = clone_repo(parsed_url, repo)
@@ -67,7 +64,7 @@ def create_repo_object(data):
6764
repo_schema = RepoSchema(unknown=INCLUDE)
6865
repo = repo_schema.load(data)
6966
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))
7168
raise ApiError("Bad Request", 400, details="Repository URL cannot be empty")
7269
return repo
7370

@@ -87,7 +84,7 @@ def upload_repo(cloned_repo):
8784

8885
@api_blueprint.route('/info', methods=['GET'])
8986
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', '')
9188
return jsonify({'commit_hash': commit_hash}), 200
9289

9390

@@ -107,10 +104,7 @@ def status():
107104

108105

109106
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()
114108
if not 'status_key' in request_data.keys():
115109
raise ApiError(message="Incorrect status key", status_code=400,
116110
details="The request did not contain key named status_key ")
@@ -119,6 +113,15 @@ def get_upload_data():
119113
return status_data
120114

121115

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+
122125
@swag_from(get_docs_path_for('progress_update_api_all.yaml'))
123126
@api_blueprint.route('/progress-update/all', methods=['POST'])
124127
def progress_update():

git2pantheon/helpers.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@ def parse_git_url(cls, url):
3535
"""
3636
return giturlparse.parse(url)
3737

38+
@classmethod
39+
def validate_git_url(cls, url):
40+
"""
41+
Parses the git url into scheme, port, repo name etc.
42+
:param url: git url to be parsed
43+
:return:
44+
"""
45+
return giturlparse.validate(url)
3846

3947
class ProgressHelper(RemoteProgress):
4048
def line_dropped(self, line):

0 commit comments

Comments
 (0)