Skip to content

Commit

Permalink
fix: repair the docker run command, update the type_methods to expand…
Browse files Browse the repository at this point in the history
… out the remote delegate
  • Loading branch information
Nexushunter committed Sep 2, 2023
1 parent 9c8819c commit c00b334
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 19 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/code_quality.yml
Expand Up @@ -25,7 +25,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v3
- name: Start Docker compose containers
if: ${{ matrix.work_dir }} == 'openapi-generator'
if: ${{ matrix.work_dir == 'openapi-generator' }}
run: docker-compose -f "docker-compose.yaml" up -d --build
- name: Setup Dart
uses: dart-lang/setup-dart@v1.5.0
Expand All @@ -51,7 +51,7 @@ jobs:
flags: ${{ matrix.work_dir }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
- name: Stop Docker Container
if: ${{ matrix.work_dir }} == 'openapi-generator' && always()
if: ${{ matrix.work_dir == 'openapi-generator' && always() }}
run: docker-compose -f "docker-compose.yaml" down

build:
Expand Down
Expand Up @@ -228,7 +228,8 @@ class RemoteSpec extends InputSpec {
Uri get url => Uri.parse(path);

RemoteSpec.fromMap(Map<String, dynamic> map)
: headerDelegate = map['headerDelegate'],
: headerDelegate =
map['headerDelegate'] ?? const RemoteSpecHeaderDelegate(),
super.fromMap(map);
}

Expand Down
52 changes: 37 additions & 15 deletions openapi-generator/lib/src/extensions/type_methods.dart
Expand Up @@ -3,7 +3,8 @@ import 'dart:mirrors';
import 'package:analyzer/dart/element/type.dart';
import 'package:openapi_generator/src/utils.dart';
import 'package:openapi_generator_annotations/openapi_generator_annotations.dart';
import 'package:source_gen/source_gen.dart' show ConstantReader, TypeChecker;
import 'package:source_gen/source_gen.dart'
show ConstantReader, TypeChecker, Revivable, reviveInstance;

/// Extension adding the type methods to `ConstantReader`.
extension TypeMethods on ConstantReader {
Expand Down Expand Up @@ -81,38 +82,59 @@ extension ReadProperty on ConstantReader {
return defaultValue;
}

if (v.instanceOf(TypeChecker.fromRuntime(InputSpec))) {
final map = v.revive().namedArguments.map(
(key, value) => MapEntry(
key,
convertToPropertyValue(value),
),
);

if (v.instanceOf(TypeChecker.fromRuntime(RemoteSpec))) {
return RemoteSpec.fromMap(map) as T;
if (isA(v, InputSpec)) {
final revived = v.revive();

if (isA(v, RemoteSpec)) {
final map = revived.namedArguments;
final delegate = map['headerDelegate']!;
final mapped = <String, dynamic>{
'path': convertToPropertyValue(map['path']!),
};
if (delegate.isNull) {
return RemoteSpec.fromMap(mapped) as T;
} else {
final delegateReader = ConstantReader(delegate);
if (isA(delegateReader, AWSRemoteSpecHeaderDelegate)) {
mapped['headerDelegate'] = AWSRemoteSpecHeaderDelegate.fromMap(
delegateReader.revive().namedArguments.map(
(key, value) => MapEntry(
key,
convertToPropertyValue(value),
),
),
);
}
return RemoteSpec.fromMap(mapped) as T;
}
} else {
final map = revived.namedArguments.map(
(key, value) => MapEntry(
key,
convertToPropertyValue(value),
),
);
return InputSpec.fromMap(map) as T;
}
}

if (v.instanceOf(TypeChecker.fromRuntime(AdditionalProperties))) {
if (isA(v, AdditionalProperties)) {
final map = v.revive().namedArguments.map(
(key, value) => MapEntry(
key,
convertToPropertyValue(value),
),
);
if (v.instanceOf(TypeChecker.fromRuntime(DioProperties))) {
if (isA(v, DioProperties)) {
return DioProperties.fromMap(map) as T;
} else if (v.instanceOf(TypeChecker.fromRuntime(DioAltProperties))) {
} else if (isA(v, DioAltProperties)) {
return DioAltProperties.fromMap(map) as T;
} else {
return AdditionalProperties.fromMap(map) as T;
}
}

if (v.instanceOf(TypeChecker.fromRuntime(InlineSchemaOptions))) {
if (isA(v, InlineSchemaOptions)) {
return InlineSchemaOptions.fromMap(
v.revive().namedArguments.map(
(key, value) => MapEntry(
Expand Down
10 changes: 9 additions & 1 deletion openapi-generator/test/builder_test.dart
Expand Up @@ -560,7 +560,15 @@ class TestClassConfig extends OpenapiGeneratorConfig {}
generatedOutput = await generate('''
@Openapi(
inputSpecFile: '',
inputSpec: LocalStackRemoteSpec(path: 'openapi.yaml'),
inputSpec: RemoteSpec(
path:
'http://bucket.s3.us-east-1.localhost.localstack.cloud:4566/openapi.yaml',
headerDelegate: AWSRemoteSpecHeaderDelegate(
bucket: 'bucket',
accessKeyId: 'test',
secretAccessKey: 'test',
),
),
generatorName: Generator.dio,
useNextGen: true,
cachePath: '${f.path}',
Expand Down

0 comments on commit c00b334

Please sign in to comment.