Compare commits

..

No commits in common. "f0bf96c170fd84bd0cf94921a6de391e85d57db7" and "6482c951a1e8c96dbf21f35c9f445e7716c29de9" have entirely different histories.

12 changed files with 41 additions and 40 deletions

4
Cargo.lock generated
View file

@ -2272,7 +2272,7 @@ dependencies = [
[[package]] [[package]]
name = "torn-api" name = "torn-api"
version = "1.4.0" version = "1.3.0"
dependencies = [ dependencies = [
"bon", "bon",
"bytes", "bytes",
@ -2293,7 +2293,7 @@ dependencies = [
[[package]] [[package]]
name = "torn-api-codegen" name = "torn-api-codegen"
version = "0.4.0" version = "0.3.0"
dependencies = [ dependencies = [
"heck", "heck",
"indexmap", "indexmap",

View file

@ -1,7 +1,7 @@
[package] [package]
name = "torn-api-codegen" name = "torn-api-codegen"
authors = ["Pyrit [2111649]"] authors = ["Pyrit [2111649]"]
version = "0.4.0" version = "0.3.0"
edition = "2021" edition = "2021"
description = "Contains the v2 torn API model descriptions and codegen for the bindings" description = "Contains the v2 torn API model descriptions and codegen for the bindings"
license-file = { workspace = true } license-file = { workspace = true }

View file

@ -61,11 +61,11 @@ impl Model {
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use super::*; use super::*;
use crate::openapi::schema::test::get_schema; use crate::openapi::schema::OpenApiSchema;
#[test] #[test]
fn resolve_newtypes() { fn resolve_newtypes() {
let schema = get_schema(); let schema = OpenApiSchema::read().unwrap();
let user_id_schema = schema.components.schemas.get("UserId").unwrap(); let user_id_schema = schema.components.schemas.get("UserId").unwrap();
@ -100,7 +100,7 @@ mod test {
#[test] #[test]
fn resolve_all() { fn resolve_all() {
let schema = get_schema(); let schema = OpenApiSchema::read().unwrap();
let mut unresolved = vec![]; let mut unresolved = vec![];
let total = schema.components.schemas.len(); let total = schema.components.schemas.len();

View file

@ -420,11 +420,11 @@ impl ObjectNamespace<'_> {
mod test { mod test {
use super::*; use super::*;
use crate::openapi::schema::test::get_schema; use crate::openapi::schema::OpenApiSchema;
#[test] #[test]
fn resolve_object() { fn resolve_object() {
let schema = get_schema(); let schema = OpenApiSchema::read().unwrap();
let attack = schema.components.schemas.get("FactionUpgrades").unwrap(); let attack = schema.components.schemas.get("FactionUpgrades").unwrap();
@ -436,7 +436,7 @@ mod test {
#[test] #[test]
fn resolve_objects() { fn resolve_objects() {
let schema = get_schema(); let schema = OpenApiSchema::read().unwrap();
let mut objects = 0; let mut objects = 0;
let mut unresolved = vec![]; let mut unresolved = vec![];

View file

@ -342,13 +342,13 @@ The default value [Self::{}](self::{}#variant.{})"#,
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use crate::openapi::{path::OpenApiPathParameter, schema::test::get_schema}; use crate::openapi::{path::OpenApiPathParameter, schema::OpenApiSchema};
use super::*; use super::*;
#[test] #[test]
fn resolve_components() { fn resolve_components() {
let schema = get_schema(); let schema = OpenApiSchema::read().unwrap();
let mut parameters = 0; let mut parameters = 0;
let mut unresolved = vec![]; let mut unresolved = vec![];
@ -376,7 +376,7 @@ mod test {
#[test] #[test]
fn resolve_inline() { fn resolve_inline() {
let schema = get_schema(); let schema = OpenApiSchema::read().unwrap();
let mut params = 0; let mut params = 0;
let mut unresolved = Vec::new(); let mut unresolved = Vec::new();
@ -404,7 +404,7 @@ mod test {
#[test] #[test]
fn codegen_inline() { fn codegen_inline() {
let schema = get_schema(); let schema = OpenApiSchema::read().unwrap();
let mut params = 0; let mut params = 0;
let mut unresolved = Vec::new(); let mut unresolved = Vec::new();

View file

@ -592,11 +592,11 @@ impl PathNamespace<'_> {
mod test { mod test {
use super::*; use super::*;
use crate::openapi::schema::test::get_schema; use crate::openapi::schema::OpenApiSchema;
#[test] #[test]
fn resolve_paths() { fn resolve_paths() {
let schema = get_schema(); let schema = OpenApiSchema::read().unwrap();
let mut paths = 0; let mut paths = 0;
let mut unresolved = vec![]; let mut unresolved = vec![];
@ -624,7 +624,7 @@ mod test {
#[test] #[test]
fn codegen_paths() { fn codegen_paths() {
let schema = get_schema(); let schema = OpenApiSchema::read().unwrap();
let mut paths = 0; let mut paths = 0;
let mut unresolved = vec![]; let mut unresolved = vec![];

View file

@ -9,14 +9,14 @@ pub enum ParameterLocation {
Path, Path,
} }
#[derive(Debug, Clone, Deserialize, PartialEq, Eq)] #[derive(Debug, Clone, Deserialize)]
#[serde(untagged)] #[serde(untagged)]
pub enum OpenApiParameterDefault<'a> { pub enum OpenApiParameterDefault<'a> {
Int(i32), Int(i32),
Str(&'a str), Str(&'a str),
} }
#[derive(Debug, Clone, Deserialize, PartialEq, Eq)] #[derive(Debug, Clone, Deserialize)]
pub struct OpenApiParameterSchema<'a> { pub struct OpenApiParameterSchema<'a> {
#[serde(rename = "$ref")] #[serde(rename = "$ref")]
pub ref_path: Option<&'a str>, pub ref_path: Option<&'a str>,
@ -29,7 +29,7 @@ pub struct OpenApiParameterSchema<'a> {
pub items: Option<Box<OpenApiParameterSchema<'a>>>, pub items: Option<Box<OpenApiParameterSchema<'a>>>,
} }
#[derive(Debug, Clone, Deserialize, PartialEq, Eq)] #[derive(Debug, Clone, Deserialize)]
pub struct OpenApiParameter<'a> { pub struct OpenApiParameter<'a> {
pub name: &'a str, pub name: &'a str,
pub description: Option<Cow<'a, str>>, pub description: Option<Cow<'a, str>>,

View file

@ -1,10 +1,10 @@
use std::borrow::Cow; use std::borrow::Cow;
use serde::{Deserialize, Deserializer, Serialize}; use serde::{Deserialize, Deserializer};
use super::parameter::OpenApiParameter; use super::parameter::OpenApiParameter;
#[derive(Debug, Clone, Deserialize, PartialEq, Eq)] #[derive(Debug, Clone, Deserialize)]
#[serde(untagged)] #[serde(untagged)]
pub enum OpenApiPathParameter<'a> { pub enum OpenApiPathParameter<'a> {
Link { Link {
@ -14,13 +14,13 @@ pub enum OpenApiPathParameter<'a> {
Inline(OpenApiParameter<'a>), Inline(OpenApiParameter<'a>),
} }
#[derive(Debug, Clone, Deserialize, PartialEq, Eq)] #[derive(Debug, Clone, Deserialize)]
pub struct SchemaLink<'a> { pub struct SchemaLink<'a> {
#[serde(rename = "$ref")] #[serde(rename = "$ref")]
pub ref_path: &'a str, pub ref_path: &'a str,
} }
#[derive(Debug, Clone, Deserialize, PartialEq, Eq)] #[derive(Debug, Clone, Deserialize)]
#[serde(untagged)] #[serde(untagged)]
pub enum OpenApiResponseBody<'a> { pub enum OpenApiResponseBody<'a> {
Schema(SchemaLink<'a>), Schema(SchemaLink<'a>),
@ -30,9 +30,6 @@ pub enum OpenApiResponseBody<'a> {
}, },
} }
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq)]
pub struct OperationId(pub String);
fn deserialize_response_body<'de, D>(deserializer: D) -> Result<OpenApiResponseBody<'de>, D::Error> fn deserialize_response_body<'de, D>(deserializer: D) -> Result<OpenApiResponseBody<'de>, D::Error>
where where
D: Deserializer<'de>, D: Deserializer<'de>,
@ -63,8 +60,7 @@ where
Ok(responses.ok.content.json.schema) Ok(responses.ok.content.json.schema)
} }
#[derive(Debug, Clone, Deserialize, PartialEq, Eq)] #[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "snake_case")]
pub struct OpenApiPathBody<'a> { pub struct OpenApiPathBody<'a> {
pub summary: Option<Cow<'a, str>>, pub summary: Option<Cow<'a, str>>,
pub description: Option<Cow<'a, str>>, pub description: Option<Cow<'a, str>>,
@ -76,7 +72,6 @@ pub struct OpenApiPathBody<'a> {
deserialize_with = "deserialize_response_body" deserialize_with = "deserialize_response_body"
)] )]
pub response_content: OpenApiResponseBody<'a>, pub response_content: OpenApiResponseBody<'a>,
pub operation_id: Option<OperationId>,
} }
#[derive(Debug, Clone, Deserialize)] #[derive(Debug, Clone, Deserialize)]

View file

@ -19,12 +19,20 @@ pub struct OpenApiSchema<'a> {
pub components: Components<'a>, pub components: Components<'a>,
} }
impl OpenApiSchema<'_> {
pub fn read() -> Result<Self, serde_json::Error> {
let s = include_str!("../../openapi.json");
serde_json::from_str(s)
}
}
#[cfg(test)] #[cfg(test)]
pub(crate) mod test { mod test {
use super::*; use super::*;
pub(crate) fn get_schema() -> OpenApiSchema<'static> { #[test]
let s = include_str!("../../../torn-api/openapi.json"); fn read() {
serde_json::from_str(s).unwrap() OpenApiSchema::read().unwrap();
} }
} }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "torn-api" name = "torn-api"
version = "1.4.0" version = "1.3.0"
edition = "2021" edition = "2021"
description = "Auto-generated bindings for the v2 torn api" description = "Auto-generated bindings for the v2 torn api"
license-file = { workspace = true } license-file = { workspace = true }
@ -37,8 +37,7 @@ chrono = { version = "0.4.41", features = ["serde"] }
tokio = { version = "1", features = ["full"] } tokio = { version = "1", features = ["full"] }
[build-dependencies] [build-dependencies]
torn-api-codegen = { path = "../torn-api-codegen", version = "0.4.0" } torn-api-codegen = { path = "../torn-api-codegen", version = "0.3.0" }
syn = { workspace = true, features = ["parsing"] } syn = { workspace = true, features = ["parsing"] }
proc-macro2 = { workspace = true } proc-macro2 = { workspace = true }
prettyplease = "0.2" prettyplease = "0.2"
serde_json = { workspace = true }

View file

@ -15,8 +15,7 @@ fn main() {
let requests_dest = Path::new(&out_dir).join("requests.rs"); let requests_dest = Path::new(&out_dir).join("requests.rs");
let scopes_dest = Path::new(&out_dir).join("scopes.rs"); let scopes_dest = Path::new(&out_dir).join("scopes.rs");
let s = include_str!("./openapi.json"); let schema = OpenApiSchema::read().unwrap();
let schema: OpenApiSchema = serde_json::from_str(s).unwrap();
let mut models_code = TokenStream::new(); let mut models_code = TokenStream::new();