def create_content_addressed_github_uri(uri: URI) -> URI: """ Returns a content-addressed Github "git_url" that conforms to this scheme. https://api.github.com/repos/:owner/:repo/git/blobs/:file_sha Accepts Github-defined "url" that conforms to this scheme https://api.github.com/repos/:owner/:repo/contents/:path/:to/manifest.json """ if not is_valid_api_github_uri(uri): raise CannotHandleURI(f"{uri} does not conform to Github's API 'url' scheme.") response = requests.get(uri) response.raise_for_status() contents = json.loads(response.content) if contents["type"] != "file": raise CannotHandleURI( f"Expected url to point to a 'file' type, instead received {contents['type']}." ) return contents["git_url"]
def test_is_valid_github_uri(uri, expected): actual = is_valid_api_github_uri(uri) assert actual is expected