Coverage for webapp/endpoints/publisher/packages.py: 65%

23 statements  

« prev     ^ index     » next       coverage.py v7.10.5, created at 2025-08-26 22:06 +0000

1# Packages 

2import flask 

3from canonicalwebteam.store_api.publishergw import PublisherGW 

4from canonicalwebteam.exceptions import ( 

5 StoreApiError, 

6 StoreApiResponseErrorList, 

7 StoreApiResponseError, 

8 StoreApiResourceNotFound, 

9) 

10from flask.json import jsonify 

11 

12# Local 

13from webapp.helpers import api_publisher_session 

14from webapp.decorators import exchange_required, login_required 

15 

16publisher_gateway = PublisherGW("snap", api_publisher_session) 

17 

18 

19@login_required 

20@exchange_required 

21def get_package_metadata(snap_name): 

22 try: 

23 package_metadata = publisher_gateway.get_package_metadata( 

24 flask.session, snap_name 

25 ) 

26 return jsonify({"data": package_metadata, "success": True}) 

27 except StoreApiResourceNotFound: 

28 return (jsonify({"error": "Package not found", "success": False}), 404) 

29 except StoreApiResponseErrorList as error: 

30 return ( 

31 jsonify( 

32 { 

33 "error": "Error occurred while fetching snap metadata.", 

34 "errors": error.errors, 

35 "success": False, 

36 } 

37 ), 

38 error.status_code, 

39 ) 

40 except StoreApiResponseError as error: 

41 return ( 

42 jsonify( 

43 { 

44 "error": "Error occurred while fetching snap metadata.", 

45 "success": False, 

46 } 

47 ), 

48 error.status_code, 

49 ) 

50 except StoreApiError: 

51 return ( 

52 jsonify( 

53 { 

54 "error": "Error occurred while fetching snap metadata.", 

55 "success": False, 

56 } 

57 ), 

58 500, 

59 ) 

60 except Exception: 

61 return (jsonify({"error": "Unexpected error", "success": False}), 500)