oapi 0.1.2

OpenApi document parser
Documentation

Simple parsing

A library to easily parse an OpenApi Document according to specifications. It allows for distant references and support the OpenApi operators.

For example, parsing a file in your code might you like the following :

extern crate oapi;
extern crate sppparse;

use oapi::OApi;
use sppparse::SparseRoot;
use std::path::PathBuf;

fn main() {
let doc: OApi = OApi::new(
SparseRoot::new_from_file(PathBuf::from(concat!(
env!("CARGO_MANIFEST_DIR"),
"/tests/documents/test_docs/openapi.yml"
)))
.expect("to parse the openapi"),
);

doc.check().expect("not to have logic errors");
println!("{:#?}", doc);
}

Extension support

You can use extension of the OpenApi Document, as specified in the specifications.

For example, parsing a file with extension in your code might you like the following :

extern crate oapi;
extern crate sppparse;

use oapi::{OApi, OApiExtensionExtractor};
use sppparse::SparseRoot;
use std::path::PathBuf;
use serde::{Serialize, Deserialize};
use sppparse::Sparsable;
use oapi_derive::OApiCheckInner;

#[derive(Debug, PartialEq, Serialize, Deserialize, Sparsable, OApiCheckInner)]
#[serde(rename_all = "camelCase")]
pub struct OApiDummyExt {
first_name: String,
last_name: String,
}

fn main() {
let doc: OApi = OApi::new(
SparseRoot::new_from_file(PathBuf::from(concat!(
env!("CARGO_MANIFEST_DIR"),
"/tests/documents/test_docs/extensions.yml"
)))
.expect("to parse the openapi"),
);

doc.check().expect("not to have logic errors");
let ext: OApiDummyExt = doc
.root_get()
.unwrap()
.oapi_extract_ext(doc.doc(), "x-toto")
.unwrap();
println!("{:#?}", ext);
}