@@ -7,8 +7,9 @@ use hyper_rustls::HttpsConnectorBuilder;
7
7
use octocrab:: auth:: AppAuth ;
8
8
use octocrab:: models:: issues:: { Comment , Issue } ;
9
9
use octocrab:: models:: pulls:: PullRequest ;
10
- use octocrab:: models:: repos:: { Branch , ContentItems , FileDeletion , FileUpdate } ;
10
+ use octocrab:: models:: repos:: { Branch , ContentItems , FileDeletion , FileUpdate , Object } ;
11
11
use octocrab:: models:: { IssueState , Label } ;
12
+ use octocrab:: params:: repos:: Reference ;
12
13
use octocrab:: params:: { pulls:: State as PullState , State } ;
13
14
use octocrab:: service:: middleware:: base_uri:: BaseUriLayer ;
14
15
use octocrab:: service:: middleware:: extra_headers:: ExtraHeadersLayer ;
@@ -520,38 +521,18 @@ impl GithubWrapper {
520
521
}
521
522
522
523
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
531
525
. 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 ( ) ) )
544
528
. 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)
555
536
}
556
537
557
538
pub fn build_create_ref_request (
0 commit comments