diff --git a/.editorconfig b/.editorconfig
index 0ba6c1e..b7feeac 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -23,4 +23,4 @@ insert_final_newline = true
dotnet_diagnostic.IDE0060.severity = none # Caused by resource with no methods and no subresources
dotnet_diagnostic.IDE1006.severity = none # Some names may not match up with C# conventions
-dotnet_diagnostic.IDE0290.severity = none # Don't prefer primary constructors
\ No newline at end of file
+dotnet_diagnostic.IDE0290.severity = none # Don't prefer primary constructors
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 6c17e75..accaea7 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -29,6 +29,23 @@ jobs:
- name: Run lints
run: ./scripts/lint
+ build:
+ timeout-minutes: 10
+ name: build
+ runs-on: ${{ github.repository == 'stainless-sdks/scrapegraphai-csharp' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
+ if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set up .NET
+ uses: actions/setup-dotnet@v3
+ with:
+ dotnet-version: '8.0.x'
+
+ - name: Build SDK
+ run: ./scripts/build
+
test:
timeout-minutes: 10
name: test
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
new file mode 100644
index 0000000..3d2ac0b
--- /dev/null
+++ b/.release-please-manifest.json
@@ -0,0 +1,3 @@
+{
+ ".": "0.1.0"
+}
\ No newline at end of file
diff --git a/.stats.yml b/.stats.yml
index 636c6f9..6804ffb 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 15
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/scrapegraphai%2Fscrapegraphai-969ebada41127057e4cda129b2e7206224743b5c7fd33aa8ae062ff71b775ac9.yml
-openapi_spec_hash: 2b2c2c684e6f6885398efca5f2b1f854
-config_hash: 30d69c79e34a1ea6a0405573ce30d927
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/scrapegraphai%2Fscrapegraphai-633fdeab6abaefbe666099e8f86ce6b2acc9dacff1c33a80813bb04e8e437229.yml
+openapi_spec_hash: f41ec90694ca8e7233bd20cc7ff1afbf
+config_hash: 6889576ba0fdc14f2c71cea09a60a0f6
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..bb80d71
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,41 @@
+# Changelog
+
+## 0.1.0 (2025-08-23)
+
+Full Changelog: [v0.0.1...v0.1.0](https://github.com/ScrapeGraphAI/scrapegraphai-c/compare/v0.0.1...v0.1.0)
+
+### Features
+
+* add files ([d02f336](https://github.com/ScrapeGraphAI/scrapegraphai-c/commit/d02f3362c13702753d986b0d0c35a753e3d28136))
+* **client:** add switch and match helpers for unions ([ccad199](https://github.com/ScrapeGraphAI/scrapegraphai-c/commit/ccad1993a305c58d2595477e5ecc171dd798de9d))
+* **client:** allow omitting all params object when all optional ([cf7d535](https://github.com/ScrapeGraphAI/scrapegraphai-c/commit/cf7d535c8802a1328e22dbccd58bff9186029827))
+* **client:** improve signature of `trypickx` methods ([3af2386](https://github.com/ScrapeGraphAI/scrapegraphai-c/commit/3af2386fb58dc706227669f721e42ef5f45c72f6))
+* **client:** shorten union variant names ([5d8fbc6](https://github.com/ScrapeGraphAI/scrapegraphai-c/commit/5d8fbc62da23aadf61ee88248acb409fec9c8bad))
+* **internal:** add dedicated build job in ci ([19debc8](https://github.com/ScrapeGraphAI/scrapegraphai-c/commit/19debc832713e17708c2524bb9a09c1b967b36e5))
+
+
+### Bug Fixes
+
+* **client:** better type names ([198d17a](https://github.com/ScrapeGraphAI/scrapegraphai-c/commit/198d17a1e81f613235b5de7413ebe317c0965af0))
+* **docs:** re-order using statements ([1529f4f](https://github.com/ScrapeGraphAI/scrapegraphai-c/commit/1529f4fa633537e3dfcf942d3898b400b074009c))
+* **internal:** remove unused null class ([4625b19](https://github.com/ScrapeGraphAI/scrapegraphai-c/commit/4625b19d0f56f102c6e2a7cb8e953e8f83956e37))
+
+
+### Chores
+
+* configure new SDK language ([f87e130](https://github.com/ScrapeGraphAI/scrapegraphai-c/commit/f87e1302fbf8f0911a99c6ac94b704df8952798b))
+* **internal:** codegen related update ([30ebeb9](https://github.com/ScrapeGraphAI/scrapegraphai-c/commit/30ebeb9bd332cb0a60dd013238811b8b7c2e781c))
+* **internal:** remove unnecessary internal aliasing ([da2adae](https://github.com/ScrapeGraphAI/scrapegraphai-c/commit/da2adaed4478e4c9dea6629e9d5f30a1c1693267))
+* **internal:** rename parameters ([136affb](https://github.com/ScrapeGraphAI/scrapegraphai-c/commit/136affb4677cc727730d120abf6f9232eda5d9b8))
+* update SDK settings ([00653bc](https://github.com/ScrapeGraphAI/scrapegraphai-c/commit/00653bcbabf976cabc53a46e0ad4c6045f559509))
+
+
+### Documentation
+
+* **client:** add more property comments ([f427733](https://github.com/ScrapeGraphAI/scrapegraphai-c/commit/f427733d982b19d0cc1012be19978f34ae729f6f))
+* fix installation instructions ([3d59690](https://github.com/ScrapeGraphAI/scrapegraphai-c/commit/3d5969023ab80e6e87b6770f15de1c4248fe5cf1))
+
+
+### Refactors
+
+* **client:** refine enum representation ([f427733](https://github.com/ScrapeGraphAI/scrapegraphai-c/commit/f427733d982b19d0cc1012be19978f34ae729f6f))
diff --git a/README.md b/README.md
index 943581f..fc80c6e 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@
>
> This library has not yet been exhaustively tested in production environments and may be missing some features you'd expect in a stable release. As we continue development, there may be breaking changes that require updates to your code.
>
-> **We'd love your feedback!** Please share any suggestions, bug reports, feature requests, or general thoughts by [filing an issue](https://www.github.com/stainless-sdks/scrapegraphai-csharp/issues/new).
+> **We'd love your feedback!** Please share any suggestions, bug reports, feature requests, or general thoughts by [filing an issue](https://www.github.com/ScrapeGraphAI/scrapegraphai-c/issues/new).
The Scrapegraphai C# SDK provides convenient access to the [Scrapegraphai REST API](https://scrapegraphai.com) from applications written in C#.
@@ -16,7 +16,8 @@ The REST API documentation can be found on [scrapegraphai.com](https://scrapegra
## Installation
```bash
-dotnet add package Scrapegraphai
+git clone git@github.com:ScrapeGraphAI/scrapegraphai-c.git
+dotnet add reference scrapegraphai-c/src/Scrapegraphai
```
## Requirements
@@ -31,9 +32,9 @@ This library requires .NET 8 or later.
See the [`examples`](examples) directory for complete and runnable examples.
```csharp
+using System;
using Scrapegraphai;
using Scrapegraphai.Models.Smartscraper;
-using System;
// Configured using the SCRAPEGRAPHAI_API_KEY and SCRAPEGRAPHAI_BASE_URL environment variables
ScrapegraphaiClient client = new();
@@ -91,4 +92,4 @@ This package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) con
We take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.
-We are keen for your feedback; please open an [issue](https://www.github.com/stainless-sdks/scrapegraphai-csharp/issues) with questions, bugs, or suggestions.
+We are keen for your feedback; please open an [issue](https://www.github.com/ScrapeGraphAI/scrapegraphai-c/issues) with questions, bugs, or suggestions.
diff --git a/release-please-config.json b/release-please-config.json
new file mode 100644
index 0000000..bb36019
--- /dev/null
+++ b/release-please-config.json
@@ -0,0 +1,71 @@
+{
+ "packages": {
+ ".": {}
+ },
+ "$schema": "https://raw.githubusercontent.com/stainless-api/release-please/main/schemas/config.json",
+ "include-v-in-tag": true,
+ "include-component-in-tag": false,
+ "versioning": "prerelease",
+ "prerelease": true,
+ "bump-minor-pre-major": true,
+ "bump-patch-for-minor-pre-major": false,
+ "pull-request-header": "Automated Release PR",
+ "pull-request-title-pattern": "release: ${version}",
+ "changelog-sections": [
+ {
+ "type": "feat",
+ "section": "Features"
+ },
+ {
+ "type": "fix",
+ "section": "Bug Fixes"
+ },
+ {
+ "type": "perf",
+ "section": "Performance Improvements"
+ },
+ {
+ "type": "revert",
+ "section": "Reverts"
+ },
+ {
+ "type": "chore",
+ "section": "Chores"
+ },
+ {
+ "type": "docs",
+ "section": "Documentation"
+ },
+ {
+ "type": "style",
+ "section": "Styles"
+ },
+ {
+ "type": "refactor",
+ "section": "Refactors"
+ },
+ {
+ "type": "test",
+ "section": "Tests",
+ "hidden": true
+ },
+ {
+ "type": "build",
+ "section": "Build System"
+ },
+ {
+ "type": "ci",
+ "section": "Continuous Integration",
+ "hidden": true
+ }
+ ],
+ "release-type": "simple",
+ "extra-files": [
+ "README.md",
+ {
+ "type": "xml",
+ "path": "src/Scrapegraphai/Scrapegraphai.csproj",
+ "xpath": "//Project/PropertyGroup/VersionPrefix"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/Scrapegraphai.Tests/Scrapegraphai.Tests.csproj b/src/Scrapegraphai.Tests/Scrapegraphai.Tests.csproj
index ea0fc3b..16b86ea 100644
--- a/src/Scrapegraphai.Tests/Scrapegraphai.Tests.csproj
+++ b/src/Scrapegraphai.Tests/Scrapegraphai.Tests.csproj
@@ -4,6 +4,8 @@
false
true
disable
+
+ $(NoWarn),xUnit1004
diff --git a/src/Scrapegraphai.Tests/Services/Credits/CreditServiceTest.cs b/src/Scrapegraphai.Tests/Services/Credits/CreditServiceTest.cs
index eea6fa1..98b7dfc 100644
--- a/src/Scrapegraphai.Tests/Services/Credits/CreditServiceTest.cs
+++ b/src/Scrapegraphai.Tests/Services/Credits/CreditServiceTest.cs
@@ -7,7 +7,7 @@ public class CreditServiceTest : TestBase
[Fact(Skip = "Prism tests are disabled")]
public async Task Retrieve_Works()
{
- var credit = await this.client.Credits.Retrieve(new());
+ var credit = await this.client.Credits.Retrieve();
credit.Validate();
}
}
diff --git a/src/Scrapegraphai.Tests/Services/Healthz/HealthzServiceTest.cs b/src/Scrapegraphai.Tests/Services/Healthz/HealthzServiceTest.cs
index ef8f743..f8750e4 100644
--- a/src/Scrapegraphai.Tests/Services/Healthz/HealthzServiceTest.cs
+++ b/src/Scrapegraphai.Tests/Services/Healthz/HealthzServiceTest.cs
@@ -7,7 +7,7 @@ public class HealthzServiceTest : TestBase
[Fact(Skip = "Prism tests are disabled")]
public async Task Check_Works()
{
- var response = await this.client.Healthz.Check(new());
+ var response = await this.client.Healthz.Check();
response.Validate();
}
}
diff --git a/src/Scrapegraphai.Tests/Services/Smartscraper/SmartscraperServiceTest.cs b/src/Scrapegraphai.Tests/Services/Smartscraper/SmartscraperServiceTest.cs
index 709bdae..14496ae 100644
--- a/src/Scrapegraphai.Tests/Services/Smartscraper/SmartscraperServiceTest.cs
+++ b/src/Scrapegraphai.Tests/Services/Smartscraper/SmartscraperServiceTest.cs
@@ -25,7 +25,7 @@ public async Task Retrieve_Works()
[Fact(Skip = "Prism tests are disabled")]
public async Task List_Works()
{
- var smartscrapers = await this.client.Smartscraper.List(new());
+ var smartscrapers = await this.client.Smartscraper.List();
smartscrapers.Validate();
}
}
diff --git a/src/Scrapegraphai.Tests/Services/Validate/ValidateServiceTest.cs b/src/Scrapegraphai.Tests/Services/Validate/ValidateServiceTest.cs
index 160441d..ac9ab72 100644
--- a/src/Scrapegraphai.Tests/Services/Validate/ValidateServiceTest.cs
+++ b/src/Scrapegraphai.Tests/Services/Validate/ValidateServiceTest.cs
@@ -7,7 +7,7 @@ public class ValidateServiceTest : TestBase
[Fact(Skip = "Prism tests are disabled")]
public async Task APIKey_Works()
{
- var response = await this.client.Validate.APIKey(new());
+ var response = await this.client.Validate.APIKey();
response.Validate();
}
}
diff --git a/src/Scrapegraphai/ApiEnum.cs b/src/Scrapegraphai/ApiEnum.cs
new file mode 100644
index 0000000..a506e06
--- /dev/null
+++ b/src/Scrapegraphai/ApiEnum.cs
@@ -0,0 +1,56 @@
+using System;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+namespace Scrapegraphai;
+
+public record struct ApiEnum(JsonElement Json)
+ where TEnum : struct, Enum
+{
+ public readonly TRaw Raw() =>
+ JsonSerializer.Deserialize(this.Json, ModelBase.SerializerOptions)
+ ?? throw new NullReferenceException(nameof(this.Json));
+
+ public readonly TEnum Value() =>
+ JsonSerializer.Deserialize(this.Json, ModelBase.SerializerOptions);
+
+ public readonly void Validate()
+ {
+ if (!Enum.IsDefined(Value()))
+ {
+ throw new Exception();
+ }
+ }
+
+ public static implicit operator TRaw(ApiEnum value) => value.Raw();
+
+ public static implicit operator TEnum(ApiEnum value) => value.Value();
+
+ public static implicit operator ApiEnum(TRaw value) =>
+ new(JsonSerializer.SerializeToElement(value, ModelBase.SerializerOptions));
+
+ public static implicit operator ApiEnum(TEnum value) =>
+ new(JsonSerializer.SerializeToElement(value, ModelBase.SerializerOptions));
+}
+
+sealed class ApiEnumConverter : JsonConverter>
+ where TEnum : struct, Enum
+{
+ public override ApiEnum Read(
+ ref Utf8JsonReader reader,
+ Type typeToConvert,
+ JsonSerializerOptions options
+ )
+ {
+ return new(JsonSerializer.Deserialize(ref reader, options));
+ }
+
+ public override void Write(
+ Utf8JsonWriter writer,
+ ApiEnum value,
+ JsonSerializerOptions options
+ )
+ {
+ JsonSerializer.Serialize(writer, value.Json, options);
+ }
+}
diff --git a/src/Scrapegraphai/HttpException.cs b/src/Scrapegraphai/HttpException.cs
index 58588dc..3cadf97 100644
--- a/src/Scrapegraphai/HttpException.cs
+++ b/src/Scrapegraphai/HttpException.cs
@@ -1,10 +1,10 @@
+using System;
using System.Diagnostics.CodeAnalysis;
using System.Net;
-using System = System;
namespace Scrapegraphai;
-public sealed class HttpException : System::Exception
+public sealed class HttpException : Exception
{
public required HttpStatusCode? StatusCode { get; set; }
public required string ResponseBody { get; set; }
diff --git a/src/Scrapegraphai/IEnum.cs b/src/Scrapegraphai/IEnum.cs
deleted file mode 100644
index 297e516..0000000
--- a/src/Scrapegraphai/IEnum.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace Scrapegraphai;
-
-interface IEnum
- where TEnum : IEnum
-{
- static abstract TEnum FromRaw(TValue value);
- TValue Raw();
-}
diff --git a/src/Scrapegraphai/IScrapegraphaiClient.cs b/src/Scrapegraphai/IScrapegraphaiClient.cs
index 7dde273..689eb27 100644
--- a/src/Scrapegraphai/IScrapegraphaiClient.cs
+++ b/src/Scrapegraphai/IScrapegraphaiClient.cs
@@ -1,43 +1,43 @@
-using Crawl = Scrapegraphai.Services.Crawl;
-using Credits = Scrapegraphai.Services.Credits;
-using Feedback = Scrapegraphai.Services.Feedback;
-using GenerateSchema = Scrapegraphai.Services.GenerateSchema;
-using Healthz = Scrapegraphai.Services.Healthz;
-using Http = System.Net.Http;
-using Markdownify = Scrapegraphai.Services.Markdownify;
-using Searchscraper = Scrapegraphai.Services.Searchscraper;
-using Smartscraper = Scrapegraphai.Services.Smartscraper;
-using System = System;
-using Validate = Scrapegraphai.Services.Validate;
+using System;
+using System.Net.Http;
+using Scrapegraphai.Services.Crawl;
+using Scrapegraphai.Services.Credits;
+using Scrapegraphai.Services.Feedback;
+using Scrapegraphai.Services.GenerateSchema;
+using Scrapegraphai.Services.Healthz;
+using Scrapegraphai.Services.Markdownify;
+using Scrapegraphai.Services.Searchscraper;
+using Scrapegraphai.Services.Smartscraper;
+using Scrapegraphai.Services.Validate;
namespace Scrapegraphai;
public interface IScrapegraphaiClient
{
- Http::HttpClient HttpClient { get; init; }
+ HttpClient HttpClient { get; init; }
- System::Uri BaseUrl { get; init; }
+ Uri BaseUrl { get; init; }
///
/// API key for authentication
///
string APIKey { get; init; }
- Smartscraper::ISmartscraperService Smartscraper { get; }
+ ISmartscraperService Smartscraper { get; }
- Markdownify::IMarkdownifyService Markdownify { get; }
+ IMarkdownifyService Markdownify { get; }
- Searchscraper::ISearchscraperService Searchscraper { get; }
+ ISearchscraperService Searchscraper { get; }
- GenerateSchema::IGenerateSchemaService GenerateSchema { get; }
+ IGenerateSchemaService GenerateSchema { get; }
- Crawl::ICrawlService Crawl { get; }
+ ICrawlService Crawl { get; }
- Credits::ICreditService Credits { get; }
+ ICreditService Credits { get; }
- Validate::IValidateService Validate { get; }
+ IValidateService Validate { get; }
- Feedback::IFeedbackService Feedback { get; }
+ IFeedbackService Feedback { get; }
- Healthz::IHealthzService Healthz { get; }
+ IHealthzService Healthz { get; }
}
diff --git a/src/Scrapegraphai/JsonConverters.cs b/src/Scrapegraphai/JsonConverters.cs
deleted file mode 100644
index 7c466d6..0000000
--- a/src/Scrapegraphai/JsonConverters.cs
+++ /dev/null
@@ -1,124 +0,0 @@
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-using System.Text.Json.Serialization;
-using Json = System.Text.Json;
-using System = System;
-
-namespace Scrapegraphai;
-
-sealed class ModelConverter : JsonConverter
- where TModel : ModelBase, IFromRaw
-{
- public override TModel? Read(
- ref Json::Utf8JsonReader reader,
- System::Type _typeToConvert,
- Json::JsonSerializerOptions options
- )
- {
- Dictionary? properties = Json::JsonSerializer.Deserialize<
- Dictionary
- >(ref reader, options);
- if (properties == null)
- return null;
-
- return TModel.FromRawUnchecked(properties);
- }
-
- public override void Write(
- Json::Utf8JsonWriter writer,
- TModel value,
- Json::JsonSerializerOptions options
- )
- {
- Json::JsonSerializer.Serialize(writer, value.Properties, options);
- }
-}
-
-sealed class EnumConverter : JsonConverter
- where TEnum : IEnum
-{
- public override TEnum Read(
- ref Json::Utf8JsonReader reader,
- System::Type _typeToConvert,
- Json::JsonSerializerOptions options
- )
- {
- return TEnum.FromRaw(Json::JsonSerializer.Deserialize(ref reader, options)!);
- }
-
- public override void Write(
- Json::Utf8JsonWriter writer,
- TEnum value,
- Json::JsonSerializerOptions options
- )
- {
- Json::JsonSerializer.Serialize(writer, value.Raw(), options);
- }
-}
-
-sealed class UnionConverter : JsonConverter
- where T : class
-{
- readonly List _variantTypes = Enumerable.ToList(
- Enumerable.Where(
- Assembly.GetExecutingAssembly().GetTypes(),
- type => type.BaseType == typeof(T)
- )
- );
-
- public override T? Read(
- ref Json::Utf8JsonReader reader,
- System::Type _typeToConvert,
- Json::JsonSerializerOptions options
- )
- {
- List exceptions = [];
- foreach (var variantType in _variantTypes)
- {
- try
- {
- return Json::JsonSerializer.Deserialize(ref reader, variantType, options) as T;
- }
- catch (Json::JsonException e)
- {
- exceptions.Add(e);
- }
- }
- throw new System::AggregateException(exceptions);
- }
-
- public override void Write(
- Json::Utf8JsonWriter writer,
- T value,
- Json::JsonSerializerOptions options
- )
- {
- var variantType =
- _variantTypes.Find(type => type == value.GetType())
- ?? throw new System::ArgumentOutOfRangeException(value.GetType().Name);
- Json::JsonSerializer.Serialize(writer, value, variantType, options);
- }
-}
-
-sealed class VariantConverter : JsonConverter
- where TVariant : IVariant
-{
- public override TVariant Read(
- ref Json::Utf8JsonReader reader,
- System::Type _typeToConvert,
- Json::JsonSerializerOptions options
- )
- {
- return TVariant.From(Json::JsonSerializer.Deserialize(ref reader, options)!);
- }
-
- public override void Write(
- Json::Utf8JsonWriter writer,
- TVariant value,
- Json::JsonSerializerOptions options
- )
- {
- Json::JsonSerializer.Serialize(writer, value.Value, options);
- }
-}
diff --git a/src/Scrapegraphai/ModelBase.cs b/src/Scrapegraphai/ModelBase.cs
index 6fc7538..bc1939f 100644
--- a/src/Scrapegraphai/ModelBase.cs
+++ b/src/Scrapegraphai/ModelBase.cs
@@ -1,22 +1,47 @@
using System.Collections.Generic;
-using Json = System.Text.Json;
+using System.Text.Json;
+using Scrapegraphai.Models.Smartscraper.CompletedSmartscraperProperties;
+using CompletedMarkdownifyProperties = Scrapegraphai.Models.Markdownify.CompletedMarkdownifyProperties;
+using CompletedSchemaGenerationResponseProperties = Scrapegraphai.Models.GenerateSchema.GenerateSchemaRetrieveResponseProperties.CompletedSchemaGenerationResponseProperties;
+using CompletedSearchScraperProperties = Scrapegraphai.Models.Searchscraper.CompletedSearchScraperProperties;
+using CrawlRetrieveResultsResponseProperties = Scrapegraphai.Models.Crawl.CrawlRetrieveResultsResponseProperties;
+using FailedMarkdownifyResponseProperties = Scrapegraphai.Models.Markdownify.MarkdownifyRetrieveStatusResponseProperties.FailedMarkdownifyResponseProperties;
+using FailedSchemaGenerationResponseProperties = Scrapegraphai.Models.GenerateSchema.GenerateSchemaRetrieveResponseProperties.FailedSchemaGenerationResponseProperties;
+using FailedSearchScraperResponseProperties = Scrapegraphai.Models.Searchscraper.SearchscraperRetrieveStatusResponseProperties.FailedSearchScraperResponseProperties;
+using FailedSmartscraperProperties = Scrapegraphai.Models.Smartscraper.FailedSmartscraperProperties;
+using GenerateSchemaCreateResponseProperties = Scrapegraphai.Models.GenerateSchema.GenerateSchemaCreateResponseProperties;
namespace Scrapegraphai;
public abstract record class ModelBase
{
- public Dictionary Properties { get; set; } = [];
+ public Dictionary Properties { get; set; } = [];
- internal static readonly Json::JsonSerializerOptions SerializerOptions = new();
+ internal static readonly JsonSerializerOptions SerializerOptions = new()
+ {
+ Converters =
+ {
+ new ApiEnumConverter(),
+ new ApiEnumConverter(),
+ new ApiEnumConverter(),
+ new ApiEnumConverter(),
+ new ApiEnumConverter(),
+ new ApiEnumConverter(),
+ new ApiEnumConverter(),
+ new ApiEnumConverter(),
+ new ApiEnumConverter(),
+ new ApiEnumConverter(),
+ },
+ };
- static readonly Json::JsonSerializerOptions _toStringSerializerOptions = new(SerializerOptions)
+ static readonly JsonSerializerOptions _toStringSerializerOptions = new(SerializerOptions)
{
WriteIndented = true,
};
public sealed override string? ToString()
{
- return Json::JsonSerializer.Serialize(this.Properties, _toStringSerializerOptions);
+ return JsonSerializer.Serialize(this.Properties, _toStringSerializerOptions);
}
public abstract void Validate();
@@ -24,5 +49,5 @@ public abstract record class ModelBase
interface IFromRaw
{
- static abstract T FromRawUnchecked(Dictionary properties);
+ static abstract T FromRawUnchecked(Dictionary properties);
}
diff --git a/src/Scrapegraphai/ModelConverter.cs b/src/Scrapegraphai/ModelConverter.cs
new file mode 100644
index 0000000..a1d83bb
--- /dev/null
+++ b/src/Scrapegraphai/ModelConverter.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+namespace Scrapegraphai;
+
+sealed class ModelConverter : JsonConverter
+ where TModel : ModelBase, IFromRaw
+{
+ public override TModel? Read(
+ ref Utf8JsonReader reader,
+ Type typeToConvert,
+ JsonSerializerOptions options
+ )
+ {
+ Dictionary? properties = JsonSerializer.Deserialize<
+ Dictionary
+ >(ref reader, options);
+ if (properties == null)
+ return null;
+
+ return TModel.FromRawUnchecked(properties);
+ }
+
+ public override void Write(Utf8JsonWriter writer, TModel value, JsonSerializerOptions options)
+ {
+ JsonSerializer.Serialize(writer, value.Properties, options);
+ }
+}
diff --git a/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsParams.cs b/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsParams.cs
index c44186a..1be6120 100644
--- a/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsParams.cs
+++ b/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsParams.cs
@@ -1,5 +1,5 @@
+using System;
using System.Net.Http;
-using System = System;
namespace Scrapegraphai.Models.Crawl;
@@ -10,9 +10,9 @@ public sealed record class CrawlRetrieveResultsParams : ParamsBase
{
public required string TaskID;
- public override System::Uri Url(IScrapegraphaiClient client)
+ public override Uri Url(IScrapegraphaiClient client)
{
- return new System::UriBuilder(
+ return new UriBuilder(
client.BaseUrl.ToString().TrimEnd('/') + string.Format("/crawl/{0}", this.TaskID)
)
{
diff --git a/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsResponse.cs b/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsResponse.cs
index dbe2bf2..f094b97 100644
--- a/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsResponse.cs
+++ b/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsResponse.cs
@@ -1,8 +1,8 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
+using System.Text.Json;
using System.Text.Json.Serialization;
-using CrawlRetrieveResultsResponseProperties = Scrapegraphai.Models.Crawl.CrawlRetrieveResultsResponseProperties;
-using Json = System.Text.Json;
+using Scrapegraphai.Models.Crawl.CrawlRetrieveResultsResponseProperties;
namespace Scrapegraphai.Models.Crawl;
@@ -14,46 +14,61 @@ public sealed record class CrawlRetrieveResultsResponse
///
/// Successful crawl results
///
- public CrawlRetrieveResultsResponseProperties::Result? Result
+ public Result? Result
{
get
{
- if (!this.Properties.TryGetValue("result", out Json::JsonElement element))
+ if (!this.Properties.TryGetValue("result", out JsonElement element))
return null;
- return Json::JsonSerializer.Deserialize(
- element,
+ return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
+ }
+ set
+ {
+ this.Properties["result"] = JsonSerializer.SerializeToElement(
+ value,
ModelBase.SerializerOptions
);
}
- set { this.Properties["result"] = Json::JsonSerializer.SerializeToElement(value); }
}
- public CrawlRetrieveResultsResponseProperties::Status? Status
+ public ApiEnum? Status
{
get
{
- if (!this.Properties.TryGetValue("status", out Json::JsonElement element))
+ if (!this.Properties.TryGetValue("status", out JsonElement element))
return null;
- return Json::JsonSerializer.Deserialize(
+ return JsonSerializer.Deserialize?>(
element,
ModelBase.SerializerOptions
);
}
- set { this.Properties["status"] = Json::JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["status"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? TaskID
{
get
{
- if (!this.Properties.TryGetValue("task_id", out Json::JsonElement element))
+ if (!this.Properties.TryGetValue("task_id", out JsonElement element))
return null;
- return Json::JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
+ return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
+ }
+ set
+ {
+ this.Properties["task_id"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
}
- set { this.Properties["task_id"] = Json::JsonSerializer.SerializeToElement(value); }
}
///
@@ -63,12 +78,18 @@ public string? Traceback
{
get
{
- if (!this.Properties.TryGetValue("traceback", out Json::JsonElement element))
+ if (!this.Properties.TryGetValue("traceback", out JsonElement element))
return null;
- return Json::JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
+ return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
+ }
+ set
+ {
+ this.Properties["traceback"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
}
- set { this.Properties["traceback"] = Json::JsonSerializer.SerializeToElement(value); }
}
public override void Validate()
@@ -83,14 +104,14 @@ public CrawlRetrieveResultsResponse() { }
#pragma warning disable CS8618
[SetsRequiredMembers]
- CrawlRetrieveResultsResponse(Dictionary properties)
+ CrawlRetrieveResultsResponse(Dictionary properties)
{
Properties = properties;
}
#pragma warning restore CS8618
public static CrawlRetrieveResultsResponse FromRawUnchecked(
- Dictionary properties
+ Dictionary properties
)
{
return new(properties);
diff --git a/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsResponseProperties/Result.cs b/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsResponseProperties/Result.cs
index 469461a..cf6fea6 100644
--- a/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsResponseProperties/Result.cs
+++ b/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsResponseProperties/Result.cs
@@ -1,5 +1,8 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Text.Json;
using System.Text.Json.Serialization;
-using Json = System.Text.Json;
using ResultVariants = Scrapegraphai.Models.Crawl.CrawlRetrieveResultsResponseProperties.ResultVariants;
namespace Scrapegraphai.Models.Crawl.CrawlRetrieveResultsResponseProperties;
@@ -7,15 +10,107 @@ namespace Scrapegraphai.Models.Crawl.CrawlRetrieveResultsResponseProperties;
///
/// Successful crawl results
///
-[JsonConverter(typeof(UnionConverter))]
+[JsonConverter(typeof(ResultConverter))]
public abstract record class Result
{
internal Result() { }
- public static implicit operator Result(Json::JsonElement value) =>
+ public static implicit operator Result(JsonElement value) =>
new ResultVariants::JsonElement(value);
public static implicit operator Result(string value) => new ResultVariants::String(value);
+ public bool TryPickJsonElement([NotNullWhen(true)] out JsonElement? value)
+ {
+ value = (this as ResultVariants::JsonElement)?.Value;
+ return value != null;
+ }
+
+ public bool TryPickString([NotNullWhen(true)] out string? value)
+ {
+ value = (this as ResultVariants::String)?.Value;
+ return value != null;
+ }
+
+ public void Switch(
+ Action jsonElement,
+ Action @string
+ )
+ {
+ switch (this)
+ {
+ case ResultVariants::JsonElement inner:
+ jsonElement(inner);
+ break;
+ case ResultVariants::String inner:
+ @string(inner);
+ break;
+ default:
+ throw new InvalidOperationException();
+ }
+ }
+
+ public T Match(
+ Func jsonElement,
+ Func @string
+ )
+ {
+ return this switch
+ {
+ ResultVariants::JsonElement inner => jsonElement(inner),
+ ResultVariants::String inner => @string(inner),
+ _ => throw new InvalidOperationException(),
+ };
+ }
+
public abstract void Validate();
}
+
+sealed class ResultConverter : JsonConverter
+{
+ public override Result? Read(
+ ref Utf8JsonReader reader,
+ Type typeToConvert,
+ JsonSerializerOptions options
+ )
+ {
+ List exceptions = [];
+
+ try
+ {
+ var deserialized = JsonSerializer.Deserialize(ref reader, options);
+ if (deserialized != null)
+ {
+ return new ResultVariants::String(deserialized);
+ }
+ }
+ catch (JsonException e)
+ {
+ exceptions.Add(e);
+ }
+
+ try
+ {
+ return new ResultVariants::JsonElement(
+ JsonSerializer.Deserialize(ref reader, options)
+ );
+ }
+ catch (JsonException e)
+ {
+ exceptions.Add(e);
+ }
+
+ throw new AggregateException(exceptions);
+ }
+
+ public override void Write(Utf8JsonWriter writer, Result value, JsonSerializerOptions options)
+ {
+ object variant = value switch
+ {
+ ResultVariants::JsonElement(var jsonElement) => jsonElement,
+ ResultVariants::String(var @string) => @string,
+ _ => throw new ArgumentOutOfRangeException(nameof(value)),
+ };
+ JsonSerializer.Serialize(writer, variant, options);
+ }
+}
diff --git a/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsResponseProperties/ResultVariants/All.cs b/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsResponseProperties/ResultVariants/All.cs
index 98fdae0..8f94441 100644
--- a/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsResponseProperties/ResultVariants/All.cs
+++ b/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsResponseProperties/ResultVariants/All.cs
@@ -1,4 +1,3 @@
-using System.Text.Json.Serialization;
using Json = System.Text.Json;
namespace Scrapegraphai.Models.Crawl.CrawlRetrieveResultsResponseProperties.ResultVariants;
@@ -6,7 +5,6 @@ namespace Scrapegraphai.Models.Crawl.CrawlRetrieveResultsResponseProperties.Resu
///
/// Successful crawl results
///
-[JsonConverter(typeof(VariantConverter))]
public sealed record class JsonElement(Json::JsonElement Value)
: Result,
IVariant
@@ -22,7 +20,6 @@ public override void Validate() { }
///
/// Error message
///
-[JsonConverter(typeof(VariantConverter))]
public sealed record class String(string Value) : Result, IVariant
{
public static String From(string value)
diff --git a/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsResponseProperties/Status.cs b/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsResponseProperties/Status.cs
index 5c625f6..9e64fe0 100644
--- a/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsResponseProperties/Status.cs
+++ b/src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsResponseProperties/Status.cs
@@ -1,59 +1,55 @@
+using System;
+using System.Text.Json;
using System.Text.Json.Serialization;
-using System = System;
namespace Scrapegraphai.Models.Crawl.CrawlRetrieveResultsResponseProperties;
-[JsonConverter(typeof(EnumConverter))]
-public sealed record class Status(string value) : IEnum
+[JsonConverter(typeof(StatusConverter))]
+public enum Status
{
- public static readonly Status Pending = new("PENDING");
-
- public static readonly Status Started = new("STARTED");
-
- public static readonly Status Success = new("SUCCESS");
-
- public static readonly Status Failure = new("FAILURE");
-
- public static readonly Status Retry = new("RETRY");
-
- public static readonly Status Revoked = new("REVOKED");
-
- readonly string _value = value;
+ Pending,
+ Started,
+ Success,
+ Failure,
+ Retry,
+ Revoked,
+}
- public enum Value
+sealed class StatusConverter : JsonConverter
+{
+ public override Status Read(
+ ref Utf8JsonReader reader,
+ Type typeToConvert,
+ JsonSerializerOptions options
+ )
{
- Pending,
- Started,
- Success,
- Failure,
- Retry,
- Revoked,
- }
-
- public Value Known() =>
- _value switch
+ return JsonSerializer.Deserialize(ref reader, options) switch
{
- "PENDING" => Value.Pending,
- "STARTED" => Value.Started,
- "SUCCESS" => Value.Success,
- "FAILURE" => Value.Failure,
- "RETRY" => Value.Retry,
- "REVOKED" => Value.Revoked,
- _ => throw new System::ArgumentOutOfRangeException(nameof(_value)),
+ "PENDING" => Status.Pending,
+ "STARTED" => Status.Started,
+ "SUCCESS" => Status.Success,
+ "FAILURE" => Status.Failure,
+ "RETRY" => Status.Retry,
+ "REVOKED" => Status.Revoked,
+ _ => (Status)(-1),
};
-
- public string Raw()
- {
- return _value;
- }
-
- public void Validate()
- {
- Known();
}
- public static Status FromRaw(string value)
+ public override void Write(Utf8JsonWriter writer, Status value, JsonSerializerOptions options)
{
- return new(value);
+ JsonSerializer.Serialize(
+ writer,
+ value switch
+ {
+ Status.Pending => "PENDING",
+ Status.Started => "STARTED",
+ Status.Success => "SUCCESS",
+ Status.Failure => "FAILURE",
+ Status.Retry => "RETRY",
+ Status.Revoked => "REVOKED",
+ _ => throw new ArgumentOutOfRangeException(nameof(value)),
+ },
+ options
+ );
}
}
diff --git a/src/Scrapegraphai/Models/Crawl/CrawlStartParams.cs b/src/Scrapegraphai/Models/Crawl/CrawlStartParams.cs
index 05a5112..bc57576 100644
--- a/src/Scrapegraphai/Models/Crawl/CrawlStartParams.cs
+++ b/src/Scrapegraphai/Models/Crawl/CrawlStartParams.cs
@@ -1,9 +1,9 @@
+using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;
-using CrawlStartParamsProperties = Scrapegraphai.Models.Crawl.CrawlStartParamsProperties;
-using Json = System.Text.Json;
-using System = System;
+using System.Text.Json;
+using Scrapegraphai.Models.Crawl.CrawlStartParamsProperties;
namespace Scrapegraphai.Models.Crawl;
@@ -13,7 +13,7 @@ namespace Scrapegraphai.Models.Crawl;
///
public sealed record class CrawlStartParams : ParamsBase
{
- public Dictionary BodyProperties { get; set; } = [];
+ public Dictionary BodyProperties { get; set; } = [];
///
/// Starting URL for crawling
@@ -22,13 +22,19 @@ public required string URL
{
get
{
- if (!this.BodyProperties.TryGetValue("url", out Json::JsonElement element))
- throw new System::ArgumentOutOfRangeException("url", "Missing required argument");
+ if (!this.BodyProperties.TryGetValue("url", out JsonElement element))
+ throw new ArgumentOutOfRangeException("url", "Missing required argument");
- return Json::JsonSerializer.Deserialize(element, ModelBase.SerializerOptions)
- ?? throw new System::ArgumentNullException("url");
+ return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions)
+ ?? throw new ArgumentNullException("url");
+ }
+ set
+ {
+ this.BodyProperties["url"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
}
- set { this.BodyProperties["url"] = Json::JsonSerializer.SerializeToElement(value); }
}
///
@@ -38,12 +44,18 @@ public long? Depth
{
get
{
- if (!this.BodyProperties.TryGetValue("depth", out Json::JsonElement element))
+ if (!this.BodyProperties.TryGetValue("depth", out JsonElement element))
return null;
- return Json::JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
+ return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
+ }
+ set
+ {
+ this.BodyProperties["depth"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
}
- set { this.BodyProperties["depth"] = Json::JsonSerializer.SerializeToElement(value); }
}
///
@@ -53,14 +65,17 @@ public bool? ExtractionMode
{
get
{
- if (!this.BodyProperties.TryGetValue("extraction_mode", out Json::JsonElement element))
+ if (!this.BodyProperties.TryGetValue("extraction_mode", out JsonElement element))
return null;
- return Json::JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
+ return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
set
{
- this.BodyProperties["extraction_mode"] = Json::JsonSerializer.SerializeToElement(value);
+ this.BodyProperties["extraction_mode"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
}
}
@@ -71,12 +86,18 @@ public long? MaxPages
{
get
{
- if (!this.BodyProperties.TryGetValue("max_pages", out Json::JsonElement element))
+ if (!this.BodyProperties.TryGetValue("max_pages", out JsonElement element))
return null;
- return Json::JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
+ return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
+ }
+ set
+ {
+ this.BodyProperties["max_pages"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
}
- set { this.BodyProperties["max_pages"] = Json::JsonSerializer.SerializeToElement(value); }
}
///
@@ -86,12 +107,18 @@ public string? Prompt
{
get
{
- if (!this.BodyProperties.TryGetValue("prompt", out Json::JsonElement element))
+ if (!this.BodyProperties.TryGetValue("prompt", out JsonElement element))
return null;
- return Json::JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
+ return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
+ }
+ set
+ {
+ this.BodyProperties["prompt"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
}
- set { this.BodyProperties["prompt"] = Json::JsonSerializer.SerializeToElement(value); }
}
///
@@ -101,48 +128,57 @@ public bool? RenderHeavyJs
{
get
{
- if (!this.BodyProperties.TryGetValue("render_heavy_js", out Json::JsonElement element))
+ if (!this.BodyProperties.TryGetValue("render_heavy_js", out JsonElement element))
return null;
- return Json::JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
+ return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
set
{
- this.BodyProperties["render_heavy_js"] = Json::JsonSerializer.SerializeToElement(value);
+ this.BodyProperties["render_heavy_js"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
}
}
- public CrawlStartParamsProperties::Rules? Rules
+ public Rules? Rules
{
get
{
- if (!this.BodyProperties.TryGetValue("rules", out Json::JsonElement element))
+ if (!this.BodyProperties.TryGetValue("rules", out JsonElement element))
return null;
- return Json::JsonSerializer.Deserialize(
- element,
+ return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
+ }
+ set
+ {
+ this.BodyProperties["rules"] = JsonSerializer.SerializeToElement(
+ value,
ModelBase.SerializerOptions
);
}
- set { this.BodyProperties["rules"] = Json::JsonSerializer.SerializeToElement(value); }
}
///
/// Output schema for extraction
///
- public Json::JsonElement? Schema
+ public JsonElement? Schema
{
get
{
- if (!this.BodyProperties.TryGetValue("schema", out Json::JsonElement element))
+ if (!this.BodyProperties.TryGetValue("schema", out JsonElement element))
return null;
- return Json::JsonSerializer.Deserialize(
- element,
+ return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
+ }
+ set
+ {
+ this.BodyProperties["schema"] = JsonSerializer.SerializeToElement(
+ value,
ModelBase.SerializerOptions
);
}
- set { this.BodyProperties["schema"] = Json::JsonSerializer.SerializeToElement(value); }
}
///
@@ -152,17 +188,23 @@ public bool? Sitemap
{
get
{
- if (!this.BodyProperties.TryGetValue("sitemap", out Json::JsonElement element))
+ if (!this.BodyProperties.TryGetValue("sitemap", out JsonElement element))
return null;
- return Json::JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
+ return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
+ }
+ set
+ {
+ this.BodyProperties["sitemap"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
}
- set { this.BodyProperties["sitemap"] = Json::JsonSerializer.SerializeToElement(value); }
}
- public override System::Uri Url(IScrapegraphaiClient client)
+ public override Uri Url(IScrapegraphaiClient client)
{
- return new System::UriBuilder(client.BaseUrl.ToString().TrimEnd('/') + "/crawl")
+ return new UriBuilder(client.BaseUrl.ToString().TrimEnd('/') + "/crawl")
{
Query = this.QueryString(client),
}.Uri;
@@ -171,7 +213,7 @@ public bool? Sitemap
public StringContent BodyContent()
{
return new(
- Json::JsonSerializer.Serialize(this.BodyProperties),
+ JsonSerializer.Serialize(this.BodyProperties),
Encoding.UTF8,
"application/json"
);
diff --git a/src/Scrapegraphai/Models/Crawl/CrawlStartParamsProperties/Rules.cs b/src/Scrapegraphai/Models/Crawl/CrawlStartParamsProperties/Rules.cs
index 05f9ead..a5a2574 100644
--- a/src/Scrapegraphai/Models/Crawl/CrawlStartParamsProperties/Rules.cs
+++ b/src/Scrapegraphai/Models/Crawl/CrawlStartParamsProperties/Rules.cs
@@ -20,7 +20,13 @@ public List? Exclude
return JsonSerializer.Deserialize?>(element, ModelBase.SerializerOptions);
}
- set { this.Properties["exclude"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["exclude"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
///
@@ -35,7 +41,13 @@ public bool? SameDomain
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["same_domain"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["same_domain"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public override void Validate()
diff --git a/src/Scrapegraphai/Models/Crawl/CrawlStartResponse.cs b/src/Scrapegraphai/Models/Crawl/CrawlStartResponse.cs
index bdf8aa3..ea96632 100644
--- a/src/Scrapegraphai/Models/Crawl/CrawlStartResponse.cs
+++ b/src/Scrapegraphai/Models/Crawl/CrawlStartResponse.cs
@@ -1,7 +1,7 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
+using System.Text.Json;
using System.Text.Json.Serialization;
-using Json = System.Text.Json;
namespace Scrapegraphai.Models.Crawl;
@@ -15,12 +15,18 @@ public string? TaskID
{
get
{
- if (!this.Properties.TryGetValue("task_id", out Json::JsonElement element))
+ if (!this.Properties.TryGetValue("task_id", out JsonElement element))
return null;
- return Json::JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
+ return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
+ }
+ set
+ {
+ this.Properties["task_id"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
}
- set { this.Properties["task_id"] = Json::JsonSerializer.SerializeToElement(value); }
}
public override void Validate()
@@ -32,15 +38,13 @@ public CrawlStartResponse() { }
#pragma warning disable CS8618
[SetsRequiredMembers]
- CrawlStartResponse(Dictionary properties)
+ CrawlStartResponse(Dictionary properties)
{
Properties = properties;
}
#pragma warning restore CS8618
- public static CrawlStartResponse FromRawUnchecked(
- Dictionary properties
- )
+ public static CrawlStartResponse FromRawUnchecked(Dictionary properties)
{
return new(properties);
}
diff --git a/src/Scrapegraphai/Models/Credits/CreditRetrieveResponse.cs b/src/Scrapegraphai/Models/Credits/CreditRetrieveResponse.cs
index 79ab16d..5f92748 100644
--- a/src/Scrapegraphai/Models/Credits/CreditRetrieveResponse.cs
+++ b/src/Scrapegraphai/Models/Credits/CreditRetrieveResponse.cs
@@ -20,7 +20,13 @@ public long? RemainingCredits
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["remaining_credits"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["remaining_credits"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
///
@@ -35,7 +41,13 @@ public long? TotalCreditsUsed
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["total_credits_used"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["total_credits_used"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public override void Validate()
diff --git a/src/Scrapegraphai/Models/Feedback/FeedbackSubmitParams.cs b/src/Scrapegraphai/Models/Feedback/FeedbackSubmitParams.cs
index 8179ff6..ea38ed7 100644
--- a/src/Scrapegraphai/Models/Feedback/FeedbackSubmitParams.cs
+++ b/src/Scrapegraphai/Models/Feedback/FeedbackSubmitParams.cs
@@ -25,7 +25,13 @@ public required long Rating
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.BodyProperties["rating"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.BodyProperties["rating"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
///
@@ -41,7 +47,13 @@ public required string RequestID
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions)
?? throw new ArgumentNullException("request_id");
}
- set { this.BodyProperties["request_id"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.BodyProperties["request_id"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
///
@@ -56,7 +68,13 @@ public string? FeedbackText
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.BodyProperties["feedback_text"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.BodyProperties["feedback_text"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public override Uri Url(IScrapegraphaiClient client)
diff --git a/src/Scrapegraphai/Models/Feedback/FeedbackSubmitResponse.cs b/src/Scrapegraphai/Models/Feedback/FeedbackSubmitResponse.cs
index 6943d42..fc53ee3 100644
--- a/src/Scrapegraphai/Models/Feedback/FeedbackSubmitResponse.cs
+++ b/src/Scrapegraphai/Models/Feedback/FeedbackSubmitResponse.cs
@@ -18,7 +18,13 @@ public string? FeedbackID
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["feedback_id"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["feedback_id"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public DateTime? FeedbackTimestamp
@@ -30,7 +36,13 @@ public DateTime? FeedbackTimestamp
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["feedback_timestamp"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["feedback_timestamp"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? Message
@@ -42,7 +54,13 @@ public string? Message
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["message"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["message"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? RequestID
@@ -54,7 +72,13 @@ public string? RequestID
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["request_id"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["request_id"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public override void Validate()
diff --git a/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaCreateParams.cs b/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaCreateParams.cs
index caf49b9..f108377 100644
--- a/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaCreateParams.cs
+++ b/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaCreateParams.cs
@@ -27,7 +27,13 @@ public required string UserPrompt
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions)
?? throw new ArgumentNullException("user_prompt");
}
- set { this.BodyProperties["user_prompt"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.BodyProperties["user_prompt"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
///
@@ -42,7 +48,13 @@ public JsonElement? ExistingSchema
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.BodyProperties["existing_schema"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.BodyProperties["existing_schema"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public override Uri Url(IScrapegraphaiClient client)
diff --git a/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaCreateResponse.cs b/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaCreateResponse.cs
index 29ab8a5..094164e 100644
--- a/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaCreateResponse.cs
+++ b/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaCreateResponse.cs
@@ -2,7 +2,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Text.Json;
using System.Text.Json.Serialization;
-using GenerateSchemaCreateResponseProperties = Scrapegraphai.Models.GenerateSchema.GenerateSchemaCreateResponseProperties;
+using Scrapegraphai.Models.GenerateSchema.GenerateSchemaCreateResponseProperties;
namespace Scrapegraphai.Models.GenerateSchema;
@@ -20,7 +20,13 @@ public string? Error
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["error"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["error"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
///
@@ -35,7 +41,13 @@ public JsonElement? GeneratedSchema
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["generated_schema"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["generated_schema"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
///
@@ -50,7 +62,13 @@ public string? RefinedPrompt
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["refined_prompt"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["refined_prompt"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? RequestID
@@ -62,22 +80,34 @@ public string? RequestID
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["request_id"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["request_id"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
- public GenerateSchemaCreateResponseProperties::Status? Status
+ public ApiEnum? Status
{
get
{
if (!this.Properties.TryGetValue("status", out JsonElement element))
return null;
- return JsonSerializer.Deserialize(
+ return JsonSerializer.Deserialize?>(
element,
ModelBase.SerializerOptions
);
}
- set { this.Properties["status"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["status"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? UserPrompt
@@ -89,7 +119,13 @@ public string? UserPrompt
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["user_prompt"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["user_prompt"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public override void Validate()
diff --git a/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaCreateResponseProperties/Status.cs b/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaCreateResponseProperties/Status.cs
index 4eca9ee..1b50bda 100644
--- a/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaCreateResponseProperties/Status.cs
+++ b/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaCreateResponseProperties/Status.cs
@@ -1,39 +1,40 @@
using System;
+using System.Text.Json;
using System.Text.Json.Serialization;
namespace Scrapegraphai.Models.GenerateSchema.GenerateSchemaCreateResponseProperties;
-[JsonConverter(typeof(EnumConverter))]
-public sealed record class Status(string value) : IEnum
+[JsonConverter(typeof(StatusConverter))]
+public enum Status
{
- public static readonly Status Completed = new("completed");
-
- readonly string _value = value;
+ Completed,
+}
- public enum Value
+sealed class StatusConverter : JsonConverter
+{
+ public override Status Read(
+ ref Utf8JsonReader reader,
+ Type typeToConvert,
+ JsonSerializerOptions options
+ )
{
- Completed,
- }
-
- public Value Known() =>
- _value switch
+ return JsonSerializer.Deserialize(ref reader, options) switch
{
- "completed" => Value.Completed,
- _ => throw new ArgumentOutOfRangeException(nameof(_value)),
+ "completed" => Status.Completed,
+ _ => (Status)(-1),
};
-
- public string Raw()
- {
- return _value;
- }
-
- public void Validate()
- {
- Known();
}
- public static Status FromRaw(string value)
+ public override void Write(Utf8JsonWriter writer, Status value, JsonSerializerOptions options)
{
- return new(value);
+ JsonSerializer.Serialize(
+ writer,
+ value switch
+ {
+ Status.Completed => "completed",
+ _ => throw new ArgumentOutOfRangeException(nameof(value)),
+ },
+ options
+ );
}
}
diff --git a/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponse.cs b/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponse.cs
index 40674c7..484144d 100644
--- a/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponse.cs
+++ b/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponse.cs
@@ -1,21 +1,153 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Text.Json;
using System.Text.Json.Serialization;
-using GenerateSchemaRetrieveResponseProperties = Scrapegraphai.Models.GenerateSchema.GenerateSchemaRetrieveResponseProperties;
+using Scrapegraphai.Models.GenerateSchema.GenerateSchemaRetrieveResponseProperties;
using GenerateSchemaRetrieveResponseVariants = Scrapegraphai.Models.GenerateSchema.GenerateSchemaRetrieveResponseVariants;
namespace Scrapegraphai.Models.GenerateSchema;
-[JsonConverter(typeof(UnionConverter))]
+[JsonConverter(typeof(GenerateSchemaRetrieveResponseConverter))]
public abstract record class GenerateSchemaRetrieveResponse
{
internal GenerateSchemaRetrieveResponse() { }
public static implicit operator GenerateSchemaRetrieveResponse(
- GenerateSchemaRetrieveResponseProperties::CompletedSchemaGenerationResponse value
+ CompletedSchemaGenerationResponse value
) => new GenerateSchemaRetrieveResponseVariants::CompletedSchemaGenerationResponse(value);
public static implicit operator GenerateSchemaRetrieveResponse(
- GenerateSchemaRetrieveResponseProperties::FailedSchemaGenerationResponse value
+ FailedSchemaGenerationResponse value
) => new GenerateSchemaRetrieveResponseVariants::FailedSchemaGenerationResponse(value);
+ public bool TryPickCompletedSchemaGeneration(
+ [NotNullWhen(true)] out CompletedSchemaGenerationResponse? value
+ )
+ {
+ value = (
+ this as GenerateSchemaRetrieveResponseVariants::CompletedSchemaGenerationResponse
+ )?.Value;
+ return value != null;
+ }
+
+ public bool TryPickFailedSchemaGeneration(
+ [NotNullWhen(true)] out FailedSchemaGenerationResponse? value
+ )
+ {
+ value = (
+ this as GenerateSchemaRetrieveResponseVariants::FailedSchemaGenerationResponse
+ )?.Value;
+ return value != null;
+ }
+
+ public void Switch(
+ Action completedSchemaGeneration,
+ Action failedSchemaGeneration
+ )
+ {
+ switch (this)
+ {
+ case GenerateSchemaRetrieveResponseVariants::CompletedSchemaGenerationResponse inner:
+ completedSchemaGeneration(inner);
+ break;
+ case GenerateSchemaRetrieveResponseVariants::FailedSchemaGenerationResponse inner:
+ failedSchemaGeneration(inner);
+ break;
+ default:
+ throw new InvalidOperationException();
+ }
+ }
+
+ public T Match(
+ Func<
+ GenerateSchemaRetrieveResponseVariants::CompletedSchemaGenerationResponse,
+ T
+ > completedSchemaGeneration,
+ Func<
+ GenerateSchemaRetrieveResponseVariants::FailedSchemaGenerationResponse,
+ T
+ > failedSchemaGeneration
+ )
+ {
+ return this switch
+ {
+ GenerateSchemaRetrieveResponseVariants::CompletedSchemaGenerationResponse inner =>
+ completedSchemaGeneration(inner),
+ GenerateSchemaRetrieveResponseVariants::FailedSchemaGenerationResponse inner =>
+ failedSchemaGeneration(inner),
+ _ => throw new InvalidOperationException(),
+ };
+ }
+
public abstract void Validate();
}
+
+sealed class GenerateSchemaRetrieveResponseConverter : JsonConverter
+{
+ public override GenerateSchemaRetrieveResponse? Read(
+ ref Utf8JsonReader reader,
+ Type typeToConvert,
+ JsonSerializerOptions options
+ )
+ {
+ List exceptions = [];
+
+ try
+ {
+ var deserialized = JsonSerializer.Deserialize(
+ ref reader,
+ options
+ );
+ if (deserialized != null)
+ {
+ return new GenerateSchemaRetrieveResponseVariants::CompletedSchemaGenerationResponse(
+ deserialized
+ );
+ }
+ }
+ catch (JsonException e)
+ {
+ exceptions.Add(e);
+ }
+
+ try
+ {
+ var deserialized = JsonSerializer.Deserialize(
+ ref reader,
+ options
+ );
+ if (deserialized != null)
+ {
+ return new GenerateSchemaRetrieveResponseVariants::FailedSchemaGenerationResponse(
+ deserialized
+ );
+ }
+ }
+ catch (JsonException e)
+ {
+ exceptions.Add(e);
+ }
+
+ throw new AggregateException(exceptions);
+ }
+
+ public override void Write(
+ Utf8JsonWriter writer,
+ GenerateSchemaRetrieveResponse value,
+ JsonSerializerOptions options
+ )
+ {
+ object variant = value switch
+ {
+ GenerateSchemaRetrieveResponseVariants::CompletedSchemaGenerationResponse(
+ var completedSchemaGeneration
+ ) => completedSchemaGeneration,
+ GenerateSchemaRetrieveResponseVariants::FailedSchemaGenerationResponse(
+ var failedSchemaGeneration
+ ) => failedSchemaGeneration,
+ _ => throw new ArgumentOutOfRangeException(nameof(value)),
+ };
+ JsonSerializer.Serialize(writer, variant, options);
+ }
+}
diff --git a/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseProperties/CompletedSchemaGenerationResponse.cs b/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseProperties/CompletedSchemaGenerationResponse.cs
index 1ffd6f9..e754788 100644
--- a/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseProperties/CompletedSchemaGenerationResponse.cs
+++ b/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseProperties/CompletedSchemaGenerationResponse.cs
@@ -2,7 +2,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Text.Json;
using System.Text.Json.Serialization;
-using CompletedSchemaGenerationResponseProperties = Scrapegraphai.Models.GenerateSchema.GenerateSchemaRetrieveResponseProperties.CompletedSchemaGenerationResponseProperties;
+using Scrapegraphai.Models.GenerateSchema.GenerateSchemaRetrieveResponseProperties.CompletedSchemaGenerationResponseProperties;
namespace Scrapegraphai.Models.GenerateSchema.GenerateSchemaRetrieveResponseProperties;
@@ -20,7 +20,13 @@ public string? Error
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["error"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["error"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public JsonElement? GeneratedSchema
@@ -32,7 +38,13 @@ public JsonElement? GeneratedSchema
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["generated_schema"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["generated_schema"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? RefinedPrompt
@@ -44,7 +56,13 @@ public string? RefinedPrompt
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["refined_prompt"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["refined_prompt"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? RequestID
@@ -56,22 +74,34 @@ public string? RequestID
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["request_id"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["request_id"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
- public CompletedSchemaGenerationResponseProperties::Status? Status
+ public ApiEnum? Status
{
get
{
if (!this.Properties.TryGetValue("status", out JsonElement element))
return null;
- return JsonSerializer.Deserialize(
+ return JsonSerializer.Deserialize?>(
element,
ModelBase.SerializerOptions
);
}
- set { this.Properties["status"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["status"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? UserPrompt
@@ -83,7 +113,13 @@ public string? UserPrompt
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["user_prompt"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["user_prompt"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public override void Validate()
diff --git a/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseProperties/CompletedSchemaGenerationResponseProperties/Status.cs b/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseProperties/CompletedSchemaGenerationResponseProperties/Status.cs
index 4d483ab..3a1b062 100644
--- a/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseProperties/CompletedSchemaGenerationResponseProperties/Status.cs
+++ b/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseProperties/CompletedSchemaGenerationResponseProperties/Status.cs
@@ -1,39 +1,40 @@
using System;
+using System.Text.Json;
using System.Text.Json.Serialization;
namespace Scrapegraphai.Models.GenerateSchema.GenerateSchemaRetrieveResponseProperties.CompletedSchemaGenerationResponseProperties;
-[JsonConverter(typeof(EnumConverter))]
-public sealed record class Status(string value) : IEnum
+[JsonConverter(typeof(StatusConverter))]
+public enum Status
{
- public static readonly Status Completed = new("completed");
-
- readonly string _value = value;
+ Completed,
+}
- public enum Value
+sealed class StatusConverter : JsonConverter
+{
+ public override Status Read(
+ ref Utf8JsonReader reader,
+ Type typeToConvert,
+ JsonSerializerOptions options
+ )
{
- Completed,
- }
-
- public Value Known() =>
- _value switch
+ return JsonSerializer.Deserialize(ref reader, options) switch
{
- "completed" => Value.Completed,
- _ => throw new ArgumentOutOfRangeException(nameof(_value)),
+ "completed" => Status.Completed,
+ _ => (Status)(-1),
};
-
- public string Raw()
- {
- return _value;
- }
-
- public void Validate()
- {
- Known();
}
- public static Status FromRaw(string value)
+ public override void Write(Utf8JsonWriter writer, Status value, JsonSerializerOptions options)
{
- return new(value);
+ JsonSerializer.Serialize(
+ writer,
+ value switch
+ {
+ Status.Completed => "completed",
+ _ => throw new ArgumentOutOfRangeException(nameof(value)),
+ },
+ options
+ );
}
}
diff --git a/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseProperties/FailedSchemaGenerationResponse.cs b/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseProperties/FailedSchemaGenerationResponse.cs
index 71a0b4b..9249278 100644
--- a/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseProperties/FailedSchemaGenerationResponse.cs
+++ b/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseProperties/FailedSchemaGenerationResponse.cs
@@ -2,7 +2,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Text.Json;
using System.Text.Json.Serialization;
-using FailedSchemaGenerationResponseProperties = Scrapegraphai.Models.GenerateSchema.GenerateSchemaRetrieveResponseProperties.FailedSchemaGenerationResponseProperties;
+using Scrapegraphai.Models.GenerateSchema.GenerateSchemaRetrieveResponseProperties.FailedSchemaGenerationResponseProperties;
namespace Scrapegraphai.Models.GenerateSchema.GenerateSchemaRetrieveResponseProperties;
@@ -20,7 +20,13 @@ public string? Error
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["error"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["error"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public JsonElement? GeneratedSchema
@@ -32,7 +38,13 @@ public JsonElement? GeneratedSchema
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["generated_schema"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["generated_schema"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? RefinedPrompt
@@ -44,7 +56,13 @@ public string? RefinedPrompt
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["refined_prompt"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["refined_prompt"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? RequestID
@@ -56,22 +74,34 @@ public string? RequestID
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["request_id"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["request_id"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
- public FailedSchemaGenerationResponseProperties::Status? Status
+ public ApiEnum? Status
{
get
{
if (!this.Properties.TryGetValue("status", out JsonElement element))
return null;
- return JsonSerializer.Deserialize(
+ return JsonSerializer.Deserialize?>(
element,
ModelBase.SerializerOptions
);
}
- set { this.Properties["status"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["status"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? UserPrompt
@@ -83,7 +113,13 @@ public string? UserPrompt
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["user_prompt"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["user_prompt"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public override void Validate()
diff --git a/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseProperties/FailedSchemaGenerationResponseProperties/Status.cs b/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseProperties/FailedSchemaGenerationResponseProperties/Status.cs
index a48da7f..7a7d4c6 100644
--- a/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseProperties/FailedSchemaGenerationResponseProperties/Status.cs
+++ b/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseProperties/FailedSchemaGenerationResponseProperties/Status.cs
@@ -1,39 +1,40 @@
using System;
+using System.Text.Json;
using System.Text.Json.Serialization;
namespace Scrapegraphai.Models.GenerateSchema.GenerateSchemaRetrieveResponseProperties.FailedSchemaGenerationResponseProperties;
-[JsonConverter(typeof(EnumConverter))]
-public sealed record class Status(string value) : IEnum
+[JsonConverter(typeof(StatusConverter))]
+public enum Status
{
- public static readonly Status Failed = new("failed");
-
- readonly string _value = value;
+ Failed,
+}
- public enum Value
+sealed class StatusConverter : JsonConverter
+{
+ public override Status Read(
+ ref Utf8JsonReader reader,
+ Type typeToConvert,
+ JsonSerializerOptions options
+ )
{
- Failed,
- }
-
- public Value Known() =>
- _value switch
+ return JsonSerializer.Deserialize(ref reader, options) switch
{
- "failed" => Value.Failed,
- _ => throw new ArgumentOutOfRangeException(nameof(_value)),
+ "failed" => Status.Failed,
+ _ => (Status)(-1),
};
-
- public string Raw()
- {
- return _value;
- }
-
- public void Validate()
- {
- Known();
}
- public static Status FromRaw(string value)
+ public override void Write(Utf8JsonWriter writer, Status value, JsonSerializerOptions options)
{
- return new(value);
+ JsonSerializer.Serialize(
+ writer,
+ value switch
+ {
+ Status.Failed => "failed",
+ _ => throw new ArgumentOutOfRangeException(nameof(value)),
+ },
+ options
+ );
}
}
diff --git a/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseVariants/All.cs b/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseVariants/All.cs
index 34ed2bc..08d60fd 100644
--- a/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseVariants/All.cs
+++ b/src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponseVariants/All.cs
@@ -1,14 +1,7 @@
-using System.Text.Json.Serialization;
using GenerateSchemaRetrieveResponseProperties = Scrapegraphai.Models.GenerateSchema.GenerateSchemaRetrieveResponseProperties;
namespace Scrapegraphai.Models.GenerateSchema.GenerateSchemaRetrieveResponseVariants;
-[JsonConverter(
- typeof(VariantConverter<
- CompletedSchemaGenerationResponse,
- GenerateSchemaRetrieveResponseProperties::CompletedSchemaGenerationResponse
- >)
-)]
public sealed record class CompletedSchemaGenerationResponse(
GenerateSchemaRetrieveResponseProperties::CompletedSchemaGenerationResponse Value
)
@@ -31,12 +24,6 @@ public override void Validate()
}
}
-[JsonConverter(
- typeof(VariantConverter<
- FailedSchemaGenerationResponse,
- GenerateSchemaRetrieveResponseProperties::FailedSchemaGenerationResponse
- >)
-)]
public sealed record class FailedSchemaGenerationResponse(
GenerateSchemaRetrieveResponseProperties::FailedSchemaGenerationResponse Value
)
diff --git a/src/Scrapegraphai/Models/Healthz/HealthzCheckResponse.cs b/src/Scrapegraphai/Models/Healthz/HealthzCheckResponse.cs
index c0add17..db7b0ff 100644
--- a/src/Scrapegraphai/Models/Healthz/HealthzCheckResponse.cs
+++ b/src/Scrapegraphai/Models/Healthz/HealthzCheckResponse.cs
@@ -20,7 +20,13 @@ public Dictionary? Services
ModelBase.SerializerOptions
);
}
- set { this.Properties["services"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["services"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? Status
@@ -32,7 +38,13 @@ public string? Status
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["status"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["status"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public override void Validate()
diff --git a/src/Scrapegraphai/Models/Markdownify/CompletedMarkdownify.cs b/src/Scrapegraphai/Models/Markdownify/CompletedMarkdownify.cs
index 57e9bb3..3da8a70 100644
--- a/src/Scrapegraphai/Models/Markdownify/CompletedMarkdownify.cs
+++ b/src/Scrapegraphai/Models/Markdownify/CompletedMarkdownify.cs
@@ -2,7 +2,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Text.Json;
using System.Text.Json.Serialization;
-using CompletedMarkdownifyProperties = Scrapegraphai.Models.Markdownify.CompletedMarkdownifyProperties;
+using Scrapegraphai.Models.Markdownify.CompletedMarkdownifyProperties;
namespace Scrapegraphai.Models.Markdownify;
@@ -18,7 +18,13 @@ public string? Error
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["error"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["error"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? RequestID
@@ -30,7 +36,13 @@ public string? RequestID
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["request_id"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["request_id"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
///
@@ -45,22 +57,34 @@ public string? Result
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["result"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["result"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
- public CompletedMarkdownifyProperties::Status? Status
+ public ApiEnum? Status
{
get
{
if (!this.Properties.TryGetValue("status", out JsonElement element))
return null;
- return JsonSerializer.Deserialize(
+ return JsonSerializer.Deserialize?>(
element,
ModelBase.SerializerOptions
);
}
- set { this.Properties["status"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["status"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? WebsiteURL
@@ -72,7 +96,13 @@ public string? WebsiteURL
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["website_url"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["website_url"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public override void Validate()
diff --git a/src/Scrapegraphai/Models/Markdownify/CompletedMarkdownifyProperties/Status.cs b/src/Scrapegraphai/Models/Markdownify/CompletedMarkdownifyProperties/Status.cs
index 120745c..30e9d31 100644
--- a/src/Scrapegraphai/Models/Markdownify/CompletedMarkdownifyProperties/Status.cs
+++ b/src/Scrapegraphai/Models/Markdownify/CompletedMarkdownifyProperties/Status.cs
@@ -1,47 +1,46 @@
using System;
+using System.Text.Json;
using System.Text.Json.Serialization;
namespace Scrapegraphai.Models.Markdownify.CompletedMarkdownifyProperties;
-[JsonConverter(typeof(EnumConverter))]
-public sealed record class Status(string value) : IEnum
+[JsonConverter(typeof(StatusConverter))]
+public enum Status
{
- public static readonly Status Queued = new("queued");
-
- public static readonly Status Processing = new("processing");
-
- public static readonly Status Completed = new("completed");
-
- readonly string _value = value;
+ Queued,
+ Processing,
+ Completed,
+}
- public enum Value
+sealed class StatusConverter : JsonConverter
+{
+ public override Status Read(
+ ref Utf8JsonReader reader,
+ Type typeToConvert,
+ JsonSerializerOptions options
+ )
{
- Queued,
- Processing,
- Completed,
- }
-
- public Value Known() =>
- _value switch
+ return JsonSerializer.Deserialize(ref reader, options) switch
{
- "queued" => Value.Queued,
- "processing" => Value.Processing,
- "completed" => Value.Completed,
- _ => throw new ArgumentOutOfRangeException(nameof(_value)),
+ "queued" => Status.Queued,
+ "processing" => Status.Processing,
+ "completed" => Status.Completed,
+ _ => (Status)(-1),
};
-
- public string Raw()
- {
- return _value;
- }
-
- public void Validate()
- {
- Known();
}
- public static Status FromRaw(string value)
+ public override void Write(Utf8JsonWriter writer, Status value, JsonSerializerOptions options)
{
- return new(value);
+ JsonSerializer.Serialize(
+ writer,
+ value switch
+ {
+ Status.Queued => "queued",
+ Status.Processing => "processing",
+ Status.Completed => "completed",
+ _ => throw new ArgumentOutOfRangeException(nameof(value)),
+ },
+ options
+ );
}
}
diff --git a/src/Scrapegraphai/Models/Markdownify/MarkdownifyConvertParams.cs b/src/Scrapegraphai/Models/Markdownify/MarkdownifyConvertParams.cs
index d7116a1..40334ec 100644
--- a/src/Scrapegraphai/Models/Markdownify/MarkdownifyConvertParams.cs
+++ b/src/Scrapegraphai/Models/Markdownify/MarkdownifyConvertParams.cs
@@ -26,7 +26,13 @@ public required string WebsiteURL
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions)
?? throw new ArgumentNullException("website_url");
}
- set { this.BodyProperties["website_url"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.BodyProperties["website_url"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public Dictionary? Headers
@@ -41,7 +47,13 @@ public Dictionary? Headers
ModelBase.SerializerOptions
);
}
- set { this.BodyProperties["headers"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.BodyProperties["headers"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
///
@@ -56,7 +68,13 @@ public List? Steps
return JsonSerializer.Deserialize?>(element, ModelBase.SerializerOptions);
}
- set { this.BodyProperties["steps"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.BodyProperties["steps"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public override Uri Url(IScrapegraphaiClient client)
diff --git a/src/Scrapegraphai/Models/Markdownify/MarkdownifyRetrieveStatusResponse.cs b/src/Scrapegraphai/Models/Markdownify/MarkdownifyRetrieveStatusResponse.cs
index 14cbb10..cc52c8e 100644
--- a/src/Scrapegraphai/Models/Markdownify/MarkdownifyRetrieveStatusResponse.cs
+++ b/src/Scrapegraphai/Models/Markdownify/MarkdownifyRetrieveStatusResponse.cs
@@ -1,20 +1,147 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Text.Json;
using System.Text.Json.Serialization;
-using MarkdownifyRetrieveStatusResponseProperties = Scrapegraphai.Models.Markdownify.MarkdownifyRetrieveStatusResponseProperties;
+using Scrapegraphai.Models.Markdownify.MarkdownifyRetrieveStatusResponseProperties;
using MarkdownifyRetrieveStatusResponseVariants = Scrapegraphai.Models.Markdownify.MarkdownifyRetrieveStatusResponseVariants;
namespace Scrapegraphai.Models.Markdownify;
-[JsonConverter(typeof(UnionConverter))]
+[JsonConverter(typeof(MarkdownifyRetrieveStatusResponseConverter))]
public abstract record class MarkdownifyRetrieveStatusResponse
{
internal MarkdownifyRetrieveStatusResponse() { }
public static implicit operator MarkdownifyRetrieveStatusResponse(CompletedMarkdownify value) =>
- new MarkdownifyRetrieveStatusResponseVariants::CompletedMarkdownifyVariant(value);
+ new MarkdownifyRetrieveStatusResponseVariants::CompletedMarkdownify(value);
public static implicit operator MarkdownifyRetrieveStatusResponse(
- MarkdownifyRetrieveStatusResponseProperties::FailedMarkdownifyResponse value
+ FailedMarkdownifyResponse value
) => new MarkdownifyRetrieveStatusResponseVariants::FailedMarkdownifyResponse(value);
+ public bool TryPickCompletedMarkdownify([NotNullWhen(true)] out CompletedMarkdownify? value)
+ {
+ value = (this as MarkdownifyRetrieveStatusResponseVariants::CompletedMarkdownify)?.Value;
+ return value != null;
+ }
+
+ public bool TryPickFailedMarkdownify([NotNullWhen(true)] out FailedMarkdownifyResponse? value)
+ {
+ value = (
+ this as MarkdownifyRetrieveStatusResponseVariants::FailedMarkdownifyResponse
+ )?.Value;
+ return value != null;
+ }
+
+ public void Switch(
+ Action completedMarkdownify,
+ Action failedMarkdownify
+ )
+ {
+ switch (this)
+ {
+ case MarkdownifyRetrieveStatusResponseVariants::CompletedMarkdownify inner:
+ completedMarkdownify(inner);
+ break;
+ case MarkdownifyRetrieveStatusResponseVariants::FailedMarkdownifyResponse inner:
+ failedMarkdownify(inner);
+ break;
+ default:
+ throw new InvalidOperationException();
+ }
+ }
+
+ public T Match(
+ Func<
+ MarkdownifyRetrieveStatusResponseVariants::CompletedMarkdownify,
+ T
+ > completedMarkdownify,
+ Func<
+ MarkdownifyRetrieveStatusResponseVariants::FailedMarkdownifyResponse,
+ T
+ > failedMarkdownify
+ )
+ {
+ return this switch
+ {
+ MarkdownifyRetrieveStatusResponseVariants::CompletedMarkdownify inner =>
+ completedMarkdownify(inner),
+ MarkdownifyRetrieveStatusResponseVariants::FailedMarkdownifyResponse inner =>
+ failedMarkdownify(inner),
+ _ => throw new InvalidOperationException(),
+ };
+ }
+
public abstract void Validate();
}
+
+sealed class MarkdownifyRetrieveStatusResponseConverter
+ : JsonConverter
+{
+ public override MarkdownifyRetrieveStatusResponse? Read(
+ ref Utf8JsonReader reader,
+ Type typeToConvert,
+ JsonSerializerOptions options
+ )
+ {
+ List exceptions = [];
+
+ try
+ {
+ var deserialized = JsonSerializer.Deserialize(
+ ref reader,
+ options
+ );
+ if (deserialized != null)
+ {
+ return new MarkdownifyRetrieveStatusResponseVariants::CompletedMarkdownify(
+ deserialized
+ );
+ }
+ }
+ catch (JsonException e)
+ {
+ exceptions.Add(e);
+ }
+
+ try
+ {
+ var deserialized = JsonSerializer.Deserialize(
+ ref reader,
+ options
+ );
+ if (deserialized != null)
+ {
+ return new MarkdownifyRetrieveStatusResponseVariants::FailedMarkdownifyResponse(
+ deserialized
+ );
+ }
+ }
+ catch (JsonException e)
+ {
+ exceptions.Add(e);
+ }
+
+ throw new AggregateException(exceptions);
+ }
+
+ public override void Write(
+ Utf8JsonWriter writer,
+ MarkdownifyRetrieveStatusResponse value,
+ JsonSerializerOptions options
+ )
+ {
+ object variant = value switch
+ {
+ MarkdownifyRetrieveStatusResponseVariants::CompletedMarkdownify(
+ var completedMarkdownify
+ ) => completedMarkdownify,
+ MarkdownifyRetrieveStatusResponseVariants::FailedMarkdownifyResponse(
+ var failedMarkdownify
+ ) => failedMarkdownify,
+ _ => throw new ArgumentOutOfRangeException(nameof(value)),
+ };
+ JsonSerializer.Serialize(writer, variant, options);
+ }
+}
diff --git a/src/Scrapegraphai/Models/Markdownify/MarkdownifyRetrieveStatusResponseProperties/FailedMarkdownifyResponse.cs b/src/Scrapegraphai/Models/Markdownify/MarkdownifyRetrieveStatusResponseProperties/FailedMarkdownifyResponse.cs
index d6c3a9f..84349bf 100644
--- a/src/Scrapegraphai/Models/Markdownify/MarkdownifyRetrieveStatusResponseProperties/FailedMarkdownifyResponse.cs
+++ b/src/Scrapegraphai/Models/Markdownify/MarkdownifyRetrieveStatusResponseProperties/FailedMarkdownifyResponse.cs
@@ -2,7 +2,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Text.Json;
using System.Text.Json.Serialization;
-using FailedMarkdownifyResponseProperties = Scrapegraphai.Models.Markdownify.MarkdownifyRetrieveStatusResponseProperties.FailedMarkdownifyResponseProperties;
+using Scrapegraphai.Models.Markdownify.MarkdownifyRetrieveStatusResponseProperties.FailedMarkdownifyResponseProperties;
namespace Scrapegraphai.Models.Markdownify.MarkdownifyRetrieveStatusResponseProperties;
@@ -20,7 +20,13 @@ public string? Error
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["error"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["error"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? RequestID
@@ -32,7 +38,13 @@ public string? RequestID
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["request_id"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["request_id"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? Result
@@ -44,22 +56,34 @@ public string? Result
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["result"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["result"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
- public FailedMarkdownifyResponseProperties::Status? Status
+ public ApiEnum? Status
{
get
{
if (!this.Properties.TryGetValue("status", out JsonElement element))
return null;
- return JsonSerializer.Deserialize(
+ return JsonSerializer.Deserialize?>(
element,
ModelBase.SerializerOptions
);
}
- set { this.Properties["status"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["status"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? WebsiteURL
@@ -71,7 +95,13 @@ public string? WebsiteURL
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["website_url"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["website_url"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public override void Validate()
diff --git a/src/Scrapegraphai/Models/Markdownify/MarkdownifyRetrieveStatusResponseProperties/FailedMarkdownifyResponseProperties/Status.cs b/src/Scrapegraphai/Models/Markdownify/MarkdownifyRetrieveStatusResponseProperties/FailedMarkdownifyResponseProperties/Status.cs
index 20130f5..536d594 100644
--- a/src/Scrapegraphai/Models/Markdownify/MarkdownifyRetrieveStatusResponseProperties/FailedMarkdownifyResponseProperties/Status.cs
+++ b/src/Scrapegraphai/Models/Markdownify/MarkdownifyRetrieveStatusResponseProperties/FailedMarkdownifyResponseProperties/Status.cs
@@ -1,39 +1,40 @@
using System;
+using System.Text.Json;
using System.Text.Json.Serialization;
namespace Scrapegraphai.Models.Markdownify.MarkdownifyRetrieveStatusResponseProperties.FailedMarkdownifyResponseProperties;
-[JsonConverter(typeof(EnumConverter))]
-public sealed record class Status(string value) : IEnum
+[JsonConverter(typeof(StatusConverter))]
+public enum Status
{
- public static readonly Status Failed = new("failed");
-
- readonly string _value = value;
+ Failed,
+}
- public enum Value
+sealed class StatusConverter : JsonConverter
+{
+ public override Status Read(
+ ref Utf8JsonReader reader,
+ Type typeToConvert,
+ JsonSerializerOptions options
+ )
{
- Failed,
- }
-
- public Value Known() =>
- _value switch
+ return JsonSerializer.Deserialize(ref reader, options) switch
{
- "failed" => Value.Failed,
- _ => throw new ArgumentOutOfRangeException(nameof(_value)),
+ "failed" => Status.Failed,
+ _ => (Status)(-1),
};
-
- public string Raw()
- {
- return _value;
- }
-
- public void Validate()
- {
- Known();
}
- public static Status FromRaw(string value)
+ public override void Write(Utf8JsonWriter writer, Status value, JsonSerializerOptions options)
{
- return new(value);
+ JsonSerializer.Serialize(
+ writer,
+ value switch
+ {
+ Status.Failed => "failed",
+ _ => throw new ArgumentOutOfRangeException(nameof(value)),
+ },
+ options
+ );
}
}
diff --git a/src/Scrapegraphai/Models/Markdownify/MarkdownifyRetrieveStatusResponseVariants/All.cs b/src/Scrapegraphai/Models/Markdownify/MarkdownifyRetrieveStatusResponseVariants/All.cs
index 220c593..9a0335a 100644
--- a/src/Scrapegraphai/Models/Markdownify/MarkdownifyRetrieveStatusResponseVariants/All.cs
+++ b/src/Scrapegraphai/Models/Markdownify/MarkdownifyRetrieveStatusResponseVariants/All.cs
@@ -1,14 +1,13 @@
-using System.Text.Json.Serialization;
+using Markdownify = Scrapegraphai.Models.Markdownify;
using MarkdownifyRetrieveStatusResponseProperties = Scrapegraphai.Models.Markdownify.MarkdownifyRetrieveStatusResponseProperties;
namespace Scrapegraphai.Models.Markdownify.MarkdownifyRetrieveStatusResponseVariants;
-[JsonConverter(typeof(VariantConverter))]
-public sealed record class CompletedMarkdownifyVariant(CompletedMarkdownify Value)
- : MarkdownifyRetrieveStatusResponse,
- IVariant
+public sealed record class CompletedMarkdownify(Markdownify::CompletedMarkdownify Value)
+ : Markdownify::MarkdownifyRetrieveStatusResponse,
+ IVariant
{
- public static CompletedMarkdownifyVariant From(CompletedMarkdownify value)
+ public static CompletedMarkdownify From(Markdownify::CompletedMarkdownify value)
{
return new(value);
}
@@ -19,16 +18,10 @@ public override void Validate()
}
}
-[JsonConverter(
- typeof(VariantConverter<
- FailedMarkdownifyResponse,
- MarkdownifyRetrieveStatusResponseProperties::FailedMarkdownifyResponse
- >)
-)]
public sealed record class FailedMarkdownifyResponse(
MarkdownifyRetrieveStatusResponseProperties::FailedMarkdownifyResponse Value
)
- : MarkdownifyRetrieveStatusResponse,
+ : Markdownify::MarkdownifyRetrieveStatusResponse,
IVariant<
FailedMarkdownifyResponse,
MarkdownifyRetrieveStatusResponseProperties::FailedMarkdownifyResponse
diff --git a/src/Scrapegraphai/Models/Searchscraper/CompletedSearchScraper.cs b/src/Scrapegraphai/Models/Searchscraper/CompletedSearchScraper.cs
index afc1c90..af07cd1 100644
--- a/src/Scrapegraphai/Models/Searchscraper/CompletedSearchScraper.cs
+++ b/src/Scrapegraphai/Models/Searchscraper/CompletedSearchScraper.cs
@@ -2,7 +2,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Text.Json;
using System.Text.Json.Serialization;
-using CompletedSearchScraperProperties = Scrapegraphai.Models.Searchscraper.CompletedSearchScraperProperties;
+using Scrapegraphai.Models.Searchscraper.CompletedSearchScraperProperties;
namespace Scrapegraphai.Models.Searchscraper;
@@ -18,7 +18,13 @@ public string? Error
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["error"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["error"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public long? NumResults
@@ -30,7 +36,13 @@ public long? NumResults
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["num_results"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["num_results"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
///
@@ -45,7 +57,13 @@ public List? ReferenceURLs
return JsonSerializer.Deserialize?>(element, ModelBase.SerializerOptions);
}
- set { this.Properties["reference_urls"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["reference_urls"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? RequestID
@@ -57,7 +75,13 @@ public string? RequestID
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["request_id"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["request_id"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
///
@@ -72,22 +96,34 @@ public JsonElement? Result
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["result"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["result"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
- public CompletedSearchScraperProperties::Status? Status
+ public ApiEnum? Status
{
get
{
if (!this.Properties.TryGetValue("status", out JsonElement element))
return null;
- return JsonSerializer.Deserialize(
+ return JsonSerializer.Deserialize?>(
element,
ModelBase.SerializerOptions
);
}
- set { this.Properties["status"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["status"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? UserPrompt
@@ -99,7 +135,13 @@ public string? UserPrompt
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["user_prompt"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["user_prompt"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public override void Validate()
diff --git a/src/Scrapegraphai/Models/Searchscraper/CompletedSearchScraperProperties/Status.cs b/src/Scrapegraphai/Models/Searchscraper/CompletedSearchScraperProperties/Status.cs
index 30eca60..61d4c33 100644
--- a/src/Scrapegraphai/Models/Searchscraper/CompletedSearchScraperProperties/Status.cs
+++ b/src/Scrapegraphai/Models/Searchscraper/CompletedSearchScraperProperties/Status.cs
@@ -1,47 +1,46 @@
using System;
+using System.Text.Json;
using System.Text.Json.Serialization;
namespace Scrapegraphai.Models.Searchscraper.CompletedSearchScraperProperties;
-[JsonConverter(typeof(EnumConverter))]
-public sealed record class Status(string value) : IEnum
+[JsonConverter(typeof(StatusConverter))]
+public enum Status
{
- public static readonly Status Queued = new("queued");
-
- public static readonly Status Processing = new("processing");
-
- public static readonly Status Completed = new("completed");
-
- readonly string _value = value;
+ Queued,
+ Processing,
+ Completed,
+}
- public enum Value
+sealed class StatusConverter : JsonConverter
+{
+ public override Status Read(
+ ref Utf8JsonReader reader,
+ Type typeToConvert,
+ JsonSerializerOptions options
+ )
{
- Queued,
- Processing,
- Completed,
- }
-
- public Value Known() =>
- _value switch
+ return JsonSerializer.Deserialize(ref reader, options) switch
{
- "queued" => Value.Queued,
- "processing" => Value.Processing,
- "completed" => Value.Completed,
- _ => throw new ArgumentOutOfRangeException(nameof(_value)),
+ "queued" => Status.Queued,
+ "processing" => Status.Processing,
+ "completed" => Status.Completed,
+ _ => (Status)(-1),
};
-
- public string Raw()
- {
- return _value;
- }
-
- public void Validate()
- {
- Known();
}
- public static Status FromRaw(string value)
+ public override void Write(Utf8JsonWriter writer, Status value, JsonSerializerOptions options)
{
- return new(value);
+ JsonSerializer.Serialize(
+ writer,
+ value switch
+ {
+ Status.Queued => "queued",
+ Status.Processing => "processing",
+ Status.Completed => "completed",
+ _ => throw new ArgumentOutOfRangeException(nameof(value)),
+ },
+ options
+ );
}
}
diff --git a/src/Scrapegraphai/Models/Searchscraper/SearchscraperCreateParams.cs b/src/Scrapegraphai/Models/Searchscraper/SearchscraperCreateParams.cs
index bd23365..0b3ae3f 100644
--- a/src/Scrapegraphai/Models/Searchscraper/SearchscraperCreateParams.cs
+++ b/src/Scrapegraphai/Models/Searchscraper/SearchscraperCreateParams.cs
@@ -28,7 +28,13 @@ public required string UserPrompt
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions)
?? throw new ArgumentNullException("user_prompt");
}
- set { this.BodyProperties["user_prompt"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.BodyProperties["user_prompt"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public Dictionary? Headers
@@ -43,7 +49,13 @@ public Dictionary? Headers
ModelBase.SerializerOptions
);
}
- set { this.BodyProperties["headers"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.BodyProperties["headers"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
///
@@ -58,7 +70,13 @@ public long? NumResults
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.BodyProperties["num_results"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.BodyProperties["num_results"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
///
@@ -73,7 +91,13 @@ public JsonElement? OutputSchema
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.BodyProperties["output_schema"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.BodyProperties["output_schema"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public override Uri Url(IScrapegraphaiClient client)
diff --git a/src/Scrapegraphai/Models/Searchscraper/SearchscraperRetrieveStatusResponse.cs b/src/Scrapegraphai/Models/Searchscraper/SearchscraperRetrieveStatusResponse.cs
index fa4cd94..876a0a6 100644
--- a/src/Scrapegraphai/Models/Searchscraper/SearchscraperRetrieveStatusResponse.cs
+++ b/src/Scrapegraphai/Models/Searchscraper/SearchscraperRetrieveStatusResponse.cs
@@ -1,21 +1,152 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Text.Json;
using System.Text.Json.Serialization;
-using SearchscraperRetrieveStatusResponseProperties = Scrapegraphai.Models.Searchscraper.SearchscraperRetrieveStatusResponseProperties;
+using Scrapegraphai.Models.Searchscraper.SearchscraperRetrieveStatusResponseProperties;
using SearchscraperRetrieveStatusResponseVariants = Scrapegraphai.Models.Searchscraper.SearchscraperRetrieveStatusResponseVariants;
namespace Scrapegraphai.Models.Searchscraper;
-[JsonConverter(typeof(UnionConverter))]
+[JsonConverter(typeof(SearchscraperRetrieveStatusResponseConverter))]
public abstract record class SearchscraperRetrieveStatusResponse
{
internal SearchscraperRetrieveStatusResponse() { }
public static implicit operator SearchscraperRetrieveStatusResponse(
CompletedSearchScraper value
- ) => new SearchscraperRetrieveStatusResponseVariants::CompletedSearchScraperVariant(value);
+ ) => new SearchscraperRetrieveStatusResponseVariants::CompletedSearchScraper(value);
public static implicit operator SearchscraperRetrieveStatusResponse(
- SearchscraperRetrieveStatusResponseProperties::FailedSearchScraperResponse value
+ FailedSearchScraperResponse value
) => new SearchscraperRetrieveStatusResponseVariants::FailedSearchScraperResponse(value);
+ public bool TryPickCompletedSearchScraper([NotNullWhen(true)] out CompletedSearchScraper? value)
+ {
+ value = (
+ this as SearchscraperRetrieveStatusResponseVariants::CompletedSearchScraper
+ )?.Value;
+ return value != null;
+ }
+
+ public bool TryPickFailedSearchScraper(
+ [NotNullWhen(true)] out FailedSearchScraperResponse? value
+ )
+ {
+ value = (
+ this as SearchscraperRetrieveStatusResponseVariants::FailedSearchScraperResponse
+ )?.Value;
+ return value != null;
+ }
+
+ public void Switch(
+ Action completedSearchScraper,
+ Action failedSearchScraper
+ )
+ {
+ switch (this)
+ {
+ case SearchscraperRetrieveStatusResponseVariants::CompletedSearchScraper inner:
+ completedSearchScraper(inner);
+ break;
+ case SearchscraperRetrieveStatusResponseVariants::FailedSearchScraperResponse inner:
+ failedSearchScraper(inner);
+ break;
+ default:
+ throw new InvalidOperationException();
+ }
+ }
+
+ public T Match(
+ Func<
+ SearchscraperRetrieveStatusResponseVariants::CompletedSearchScraper,
+ T
+ > completedSearchScraper,
+ Func<
+ SearchscraperRetrieveStatusResponseVariants::FailedSearchScraperResponse,
+ T
+ > failedSearchScraper
+ )
+ {
+ return this switch
+ {
+ SearchscraperRetrieveStatusResponseVariants::CompletedSearchScraper inner =>
+ completedSearchScraper(inner),
+ SearchscraperRetrieveStatusResponseVariants::FailedSearchScraperResponse inner =>
+ failedSearchScraper(inner),
+ _ => throw new InvalidOperationException(),
+ };
+ }
+
public abstract void Validate();
}
+
+sealed class SearchscraperRetrieveStatusResponseConverter
+ : JsonConverter
+{
+ public override SearchscraperRetrieveStatusResponse? Read(
+ ref Utf8JsonReader reader,
+ Type typeToConvert,
+ JsonSerializerOptions options
+ )
+ {
+ List exceptions = [];
+
+ try
+ {
+ var deserialized = JsonSerializer.Deserialize(
+ ref reader,
+ options
+ );
+ if (deserialized != null)
+ {
+ return new SearchscraperRetrieveStatusResponseVariants::CompletedSearchScraper(
+ deserialized
+ );
+ }
+ }
+ catch (JsonException e)
+ {
+ exceptions.Add(e);
+ }
+
+ try
+ {
+ var deserialized = JsonSerializer.Deserialize(
+ ref reader,
+ options
+ );
+ if (deserialized != null)
+ {
+ return new SearchscraperRetrieveStatusResponseVariants::FailedSearchScraperResponse(
+ deserialized
+ );
+ }
+ }
+ catch (JsonException e)
+ {
+ exceptions.Add(e);
+ }
+
+ throw new AggregateException(exceptions);
+ }
+
+ public override void Write(
+ Utf8JsonWriter writer,
+ SearchscraperRetrieveStatusResponse value,
+ JsonSerializerOptions options
+ )
+ {
+ object variant = value switch
+ {
+ SearchscraperRetrieveStatusResponseVariants::CompletedSearchScraper(
+ var completedSearchScraper
+ ) => completedSearchScraper,
+ SearchscraperRetrieveStatusResponseVariants::FailedSearchScraperResponse(
+ var failedSearchScraper
+ ) => failedSearchScraper,
+ _ => throw new ArgumentOutOfRangeException(nameof(value)),
+ };
+ JsonSerializer.Serialize(writer, variant, options);
+ }
+}
diff --git a/src/Scrapegraphai/Models/Searchscraper/SearchscraperRetrieveStatusResponseProperties/FailedSearchScraperResponse.cs b/src/Scrapegraphai/Models/Searchscraper/SearchscraperRetrieveStatusResponseProperties/FailedSearchScraperResponse.cs
index a851e8c..fd77c26 100644
--- a/src/Scrapegraphai/Models/Searchscraper/SearchscraperRetrieveStatusResponseProperties/FailedSearchScraperResponse.cs
+++ b/src/Scrapegraphai/Models/Searchscraper/SearchscraperRetrieveStatusResponseProperties/FailedSearchScraperResponse.cs
@@ -2,7 +2,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Text.Json;
using System.Text.Json.Serialization;
-using FailedSearchScraperResponseProperties = Scrapegraphai.Models.Searchscraper.SearchscraperRetrieveStatusResponseProperties.FailedSearchScraperResponseProperties;
+using Scrapegraphai.Models.Searchscraper.SearchscraperRetrieveStatusResponseProperties.FailedSearchScraperResponseProperties;
namespace Scrapegraphai.Models.Searchscraper.SearchscraperRetrieveStatusResponseProperties;
@@ -20,7 +20,13 @@ public string? Error
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["error"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["error"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public long? NumResults
@@ -32,7 +38,13 @@ public long? NumResults
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["num_results"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["num_results"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public List? ReferenceURLs
@@ -44,7 +56,13 @@ public List? ReferenceURLs
return JsonSerializer.Deserialize?>(element, ModelBase.SerializerOptions);
}
- set { this.Properties["reference_urls"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["reference_urls"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? RequestID
@@ -56,7 +74,13 @@ public string? RequestID
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["request_id"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["request_id"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public JsonElement? Result
@@ -68,22 +92,34 @@ public JsonElement? Result
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["result"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["result"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
- public FailedSearchScraperResponseProperties::Status? Status
+ public ApiEnum? Status
{
get
{
if (!this.Properties.TryGetValue("status", out JsonElement element))
return null;
- return JsonSerializer.Deserialize(
+ return JsonSerializer.Deserialize?>(
element,
ModelBase.SerializerOptions
);
}
- set { this.Properties["status"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["status"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public string? UserPrompt
@@ -95,7 +131,13 @@ public string? UserPrompt
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["user_prompt"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["user_prompt"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
public override void Validate()
diff --git a/src/Scrapegraphai/Models/Searchscraper/SearchscraperRetrieveStatusResponseProperties/FailedSearchScraperResponseProperties/Status.cs b/src/Scrapegraphai/Models/Searchscraper/SearchscraperRetrieveStatusResponseProperties/FailedSearchScraperResponseProperties/Status.cs
index 90d596e..ebb57e2 100644
--- a/src/Scrapegraphai/Models/Searchscraper/SearchscraperRetrieveStatusResponseProperties/FailedSearchScraperResponseProperties/Status.cs
+++ b/src/Scrapegraphai/Models/Searchscraper/SearchscraperRetrieveStatusResponseProperties/FailedSearchScraperResponseProperties/Status.cs
@@ -1,39 +1,40 @@
using System;
+using System.Text.Json;
using System.Text.Json.Serialization;
namespace Scrapegraphai.Models.Searchscraper.SearchscraperRetrieveStatusResponseProperties.FailedSearchScraperResponseProperties;
-[JsonConverter(typeof(EnumConverter))]
-public sealed record class Status(string value) : IEnum
+[JsonConverter(typeof(StatusConverter))]
+public enum Status
{
- public static readonly Status Failed = new("failed");
-
- readonly string _value = value;
+ Failed,
+}
- public enum Value
+sealed class StatusConverter : JsonConverter
+{
+ public override Status Read(
+ ref Utf8JsonReader reader,
+ Type typeToConvert,
+ JsonSerializerOptions options
+ )
{
- Failed,
- }
-
- public Value Known() =>
- _value switch
+ return JsonSerializer.Deserialize(ref reader, options) switch
{
- "failed" => Value.Failed,
- _ => throw new ArgumentOutOfRangeException(nameof(_value)),
+ "failed" => Status.Failed,
+ _ => (Status)(-1),
};
-
- public string Raw()
- {
- return _value;
- }
-
- public void Validate()
- {
- Known();
}
- public static Status FromRaw(string value)
+ public override void Write(Utf8JsonWriter writer, Status value, JsonSerializerOptions options)
{
- return new(value);
+ JsonSerializer.Serialize(
+ writer,
+ value switch
+ {
+ Status.Failed => "failed",
+ _ => throw new ArgumentOutOfRangeException(nameof(value)),
+ },
+ options
+ );
}
}
diff --git a/src/Scrapegraphai/Models/Searchscraper/SearchscraperRetrieveStatusResponseVariants/All.cs b/src/Scrapegraphai/Models/Searchscraper/SearchscraperRetrieveStatusResponseVariants/All.cs
index 0c442eb..dca8b7c 100644
--- a/src/Scrapegraphai/Models/Searchscraper/SearchscraperRetrieveStatusResponseVariants/All.cs
+++ b/src/Scrapegraphai/Models/Searchscraper/SearchscraperRetrieveStatusResponseVariants/All.cs
@@ -1,14 +1,13 @@
-using System.Text.Json.Serialization;
+using Searchscraper = Scrapegraphai.Models.Searchscraper;
using SearchscraperRetrieveStatusResponseProperties = Scrapegraphai.Models.Searchscraper.SearchscraperRetrieveStatusResponseProperties;
namespace Scrapegraphai.Models.Searchscraper.SearchscraperRetrieveStatusResponseVariants;
-[JsonConverter(typeof(VariantConverter))]
-public sealed record class CompletedSearchScraperVariant(CompletedSearchScraper Value)
- : SearchscraperRetrieveStatusResponse,
- IVariant
+public sealed record class CompletedSearchScraper(Searchscraper::CompletedSearchScraper Value)
+ : Searchscraper::SearchscraperRetrieveStatusResponse,
+ IVariant
{
- public static CompletedSearchScraperVariant From(CompletedSearchScraper value)
+ public static CompletedSearchScraper From(Searchscraper::CompletedSearchScraper value)
{
return new(value);
}
@@ -19,16 +18,10 @@ public override void Validate()
}
}
-[JsonConverter(
- typeof(VariantConverter<
- FailedSearchScraperResponse,
- SearchscraperRetrieveStatusResponseProperties::FailedSearchScraperResponse
- >)
-)]
public sealed record class FailedSearchScraperResponse(
SearchscraperRetrieveStatusResponseProperties::FailedSearchScraperResponse Value
)
- : SearchscraperRetrieveStatusResponse,
+ : Searchscraper::SearchscraperRetrieveStatusResponse,
IVariant<
FailedSearchScraperResponse,
SearchscraperRetrieveStatusResponseProperties::FailedSearchScraperResponse
diff --git a/src/Scrapegraphai/Models/Smartscraper/CompletedSmartscraper.cs b/src/Scrapegraphai/Models/Smartscraper/CompletedSmartscraper.cs
index 0a92304..a624905 100644
--- a/src/Scrapegraphai/Models/Smartscraper/CompletedSmartscraper.cs
+++ b/src/Scrapegraphai/Models/Smartscraper/CompletedSmartscraper.cs
@@ -2,7 +2,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Text.Json;
using System.Text.Json.Serialization;
-using CompletedSmartscraperProperties = Scrapegraphai.Models.Smartscraper.CompletedSmartscraperProperties;
+using Scrapegraphai.Models.Smartscraper.CompletedSmartscraperProperties;
namespace Scrapegraphai.Models.Smartscraper;
@@ -21,7 +21,13 @@ public string? Error
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["error"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["error"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
///
@@ -36,7 +42,13 @@ public string? RequestID
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["request_id"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["request_id"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
///
@@ -51,25 +63,37 @@ public JsonElement? Result
return JsonSerializer.Deserialize(element, ModelBase.SerializerOptions);
}
- set { this.Properties["result"] = JsonSerializer.SerializeToElement(value); }
+ set
+ {
+ this.Properties["result"] = JsonSerializer.SerializeToElement(
+ value,
+ ModelBase.SerializerOptions
+ );
+ }
}
///
/// Processing status
///
- public CompletedSmartscraperProperties::Status? Status
+ public ApiEnum? Status
{
get
{
if (!this.Properties.TryGetValue("status", out JsonElement element))
return null;
- return JsonSerializer.Deserialize(
+ return JsonSerializer.Deserialize