nvchecker/Structuregraphql.py
envolution ec556f6957 ii
2024-11-19 22:51:56 -05:00

55 lines
No EOL
2.1 KiB
Python

# Extract important variables from the GitHub GraphQL JSON response
data = j["data"]
# Rate limit information
rate_limit = {
"max_requests": data["rateLimit"]["limit"], # Maximum allowed requests
"remaining_requests": data["rateLimit"]["remaining"], # Remaining requests in the current window
"reset_time": data["rateLimit"]["resetAt"], # Time when the rate limit resets
}
# Repository information
repository = data["repository"]
# Default branch commit history
default_branch_commit = {
"total_commits": repository["defaultBranchRef"]["target"]["history"]["totalCount"], # Total number of commits
"latest_commit_oid": repository["defaultBranchRef"]["target"]["history"]["edges"][0]["node"]["oid"], # Latest commit hash (OID)
"latest_commit_date": repository["defaultBranchRef"]["target"]["history"]["edges"][0]["node"]["committedDate"], # Latest commit date
}
# Tags information
tags = [
edge["node"]["name"] for edge in repository["refs"]["edges"]
] # List of tag names (if available)
# Releases information
releases = [
{
"name": release["node"]["name"], # Release name
"url": release["node"]["url"], # Release URL
"tag": release["node"]["tagName"], # Tag associated with the release
"is_prerelease": release["node"]["isPrerelease"], # Whether this is a pre-release
"is_latest": release["node"]["isLatest"], # Whether this is the latest release
"created_at": release["node"]["createdAt"], # Release creation date
}
for release in repository["releases"]["edges"]
]
# Pagination info for releases
releases_pagination = {
"has_next_page": repository["releases"]["pageInfo"]["hasNextPage"], # Whether there are more releases
"end_cursor": repository["releases"]["pageInfo"]["endCursor"], # Cursor for the next page of releases
}
# Organized result as a dictionary
result = {
"rate_limit": rate_limit,
"default_branch_commit": default_branch_commit,
"tags": tags,
"releases": releases,
"releases_pagination": releases_pagination,
}
# Example of accessing the organized data
print(result)