Skip to content
This repository was archived by the owner on Feb 27, 2023. It is now read-only.

Commit b5d4c9b

Browse files
committed
#19 Statistics
Signed-off-by: Uilian Ries <uilianries@gmail.com>
1 parent 30356c7 commit b5d4c9b

1 file changed

Lines changed: 248 additions & 19 deletions

File tree

bintray/bintray.py

Lines changed: 248 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)