[
https://issues.apache.org/jira/browse/CAMEL-25983?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18131143#comment-18131143
]
Claus Ibsen commented on CAMEL-25983:
-------------------------------------
Fixed in PR https://github.com/apache/camel/pull/28373
_Claude Code on behalf of davsclaus_
> camel-github2 - getCommitFile passes the commit sha to getBlob, never uses
> the file path, and decodes the content with the wrong base64 decoder
> -----------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-25983
> URL: https://issues.apache.org/jira/browse/CAMEL-25983
> Project: Camel
> Issue Type: Bug
> Components: camel-github
> Affects Versions: 4.18.0, 4.22.0, 4.23.0
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Minor
> Fix For: 4.24.0
>
>
> The getCommitFile producer of camel-github2 cannot give the content of a file
> ({{GetCommitFileProducer}}, main e6885df7894d):
> * it passes the same sha to {{getRepository().getCommit(sha)}} (line 53) and
> to {{getRepository().getBlob(sha)}} (lines 61 and 63). A git object cannot be
> both a commit and a blob, so one of the two calls fails. Both branches of the
> {{if}} at line 59 call {{getBlob(sha)}}, the commit is not used, and the path
> of the file is never used;
> * when the {{CamelGitHubCommitSha}} header is not set, the body is taken as
> the sha (line 46), and at line 58 the body is read again as the path of the
> file;
> * the content of the blob is decoded with {{Base64.getDecoder()}} (line 70),
> which rejects the line-wrapped base64 GitHub returns; {{GHBlob.read()}} of
> github-api uses the MIME decoder;
> * the docs (github2-component.adoc) say getCommitFile takes no body and a
> {{CamelGitHubFilePath}} header, which does not exist in the code, and the
> javadoc of the class says the body is the path of the file.
> The producer has no test (GitHub2ComponentTest only checks the names of the
> enum).
> Proposed change: take the sha of the commit from the {{CamelGitHubCommitSha}}
> header and the path of the file from a {{CamelGitHubFilePath}} header (or the
> body), check that the sha is a commit id (40 hex characters), read the file
> from the tree of that commit, decode the content with the MIME decoder,
> document the headers, and add a test with a mocked GitHub client.
> _Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)