diff --git a/src/app/components/Clients.tsx b/src/app/components/Clients.tsx index a19b0de..97739d8 100644 --- a/src/app/components/Clients.tsx +++ b/src/app/components/Clients.tsx @@ -65,6 +65,19 @@ export default function Clients({ `, official: false, }, + { + name: 'Rust', + repoLink: + 'https://github.com/StevanFreeborn/onspring-api-sdk-rust', + installCommand: 'cargo add onspring-api-sdk-rust', + svg: ` + + + + + `, + official: false, + }, ], } as { [key: string]: { diff --git a/src/app/components/Fence.tsx b/src/app/components/Fence.tsx index 1fe0631..02b7154 100644 --- a/src/app/components/Fence.tsx +++ b/src/app/components/Fence.tsx @@ -3,6 +3,7 @@ import 'prismjs/components/prism-bash'; import 'prismjs/components/prism-csharp'; import 'prismjs/components/prism-json'; import 'prismjs/components/prism-python'; +import 'prismjs/components/prism-rust'; import './prism-custom.css'; export default function Fence({ diff --git a/src/app/lib/markdoc.ts b/src/app/lib/markdoc.ts index 8105715..cc54128 100644 --- a/src/app/lib/markdoc.ts +++ b/src/app/lib/markdoc.ts @@ -102,7 +102,13 @@ function getCopyChild( docPath: string ) { const copyPath = getCopyPath(version, doc, docPath); - return parseMarkdown(copyPath); + const child = parseMarkdown(copyPath); + + if (React.isValidElement(child)) { + return React.cloneElement(child, { key: 'copy' }); + } + + return child; } function getExampleChild( @@ -111,7 +117,13 @@ function getExampleChild( docPath: string ) { const examplePath = getExamplePath(version, doc, docPath); - return parseMarkdown(examplePath); + const child = parseMarkdown(examplePath); + + if (React.isValidElement(child)) { + return React.cloneElement(child, { key: 'example' }); + } + + return child; } export function loadSections( diff --git a/src/docs/version_002/resources/apps/get_app_by_id/example.md b/src/docs/version_002/resources/apps/get_app_by_id/example.md index 9eeaaaf..e1f1e1e 100644 --- a/src/docs/version_002/resources/apps/get_app_by_id/example.md +++ b/src/docs/version_002/resources/apps/get_app_by_id/example.md @@ -56,6 +56,23 @@ print(f'Name: {response.data.app.name}') print(f'href: {response.data.app.href}') ``` +```rust +use onspring::OnspringClient; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +let app = client.get_app(195).await?; + +println!( + "{}, {}", + app.id, + app.name.unwrap_or_default() +); +``` + {% /code %} {% code heading="RESPONSE" defaultLanguage="json" %} diff --git a/src/docs/version_002/resources/apps/get_apps/example.md b/src/docs/version_002/resources/apps/get_apps/example.md index 3af0c92..e8841c8 100644 --- a/src/docs/version_002/resources/apps/get_apps/example.md +++ b/src/docs/version_002/resources/apps/get_apps/example.md @@ -66,6 +66,30 @@ for app in response.data.apps: print(f'href: {app.href}') ``` +```rust +use onspring::{OnspringClient, PagingRequest}; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +let paging = PagingRequest { + page_number: 1, + page_size: 10, +}; + +let response = client.list_apps(Some(paging)).await?; + +for app in response.items.unwrap_or_default() { + println!( + "{}, {}", + app.id, + app.name.unwrap_or_default() + ); +} +``` + {% /code %} {% code heading="RESPONSE" defaultLanguage="json" %} diff --git a/src/docs/version_002/resources/apps/get_apps_by_ids/example.md b/src/docs/version_002/resources/apps/get_apps_by_ids/example.md index 7ddcd02..2cb90cd 100644 --- a/src/docs/version_002/resources/apps/get_apps_by_ids/example.md +++ b/src/docs/version_002/resources/apps/get_apps_by_ids/example.md @@ -67,6 +67,26 @@ for app in response.data.apps: print(f'href: {app.href}') ``` +```rust +use onspring::OnspringClient; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +let ids = vec![8, 79, 137, 193, 183]; +let response = client.batch_get_apps(&ids).await?; + +for app in response.items.unwrap_or_default() { + println!( + "{}, {}", + app.id, + app.name.unwrap_or_default() + ); +} +``` + {% /code %} {% code heading="RESPONSE" defaultLanguage="json" %} diff --git a/src/docs/version_002/resources/connectivity/example.md b/src/docs/version_002/resources/connectivity/example.md index dbac8bd..5b3cccf 100644 --- a/src/docs/version_002/resources/connectivity/example.md +++ b/src/docs/version_002/resources/connectivity/example.md @@ -56,4 +56,16 @@ else: print('Attempt to connect failed') ``` +```rust +use onspring::OnspringClient; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +client.ping().await?; +println!("Connected to the Onspring API successfully."); +``` + {% /code %} diff --git a/src/docs/version_002/resources/fields/get_field_by_id/example.md b/src/docs/version_002/resources/fields/get_field_by_id/example.md index 9283018..1bbc8f2 100644 --- a/src/docs/version_002/resources/fields/get_field_by_id/example.md +++ b/src/docs/version_002/resources/fields/get_field_by_id/example.md @@ -54,6 +54,19 @@ print(f'Status Code: {response.statusCode}') print(f'Field Id: {response.data.id}') ``` +```rust +use onspring::OnspringClient; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +let field = client.get_field(6986).await?; + +println!("Field Id: {}", field.id); +``` + {% /code %} {% code heading="RESPONSE" defaultLanguage="json" %} diff --git a/src/docs/version_002/resources/fields/get_fields_by_app/example.md b/src/docs/version_002/resources/fields/get_fields_by_app/example.md index 8f83e4f..55d9cba 100644 --- a/src/docs/version_002/resources/fields/get_fields_by_app/example.md +++ b/src/docs/version_002/resources/fields/get_fields_by_app/example.md @@ -64,6 +64,26 @@ for field in response.data.fields: print(f'Field Id: {field.id}') ``` +```rust +use onspring::{OnspringClient, PagingRequest}; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +let paging = PagingRequest { + page_number: 1, + page_size: 10, +}; + +let response = client.list_fields(195, Some(paging)).await?; + +for field in response.items.unwrap_or_default() { + println!("Field Id: {}", field.id); +} +``` + {% /code %} {% code heading="RESPONSE" defaultLanguage="json" %} diff --git a/src/docs/version_002/resources/fields/get_fields_by_ids/example.md b/src/docs/version_002/resources/fields/get_fields_by_ids/example.md index 9311584..28bd272 100644 --- a/src/docs/version_002/resources/fields/get_fields_by_ids/example.md +++ b/src/docs/version_002/resources/fields/get_fields_by_ids/example.md @@ -63,6 +63,22 @@ for field in response.data.fields: print(f'Field Id: {field.id}') ``` +```rust +use onspring::OnspringClient; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +let ids = vec![6983, 6986, 6987, 6985, 6984]; +let response = client.batch_get_fields(&ids).await?; + +for field in response.items.unwrap_or_default() { + println!("Field Id: {}", field.id); +} +``` + {% /code %} {% code heading="RESPONSE" defaultLanguage="json" %} diff --git a/src/docs/version_002/resources/files/add_file/example.md b/src/docs/version_002/resources/files/add_file/example.md index 812a7a1..40da4b3 100644 --- a/src/docs/version_002/resources/files/add_file/example.md +++ b/src/docs/version_002/resources/files/add_file/example.md @@ -96,6 +96,31 @@ print(f'Status Code: {response.statusCode}') print(f'File Id: {response.data.id}') ``` +```rust +use onspring::{OnspringClient, SaveFileRequest}; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +let request = SaveFileRequest { + record_id: 140, + field_id: 6989, + notes: Some( + "Updating record with attachment.".to_string() + ), + modified_date: Some(chrono::Utc::now()), + file_name: "test-attachment.txt".to_string(), + file_data: std::fs::read("test-attachment.txt")?, + content_type: "text/plain".to_string(), +}; + +let response = client.upload_file(request).await?; + +println!("New File Id is: {}", response.id); +``` + {% /code %} {% code heading="RESPONSE" defaultLanguage="json" %} diff --git a/src/docs/version_002/resources/files/delete_file_by_id/example.md b/src/docs/version_002/resources/files/delete_file_by_id/example.md index a68b68f..ea09a2a 100644 --- a/src/docs/version_002/resources/files/delete_file_by_id/example.md +++ b/src/docs/version_002/resources/files/delete_file_by_id/example.md @@ -60,4 +60,17 @@ else: print('Error deleting file') ``` +```rust +use onspring::OnspringClient; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +client.delete_file(140, 6989, 1904).await?; + +println!("File deleted successfully"); +``` + {% /code %} diff --git a/src/docs/version_002/resources/files/get_file_by_id/example.md b/src/docs/version_002/resources/files/get_file_by_id/example.md index 3649eeb..66e741d 100644 --- a/src/docs/version_002/resources/files/get_file_by_id/example.md +++ b/src/docs/version_002/resources/files/get_file_by_id/example.md @@ -76,6 +76,25 @@ with open(filePath, "wb") as file: print(f'File Location: {filePath}') ``` +```rust +use onspring::OnspringClient; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +let file = client + .get_file(1, 6989, 89) + .await?; + +println!("File Name: {:?}", file.file_name); +println!("Content Type: {:?}", file.content_type); +println!("Size: {} bytes", file.data.len()); + +std::fs::write(&file.file_name, &file.data)?; +``` + {% /code %} {% code heading="RESPONSE" defaultLanguage="text" %} diff --git a/src/docs/version_002/resources/files/get_file_info_by_id/example.md b/src/docs/version_002/resources/files/get_file_info_by_id/example.md index d971957..d3b6316 100644 --- a/src/docs/version_002/resources/files/get_file_info_by_id/example.md +++ b/src/docs/version_002/resources/files/get_file_info_by_id/example.md @@ -53,6 +53,22 @@ print(f'Name: {response.data.fileInfo.name}') print(f'Content Type: {response.data.fileInfo.contentType}') ``` +```rust +use onspring::OnspringClient; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +let info = client + .get_file_info(1, 6989, 89) + .await?; + +println!("Name: {:?}", info.name); +println!("Content Type: {:?}", info.content_type); +``` + {% /code %} {% code heading="RESPONSE" defaultLanguage="json" %} diff --git a/src/docs/version_002/resources/list_values/delete_list_value_by_id/example.md b/src/docs/version_002/resources/list_values/delete_list_value_by_id/example.md index 7ca87a4..e5a42e6 100644 --- a/src/docs/version_002/resources/list_values/delete_list_value_by_id/example.md +++ b/src/docs/version_002/resources/list_values/delete_list_value_by_id/example.md @@ -67,4 +67,22 @@ print(f'Status Code: {response.statusCode}') print(f'Message: {response.message}') ``` +```rust +use onspring::OnspringClient; +use uuid::Uuid; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +let item_id = Uuid::parse_str( + "e3371dbf-b557-4a31-b32f-33c0265d2a59" +)?; + +client.delete_list_item(906, item_id).await?; + +println!("List item deleted"); +``` + {% /code %} diff --git a/src/docs/version_002/resources/list_values/save_list_value/example.md b/src/docs/version_002/resources/list_values/save_list_value/example.md index 919e8ca..f1f00f6 100644 --- a/src/docs/version_002/resources/list_values/save_list_value/example.md +++ b/src/docs/version_002/resources/list_values/save_list_value/example.md @@ -89,6 +89,28 @@ print(f'Status Code: {response.statusCode}') print(f'Id: {response.data.id}') ``` +```rust +use onspring::{OnspringClient, SaveListItemRequest}; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +let request = SaveListItemRequest { + id: None, + name: "Not Started".to_string(), + numeric_value: Some(0.0), + color: Some("#ffffff".to_string()), +}; + +let response = client + .save_list_item(906, request) + .await?; + +println!("Id: {}", response.id); +``` + {% /code %} {% code heading="RESPONSE" defaultLanguage="json" %} diff --git a/src/docs/version_002/resources/records/delete_record_by_id/example.md b/src/docs/version_002/resources/records/delete_record_by_id/example.md index fe8f90d..6ca5672 100644 --- a/src/docs/version_002/resources/records/delete_record_by_id/example.md +++ b/src/docs/version_002/resources/records/delete_record_by_id/example.md @@ -58,4 +58,17 @@ print(f'Status Code: {response.statusCode}') print(f'Message: {response.message}') ``` +```rust +use onspring::OnspringClient; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +client.delete_record(195, 140).await?; + +println!("Record deleted"); +``` + {% /code %} diff --git a/src/docs/version_002/resources/records/delete_records_by_ids/example.md b/src/docs/version_002/resources/records/delete_records_by_ids/example.md index b495b96..90b50d8 100644 --- a/src/docs/version_002/resources/records/delete_records_by_ids/example.md +++ b/src/docs/version_002/resources/records/delete_records_by_ids/example.md @@ -73,4 +73,22 @@ print(f'Status Code: {response.statusCode}') print(f'Message: {response.message}') ``` +```rust +use onspring::{OnspringClient, BatchDeleteRecordsRequest}; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +let request = BatchDeleteRecordsRequest { + app_id: 195, + record_ids: vec![138, 139], +}; + +client.batch_delete_records(request).await?; + +println!("Records deleted successfully"); +``` + {% /code %} diff --git a/src/docs/version_002/resources/records/get_record_by_id/example.md b/src/docs/version_002/resources/records/get_record_by_id/example.md index 067406a..b161245 100644 --- a/src/docs/version_002/resources/records/get_record_by_id/example.md +++ b/src/docs/version_002/resources/records/get_record_by_id/example.md @@ -70,6 +70,36 @@ for field in response.data.fields: print(f'Value: {field.GetResultValueString()}') ``` +```rust +use onspring::OnspringClient; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +let record = client + .get_record(195, 1, None, None) + .await?; + +println!( + "AppId: {}, RecordId: {}", + record.app_id, + record.record_id +); + +if let Some(field_data) = record.field_data { + for field in field_data { + println!( + "FieldId: {}, Type: {:?}, Value: {}", + field.field_id, + field.value_type, + field.value + ); + } +} +``` + {% /code %} {% code heading="RESPONSE" defaultLanguage="json" %} diff --git a/src/docs/version_002/resources/records/get_records_by_app/example.md b/src/docs/version_002/resources/records/get_records_by_app/example.md index b7c304d..c7e0b6e 100644 --- a/src/docs/version_002/resources/records/get_records_by_app/example.md +++ b/src/docs/version_002/resources/records/get_records_by_app/example.md @@ -71,6 +71,32 @@ for record in response.data.records: print(f'Value: {field.GetResultValueString()}') ``` +```rust +use onspring::{OnspringClient, PagingRequest}; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +let paging = PagingRequest { + page_number: 1, + page_size: 10, +}; + +let response = client + .list_records(195, Some(paging), None, None) + .await?; + +for record in response.items.unwrap_or_default() { + println!( + "AppId: {}, RecordId: {}", + record.app_id, + record.record_id + ); +} +``` + {% /code %} {% code heading="RESPONSE" defaultLanguage="json" %} diff --git a/src/docs/version_002/resources/records/get_records_by_ids/example.md b/src/docs/version_002/resources/records/get_records_by_ids/example.md index 882070f..0a1cd83 100644 --- a/src/docs/version_002/resources/records/get_records_by_ids/example.md +++ b/src/docs/version_002/resources/records/get_records_by_ids/example.md @@ -100,6 +100,34 @@ for record in response.data.records: print(f'Value: {field.GetResultValueString()}') ``` +```rust +use onspring::{OnspringClient, BatchGetRecordsRequest, DataFormat}; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +let request = BatchGetRecordsRequest { + app_id: 195, + record_ids: vec![1], + field_ids: Some(vec![6983, 6986, 6987, 6985, 6984]), + data_format: Some(DataFormat::Raw), +}; + +let response = client + .batch_get_records(request) + .await?; + +for record in response.items.unwrap_or_default() { + println!( + "AppId: {}, RecordId: {}", + record.app_id, + record.record_id + ); +} +``` + {% /code %} {% code heading="RESPONSE" defaultLanguage="json" %} diff --git a/src/docs/version_002/resources/records/get_records_by_query/example.md b/src/docs/version_002/resources/records/get_records_by_query/example.md index bb74dca..83407a3 100644 --- a/src/docs/version_002/resources/records/get_records_by_query/example.md +++ b/src/docs/version_002/resources/records/get_records_by_query/example.md @@ -126,6 +126,34 @@ for record in response.data.records: print(f'Value: {field.GetResultValueString()}') ``` +```rust +use onspring::{OnspringClient, QueryRecordsRequest, DataFormat}; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +let query = QueryRecordsRequest { + app_id: 195, + filter: "6983 eq 'Test Task 5'".to_string(), + field_ids: Some(vec![6983, 6986, 6987, 6985, 6984]), + data_format: Some(DataFormat::Formatted), +}; + +let response = client + .query_records(query, None) + .await?; + +for record in response.items.unwrap_or_default() { + println!( + "AppId: {}, RecordId: {}", + record.app_id, + record.record_id + ); +} +``` + {% /code %} {% code heading="RESPONSE" defaultLanguage="json" %} diff --git a/src/docs/version_002/resources/records/save_record/example.md b/src/docs/version_002/resources/records/save_record/example.md index f6149f7..5ed0b82 100644 --- a/src/docs/version_002/resources/records/save_record/example.md +++ b/src/docs/version_002/resources/records/save_record/example.md @@ -123,6 +123,48 @@ for warning in response.data.warnings: print(f'Warning: {warning}') ``` +```rust +use onspring::{OnspringClient, SaveRecordRequest}; +use std::collections::HashMap; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +let mut fields = HashMap::new(); +fields.insert( + "6983".to_string(), + serde_json::json!("A New Test Task"), +); +fields.insert( + "6984".to_string(), + serde_json::json!("This is a test task."), +); +fields.insert( + "6985".to_string(), + serde_json::json!("12/25/2021"), +); +fields.insert( + "6986".to_string(), + serde_json::json!("4118d53a-9121-4345-8682-07f23d606daa"), +); +fields.insert( + "6987".to_string(), + serde_json::json!([4]), +); + +let request = SaveRecordRequest { + app_id: 195, + record_id: None, + fields, +}; + +let response = client.save_record(request).await?; + +println!("New Record Id is: {}", response.id); +``` + {% /code %} {% code heading="Response" defaultLanguage="json" %} diff --git a/src/docs/version_002/resources/reports/get_report_by_id/example.md b/src/docs/version_002/resources/reports/get_report_by_id/example.md index d5148f8..de0614f 100644 --- a/src/docs/version_002/resources/reports/get_report_by_id/example.md +++ b/src/docs/version_002/resources/reports/get_report_by_id/example.md @@ -64,6 +64,31 @@ for row in response.data.rows: print(f'Record Id {row.recordId}: {", ".join([str(cell) for cell in row.cells])}') ``` +```rust +use onspring::OnspringClient; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +let data = client + .get_report(613, None, None) + .await?; + +println!("Columns: {:?}", data.columns); + +if let Some(rows) = data.rows { + for row in rows { + println!( + "Record Id {:?}: {:?}", + row.record_id, + row.cells + ); + } +} +``` + {% /code %} {% code heading="RESPONSE" defaultLanguage="json" %} diff --git a/src/docs/version_002/resources/reports/get_reports_by_app/example.md b/src/docs/version_002/resources/reports/get_reports_by_app/example.md index c7119c2..73f8422 100644 --- a/src/docs/version_002/resources/reports/get_reports_by_app/example.md +++ b/src/docs/version_002/resources/reports/get_reports_by_app/example.md @@ -64,6 +64,33 @@ for report in response.data.reports: print(f' Description: {report.description}') ``` +```rust +use onspring::{OnspringClient, PagingRequest}; + +let client = OnspringClient::builder( + "000000ffffff000000ffffff/00000000-ffff-0000-ffff-000000000000" +) +.build(); + +let paging = PagingRequest { + page_number: 1, + page_size: 10, +}; + +let response = client + .list_reports(195, Some(paging)) + .await?; + +for report in response.items.unwrap_or_default() { + println!( + "{}, {}, {}", + report.id, + report.app_id, + report.name.unwrap_or_default() + ); +} +``` + {% /code %} {% code heading="RESPONSE" defaultLanguage="json" %}