|
1 |
| -import 'package:built_collection/built_collection.dart'; |
2 |
| -import 'package:code_builder/code_builder.dart'; |
3 | 1 | import 'package:dynamite/src/builder/resolve_type.dart';
|
4 | 2 | import 'package:dynamite/src/builder/state.dart';
|
5 | 3 | import 'package:dynamite/src/helpers/dart_helpers.dart';
|
6 |
| -import 'package:dynamite/src/helpers/dynamite.dart'; |
7 | 4 | import 'package:dynamite/src/models/openapi.dart' as openapi;
|
8 | 5 | import 'package:dynamite/src/models/type_result.dart';
|
9 | 6 |
|
@@ -42,87 +39,35 @@ TypeResult? resolveMimeTypeDecode(
|
42 | 39 | return null;
|
43 | 40 | }
|
44 | 41 |
|
45 |
| -Iterable<String> resolveMimeTypeEncode( |
46 |
| - openapi.Operation operation, |
47 |
| - openapi.OpenAPI spec, |
48 |
| - State state, |
49 |
| - String identifier, |
50 |
| - ListBuilder<Parameter> b, |
51 |
| -) sync* { |
52 |
| - if (operation.requestBody != null) { |
53 |
| - if (operation.requestBody!.content!.length > 1) { |
54 |
| - print('Can not work with multiple mime types right now. Using the first supported.'); |
55 |
| - } |
56 |
| - for (final content in operation.requestBody!.content!.entries) { |
57 |
| - final mimeType = content.key; |
58 |
| - final mediaType = content.value; |
59 |
| - |
60 |
| - yield "_headers['Content-Type'] = '$mimeType';"; |
61 |
| - |
62 |
| - final dartParameterNullable = isDartParameterNullable( |
63 |
| - operation.requestBody!.required, |
64 |
| - mediaType.schema, |
65 |
| - ); |
66 |
| - |
67 |
| - final result = resolveType( |
68 |
| - spec, |
69 |
| - state, |
70 |
| - toDartName('$identifier-request-$mimeType', className: true), |
71 |
| - mediaType.schema!, |
72 |
| - nullable: dartParameterNullable, |
73 |
| - ); |
74 |
| - final parameterName = toDartName(result.name); |
75 |
| - switch (mimeType) { |
76 |
| - case 'application/json': |
77 |
| - case 'application/x-www-form-urlencoded': |
78 |
| - final dartParameterRequired = isRequired( |
79 |
| - operation.requestBody!.required, |
80 |
| - mediaType.schema, |
81 |
| - ); |
82 |
| - b.add( |
83 |
| - Parameter( |
84 |
| - (b) => b |
85 |
| - ..name = parameterName |
86 |
| - ..type = refer(result.nullableName) |
87 |
| - ..named = true |
88 |
| - ..required = dartParameterRequired, |
89 |
| - ), |
90 |
| - ); |
91 |
| - |
92 |
| - if (dartParameterNullable) { |
93 |
| - yield 'if ($parameterName != null) {'; |
94 |
| - } |
95 |
| - yield '_body = utf8.encode(${result.encode(parameterName, mimeType: mimeType)});'; |
96 |
| - if (dartParameterNullable) { |
97 |
| - yield '}'; |
98 |
| - } |
99 |
| - return; |
100 |
| - case 'application/octet-stream': |
101 |
| - final dartParameterRequired = isRequired( |
102 |
| - operation.requestBody!.required, |
103 |
| - mediaType.schema, |
104 |
| - ); |
105 |
| - b.add( |
106 |
| - Parameter( |
107 |
| - (b) => b |
108 |
| - ..name = parameterName |
109 |
| - ..type = refer(result.nullableName) |
110 |
| - ..named = true |
111 |
| - ..required = dartParameterRequired, |
112 |
| - ), |
113 |
| - ); |
| 42 | +void resolveMimeTypeEncode( |
| 43 | + String mimeType, |
| 44 | + TypeResult result, |
| 45 | + StringSink output, |
| 46 | +) { |
| 47 | + output.writeln("_headers['Content-Type'] = '$mimeType';"); |
| 48 | + final parameterName = toDartName(result.name); |
114 | 49 |
|
115 |
| - if (dartParameterNullable) { |
116 |
| - yield 'if ($parameterName != null) {'; |
117 |
| - } |
118 |
| - yield '_body = ${result.encode(parameterName, mimeType: mimeType)};'; |
119 |
| - if (dartParameterNullable) { |
120 |
| - yield '}'; |
121 |
| - } |
122 |
| - return; |
| 50 | + switch (mimeType) { |
| 51 | + case 'application/json': |
| 52 | + case 'application/x-www-form-urlencoded': |
| 53 | + if (result.nullable) { |
| 54 | + output.writeln('if ($parameterName != null) {'); |
123 | 55 | }
|
124 |
| - } |
125 |
| - |
126 |
| - throw Exception('Can not parse any mime type of Operation: "$identifier"'); |
| 56 | + output.writeln('_body = utf8.encode(${result.encode(parameterName, mimeType: mimeType)});'); |
| 57 | + if (result.nullable) { |
| 58 | + output.writeln('}'); |
| 59 | + } |
| 60 | + return; |
| 61 | + case 'application/octet-stream': |
| 62 | + if (result.nullable) { |
| 63 | + output.writeln('if ($parameterName != null) {'); |
| 64 | + } |
| 65 | + output.writeln('_body = ${result.encode(parameterName, mimeType: mimeType)};'); |
| 66 | + if (result.nullable) { |
| 67 | + output.writeln('}'); |
| 68 | + } |
| 69 | + return; |
| 70 | + case _: |
| 71 | + throw Exception('Can not parse any mime type of the Operation.'); |
127 | 72 | }
|
128 | 73 | }
|
0 commit comments