@@ -7,8 +7,9 @@ use hyper_rustls::HttpsConnectorBuilder;
77use octocrab:: auth:: AppAuth ;
88use octocrab:: models:: issues:: { Comment , Issue } ;
99use octocrab:: models:: pulls:: PullRequest ;
10- use octocrab:: models:: repos:: { Branch , ContentItems , FileDeletion , FileUpdate } ;
10+ use octocrab:: models:: repos:: { Branch , ContentItems , FileDeletion , FileUpdate , Object } ;
1111use octocrab:: models:: { IssueState , Label } ;
12+ use octocrab:: params:: repos:: Reference ;
1213use octocrab:: params:: { pulls:: State as PullState , State } ;
1314use octocrab:: service:: middleware:: base_uri:: BaseUriLayer ;
1415use octocrab:: service:: middleware:: extra_headers:: ExtraHeadersLayer ;
@@ -520,38 +521,18 @@ impl GithubWrapper {
520521 }
521522
522523 pub async fn get_main_branch_sha ( & self ) -> Result < String , LDNError > {
523- let url = format ! (
524- "https://api.github.com/repos/{}/{}/git/refs" ,
525- self . owner, self . repo
526- ) ;
527- let request = http:: request:: Builder :: new ( )
528- . method ( http:: Method :: GET )
529- . uri ( url) ;
530- let request = self
524+ let head_hash = self
531525 . inner
532- . build_request :: < String > ( request, None )
533- . map_err ( |e| LDNError :: Load ( format ! ( "Failed to build request: {e}" ) ) ) ?;
534-
535- let mut response = match self . inner . execute ( request) . await {
536- Ok ( r) => r,
537- Err ( e) => {
538- println ! ( "Error getting main branch sha: {e:?}" ) ;
539- return Ok ( "" . to_string ( ) ) ;
540- }
541- } ;
542- let response = response. body_mut ( ) ;
543- let body = hyper:: body:: to_bytes ( response)
526+ . repos ( & self . owner , & self . repo )
527+ . get_ref ( & Reference :: Branch ( "main" . to_string ( ) ) )
544528 . await
545- . map_err ( |e| LDNError :: Load ( format ! ( "Failed to serialize to bytes: {e}" ) ) ) ?;
546- let shas = body. into_iter ( ) . map ( |b| b as char ) . collect :: < String > ( ) ;
547- let shas: RefList = serde_json:: from_str ( & shas)
548- . map_err ( |e| LDNError :: Load ( format ! ( "Failed to serialize to RefList: {e}" ) ) ) ?;
549- for sha in shas. 0 {
550- if sha. _ref == "refs/heads/main" {
551- return Ok ( sha. object . sha ) ;
552- }
553- }
554- Ok ( "" . to_string ( ) )
529+ . map_err ( |e| LDNError :: New ( format ! ( "Failed to get ref for main branch: {e}" ) ) ) ?;
530+ let sha = if let Object :: Commit { sha, .. } = head_hash. object {
531+ sha
532+ } else {
533+ return Err ( LDNError :: New ( "Failed to get SHA for main branch" . into ( ) ) ) ;
534+ } ;
535+ Ok ( sha)
555536 }
556537
557538 pub fn build_create_ref_request (
0 commit comments