@@ -10,7 +10,7 @@ use bytes::buf::Buf;
1010use flate2:: read:: GzDecoder ;
1111use http:: { Method , StatusCode } ;
1212use lazy_static:: lazy_static;
13- use protobuf:: Message ;
13+ use protobuf:: { Message , MessageField } ;
1414use regex:: Regex ;
1515use ring:: digest:: { Context , SHA256 } ;
1616use serde:: Deserialize ;
@@ -248,16 +248,16 @@ pub fn get_repository_versions_response(
248248 verify_payload ( signed, public_key) . map_err ( |_| ApiError :: IncorrectPayloadSignature ) ?;
249249
250250 let versions = Versions :: parse_from_bytes ( & payload) ?
251- . take_packages ( )
251+ . packages
252252 . into_iter ( )
253253 . map ( |mut n| {
254254 let parse_version = |v : & str | {
255255 let err = |_| ApiError :: InvalidVersionFormat ( v. to_string ( ) ) ;
256256 Version :: parse ( v) . map_err ( err)
257257 } ;
258258 let versions = n
259- . take_versions ( )
260- . into_iter ( )
259+ . versions
260+ . iter ( )
261261 . map ( |v| parse_version ( v. as_str ( ) ) )
262262 . collect :: < Result < Vec < Version > , ApiError > > ( ) ?;
263263 Ok ( ( n. take_name ( ) , versions) )
@@ -306,7 +306,8 @@ pub fn get_package_response(
306306
307307 let mut package = proto:: package:: Package :: parse_from_bytes ( & payload) ?;
308308 let releases = package
309- . take_releases ( )
309+ . releases
310+ . clone ( )
310311 . into_iter ( )
311312 . map ( proto_to_release)
312313 . collect :: < Result < Vec < _ > , _ > > ( ) ?;
@@ -482,7 +483,7 @@ pub enum ApiError {
482483 IncorrectPayloadSignature ,
483484
484485 #[ error( transparent) ]
485- InvalidProtobuf ( #[ from] protobuf:: ProtobufError ) ,
486+ InvalidProtobuf ( #[ from] protobuf:: Error ) ,
486487
487488 #[ error( "unexpected version format {0}" ) ]
488489 InvalidVersionFormat ( String ) ,
@@ -549,16 +550,12 @@ fn read_and_check_body(reader: impl std::io::Read, checksum: &[u8]) -> Result<Ve
549550}
550551
551552fn proto_to_retirement_status (
552- mut status : proto:: package:: RetirementStatus ,
553+ status : MessageField < proto:: package:: RetirementStatus > ,
553554) -> Option < RetirementStatus > {
554- if status. has_reason ( ) {
555- Some ( RetirementStatus {
556- message : status. take_message ( ) ,
557- reason : proto_to_retirement_reason ( status. get_reason ( ) ) ,
558- } )
559- } else {
560- None
561- }
555+ status. into_option ( ) . map ( |mut stat| RetirementStatus {
556+ message : stat. take_message ( ) ,
557+ reason : proto_to_retirement_reason ( stat. reason ( ) ) ,
558+ } )
562559}
563560
564561fn proto_to_retirement_reason ( reason : proto:: package:: RetirementReason ) -> RetirementReason {
@@ -597,16 +594,17 @@ fn proto_to_dep(mut dep: proto::package::Dependency) -> Result<(String, Dependen
597594
598595fn proto_to_release ( mut release : proto:: package:: Release ) -> Result < Release < ( ) > , ApiError > {
599596 let dependencies = release
600- . take_dependencies ( )
597+ . dependencies
598+ . clone ( )
601599 . into_iter ( )
602600 . map ( proto_to_dep)
603601 . collect :: < Result < HashMap < _ , _ > , _ > > ( ) ?;
604602 let version =
605- Version :: try_from ( release. get_version ( ) ) . expect ( "Failed to parse version format from Hex" ) ;
603+ Version :: try_from ( release. version ( ) ) . expect ( "Failed to parse version format from Hex" ) ;
606604 Ok ( Release {
607605 version,
608606 outer_checksum : release. take_outer_checksum ( ) ,
609- retirement_status : proto_to_retirement_status ( release. take_retired ( ) ) ,
607+ retirement_status : proto_to_retirement_status ( release. retired ) ,
610608 requirements : dependencies,
611609 meta : ( ) ,
612610 } )
@@ -775,7 +773,7 @@ fn verify_payload(mut signed: Signed, pem_public_key: &[u8]) -> Result<Vec<u8>,
775773 & ring:: signature:: RSA_PKCS1_2048_8192_SHA512 ,
776774 & spki. subject_public_key ,
777775 )
778- . verify ( payload. as_slice ( ) , signed. get_signature ( ) ) ;
776+ . verify ( payload. as_slice ( ) , signed. signature ( ) ) ;
779777
780778 if verification. is_ok ( ) {
781779 Ok ( payload)
0 commit comments