@@ -2839,15 +2839,256 @@ def delete_usage_threshold_business_unit(self, org, business_unit):
28392839 self ._logger .info ("Delete successfully" )
28402840 return response
28412841
2842+ # Packages
2843+
2844+ def get_packages (self , subject , repo , start_pos = None , start_name = None ):
2845+ """ Get a list of packages in the specified repository.
2846+
2847+ Security: Authenticated user with 'read' permission, or repository read entitlement.
2848+
2849+ :param subject: repository owner
2850+ :param repo: repository name
2851+ :param start_pos: starting position filter
2852+ :param start_name: name prefix filter
2853+ :return: list of packages
2854+ """
2855+ url = "{}/repos/{}/{}/packages" .format (Bintray .BINTRAY_URL , subject , repo )
2856+ params = {}
2857+ if start_pos :
2858+ params ["start_pos" ] = start_pos
2859+ if start_name :
2860+ params ["start_name" ] = start_name
2861+ response = self ._requester .get (url , params = params )
2862+ self ._logger .info ("Get successfully" )
2863+ return response
2864+
2865+ def get_package (self , subject , repo , package , attribute_values = True ):
2866+ """ Get general information about a specified package with package name.
2867+
2868+ Security: Non-authenticated user.
2869+
2870+ :param subject: repository owner
2871+ :param repo: repository name
2872+ :param package: package name
2873+ :param attribute_values: show attribute values
2874+ :return: package details
2875+ """
2876+ url = "{}/packages/{}/{}/{}" .format (Bintray .BINTRAY_URL , subject , repo , package )
2877+ params = {"attribute_values" : bool_to_number (attribute_values )}
2878+ response = self ._requester .get (url , params = params )
2879+ self ._logger .info ("Get successfully" )
2880+ return response
2881+
2882+ def get_package_for_file (self , subject , repo , file_path ):
2883+ """ Get general information about the package a repository file is associated with.
2884+
2885+ Security: Non-authenticated user.
2886+
2887+ :param subject: repository owner
2888+ :param repo: repository name
2889+ :param file_path: file path to be searched
2890+ :return: package details
2891+ """
2892+ url = "{}/file_package/{}/{}/{}" .format (Bintray .BINTRAY_URL , subject , repo , file_path )
2893+ response = self ._requester .get (url )
2894+ self ._logger .info ("Get successfully" )
2895+ return response
2896+
2897+ def search_maven_package (self , group_id = None , artifact_id = None , query = None , subject = None ,
2898+ repo = None ):
2899+ """ Search for a Maven package using Maven groupId and artifactId
2900+
2901+ Security: Non-authenticated user.
2902+
2903+ :param group_id: maven group id
2904+ :param artifact_id: maven artifact id
2905+ :param query: wildcard query
2906+ :param subject: repository owner
2907+ :param repo: repository name
2908+ :return: package details
2909+ """
2910+ url = "{}/search/packages/maven" .format (Bintray .BINTRAY_URL )
2911+ params = {}
2912+ if group_id :
2913+ params ["g" ] = group_id
2914+ if artifact_id :
2915+ params ["a" ] = group_id
2916+ if query :
2917+ params ["q" ] = query
2918+ if subject :
2919+ params ["subject" ] = subject
2920+ if repo :
2921+ params ["repo" ] = repo
2922+
2923+ if not params :
2924+ raise ValueError ("At lease one parameter must be filled." )
2925+
2926+ response = self ._requester .get (url , params = params )
2927+ self ._logger .info ("Get successfully" )
2928+ return response
2929+
2930+ def create_package (self , subject , repo , package , licenses = None , vcs_url = None ,
2931+ custom_licenses = None , desc = None , labels = None , website_url = None ,
2932+ issue_tracker_url = None , github_repo = None , github_release_notes_file = None ,
2933+ public_download_numbers = None , public_stats = None ):
2934+ """ Creates a new package in the specified repo (user has to be an owner of the repo)
2935+
2936+ Security: Authenticated user with 'publish' permission, or repository read/write
2937+ entitlement.
2938+
2939+ :param subject: repository owner
2940+ :param repo: repository name
2941+ :param package: package name
2942+ :param desc: package description
2943+ :param labels: package lables (tags)
2944+ :param licenses: list of licenses (mandatory for OSS packages)
2945+ :param custom_licenses: custom licenses (available only for Premium accounts)
2946+ :param vcs_url: VCS url (mandatory for OSS packages)
2947+ :param website_url: website url
2948+ :param issue_tracker_url: issue tracker url
2949+ :param github_repo: Github repository
2950+ :param github_release_notes_file: release notes on Github
2951+ :param public_download_numbers: display download number
2952+ :param public_stats: stats are public (available only for Premium accounts)
2953+ :return: request response
2954+ """
2955+ url = "{}/packages/{}/{}" .format (Bintray .BINTRAY_URL , subject , repo )
2956+ json_data = {"name" : package }
2957+ if desc :
2958+ json_data ["desc" ] = desc
2959+ if labels :
2960+ json_data ["labels" ] = labels
2961+ if licenses :
2962+ json_data ["licenses" ] = licenses
2963+ if custom_licenses :
2964+ json_data ["custom_licenses" ] = custom_licenses
2965+ if vcs_url :
2966+ json_data ["vcs_url" ] = vcs_url
2967+ if website_url :
2968+ json_data ["website_url" ] = website_url
2969+ if issue_tracker_url :
2970+ json_data ["issue_tracker_url" ] = issue_tracker_url
2971+ if github_repo :
2972+ json_data ["github_repo" ] = github_repo
2973+ if github_release_notes_file :
2974+ json_data ["github_release_notes_file" ] = github_release_notes_file
2975+ if public_download_numbers is not None :
2976+ json_data ["public_download_numbers" ] = public_download_numbers
2977+ if public_stats is not None :
2978+ json_data ["public_stats" ] = public_stats
2979+
2980+ response = self ._requester .post (url , json = json_data )
2981+ self ._logger .info ("Post successfully" )
2982+ return response
2983+
2984+ def delete_package (self , subject , repo , package ):
2985+ """ Delete the specified package
2986+
2987+ Security: Authenticated user with 'publish' permission, or repository
2988+ ead/write entitlement.
2989+
2990+ :param subject: repository owner
2991+ :param repo: repository name
2992+ :param package: package name
2993+ :return: request response
2994+ """
2995+ url = "{}/packages/{}/{}/{}" .format (Bintray .BINTRAY_URL , subject , repo , package )
2996+ response = self ._requester .delete (url )
2997+ self ._logger .info ("Delete successfully" )
2998+ return response
2999+
3000+ def update_package (self , subject , repo , package , licenses = None , vcs_url = None ,
3001+ custom_licenses = None , desc = None , labels = None , website_url = None ,
3002+ issue_tracker_url = None , github_repo = None , github_release_notes_file = None ,
3003+ public_download_numbers = None , public_stats = None ):
3004+ """ Update the information of the specified package.
3005+
3006+ Security: Authenticated user with 'publish' permission, or repository read/write
3007+ entitlement.
3008+
3009+ :param subject: repository owner
3010+ :param repo: repository name
3011+ :param package: package name
3012+ :param desc: package description
3013+ :param labels: package lables (tags)
3014+ :param licenses: list of licenses (mandatory for OSS packages)
3015+ :param custom_licenses: custom licenses (available only for Premium accounts)
3016+ :param vcs_url: VCS url (mandatory for OSS packages)
3017+ :param website_url: website url
3018+ :param issue_tracker_url: issue tracker url
3019+ :param github_repo: Github repository
3020+ :param github_release_notes_file: release notes on Github
3021+ :param public_download_numbers: display download number
3022+ :param public_stats: stats are public (available only for Premium accounts)
3023+ :return: request response
3024+ """
3025+ url = "{}/packages/{}/{}/{}" .format (Bintray .BINTRAY_URL , subject , repo , package )
3026+ json_data = {}
3027+ if desc :
3028+ json_data ["desc" ] = desc
3029+ if labels :
3030+ json_data ["labels" ] = labels
3031+ if licenses :
3032+ json_data ["licenses" ] = licenses
3033+ if custom_licenses :
3034+ json_data ["custom_licenses" ] = custom_licenses
3035+ if vcs_url :
3036+ json_data ["vcs_url" ] = vcs_url
3037+ if website_url :
3038+ json_data ["website_url" ] = website_url
3039+ if issue_tracker_url :
3040+ json_data ["issue_tracker_url" ] = issue_tracker_url
3041+ if github_repo :
3042+ json_data ["github_repo" ] = github_repo
3043+ if github_release_notes_file :
3044+ json_data ["github_release_notes_file" ] = github_release_notes_file
3045+ if public_download_numbers is not None :
3046+ json_data ["public_download_numbers" ] = public_download_numbers
3047+ if public_stats is not None :
3048+ json_data ["public_stats" ] = public_stats
3049+ if not json_data :
3050+ raise ValueError ("At lease one parameter must be filled." )
3051+
3052+ response = self ._requester .patch (url , json = json_data )
3053+ self ._logger .info ("Update successfully" )
3054+ return response
3055+
3056+ def search_package (self , package = None , desc = None , subject = None , repo = None ):
3057+ """ Search for a package.
3058+
3059+ Security: Non-authenticated user.
3060+
3061+ :param subject: repository owner to filter
3062+ :param repo: repository name to filter
3063+ :param package: package name to filter
3064+ :param desc: desc name to filter
3065+ :return: an array of results
3066+ """
3067+ url = "{}/search/packages" .format (Bintray .BINTRAY_URL )
3068+ params = {}
3069+ if package :
3070+ params ["name" ] = package
3071+ if desc :
3072+ params ["desc" ] = desc
3073+ if subject :
3074+ params ["subject" ] = subject
3075+ if repo :
3076+ params ["repo" ] = repo
3077+ if not params :
3078+ raise ValueError ("At lease one parameter must be filled." )
3079+
3080+ response = self ._requester .get (url , params = params )
3081+ self ._logger .info ("Search successfully" )
3082+ return response
3083+
28423084 # Statistics & Usage Report (This resource is only available for Bintray Premium accounts.)
28433085
2844- def _get_custom_downloads (self , subject , repo , package , suffix , version = None , from_date = None ,
3086+ def _get_custom_downloads (self , subject , repo , package , suffix , version = None ,
3087+ from_date = None ,
28453088 to_date = None ):
28463089 """ Get number of downloads, for the passed time range, per package or per version.
2847-
28483090 Security: Authenticated user with 'publish' permission for private repositories,
28493091 or package read/write entitlement.
2850-
28513092 :param subject: repository owner
28523093 :param repo: repository name
28533094 :param package: package name
@@ -2875,10 +3116,8 @@ def _get_custom_downloads(self, subject, repo, package, suffix, version=None, fr
28753116 def get_daily_downloads (self , subject , repo , package , version = None , from_date = None ,
28763117 to_date = None ):
28773118 """ Get number of downloads per day, for the passed time range, per package or per version.
2878-
28793119 Security: Authenticated user with 'publish' permission for private repositories,
28803120 or package read/write entitlement.
2881-
28823121 :param subject: repository owner
28833122 :param repo: repository name
28843123 :param package: package name
@@ -2887,16 +3126,15 @@ def get_daily_downloads(self, subject, repo, package, version=None, from_date=No
28873126 :param to_date: end date range ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ)
28883127 :return: download details
28893128 """
2890- return self ._get_custom_downloads (subject , repo , package , "time_range_downloads" , version ,
3129+ return self ._get_custom_downloads (subject , repo , package , "time_range_downloads" ,
3130+ version ,
28913131 from_date , to_date )
28923132
28933133 def get_total_downloads (self , subject , repo , package , version = None , from_date = None ,
28943134 to_date = None ):
28953135 """ Get total number of downloads, for the passed time range, per package or per version.
2896-
28973136 Security: Authenticated user with 'publish' permission for private repositories,
28983137 or package read/write entitlement.
2899-
29003138 :param subject: repository owner
29013139 :param repo: repository name
29023140 :param package: package name
@@ -2911,10 +3149,8 @@ def get_total_downloads(self, subject, repo, package, version=None, from_date=No
29113149 def get_downloads_by_country (self , subject , repo , package , version = None , from_date = None ,
29123150 to_date = None ):
29133151 """ Get total number of downloads, for the passed time range, per package or per version.
2914-
29153152 Security: Authenticated user with 'publish' permission for private repositories,
29163153 or package read/write entitlement.
2917-
29183154 :param subject: repository owner
29193155 :param repo: repository name
29203156 :param package: package name
@@ -2929,9 +3165,7 @@ def get_downloads_by_country(self, subject, repo, package, version=None, from_da
29293165 def get_usage_report_for_subject (self , subject , from_date = None , to_date = None ):
29303166 """ Get monthly download and storage usage report, according to the specified date range
29313167 for a subject.
2932-
29333168 Security: Authenticated user with 'admin' permission.
2934-
29353169 :param subject: repository owner
29363170 :param from_date: initial date range ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ)
29373171 :param to_date: end date range ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ)
@@ -2951,9 +3185,7 @@ def get_usage_report_for_subject(self, subject, from_date=None, to_date=None):
29513185 def get_usage_report_for_repository (self , subject , repo , from_date = None , to_date = None ):
29523186 """ Get monthly download and storage usage report, according to the specified date range
29533187 for a specific subject repository.
2954-
29553188 Security: Authenticated user with 'admin' permission.
2956-
29573189 :param subject: repository owner
29583190 :param repo: repository name
29593191 :param from_date: initial date range ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ)
@@ -2975,10 +3207,8 @@ def get_usage_report_for_package(self, subject, repo, package=None, start_pos=50
29753207 from_date = None , to_date = None ):
29763208 """ Get current storage usage report. Report can be requested for the specified repository,
29773209 optionally for a specific package.
2978-
29793210 Security: Authenticated user with 'admin' permission for repo, or 'publish' permission
29803211 for specific package.
2981-
29823212 :param subject: repository owner
29833213 :param repo: repository name
29843214 :param package: package name
@@ -3001,14 +3231,13 @@ def get_usage_report_for_package(self, subject, repo, package=None, start_pos=50
30013231 self ._logger .info ("Search successfully" )
30023232 return response
30033233
3004- def get_usage_report_grouped_by_business_unit (self , subject , business_unit = None , from_date = None ,
3234+ def get_usage_report_grouped_by_business_unit (self , subject , business_unit = None ,
3235+ from_date = None ,
30053236 to_date = None ):
30063237 """ Get monthly download and storage usage report, according to the specified date range
30073238 and grouped by business unit. Report can be requested for a subject or for a specific
30083239 subject business unit.
3009-
30103240 Security: Authenticated user with 'admin' permission.
3011-
30123241 :param subject: repository owner
30133242 :param business_unit: business unit name
30143243 :param from_date: initial date range ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ)
0 commit comments