use crate::errors::{ErrorKind, Result};
use crate::fsshttpb::data::exguid::ExGuid;
use crate::one::property::PropertyType;
use crate::one::property::object_reference::ObjectReference;
use crate::one::property_set::{PropertySetId, assert_property_set};
use crate::onestore::object::Object;
#[derive(Debug)]
#[allow(dead_code)]
pub(crate) struct Data {
pub(crate) page: ExGuid,
}
pub(crate) fn parse(object: &Object) -> Result<Data> {
assert_property_set(object, PropertySetId::PageManifestNode)?;
let page = ObjectReference::parse_vec(PropertyType::ContentChildNodes, object)?
.and_then(|ids| ids.first().copied())
.ok_or_else(|| ErrorKind::MalformedOneNoteFileData("page manifest has no page".into()))?;
Ok(Data { page })
}