Qore SwaggerDataProvider Module Reference 1.2.3
Loading...
Searching...
No Matches
SwaggerDataProviderBase.qc.dox.h
1// -*- mode: c++; indent-tabs-mode: nil -*-
3
26namespace SwaggerDataProvider {
28class SwaggerDataProviderBase : public AbstractDataProvider {
29
30public:
32protected:
33 hash<DataProviderInfo> getStaticInfoImpl();
34public:
35
36
38 private addFieldsFromParameters(HashDataType rv, hash<string, AbstractParameterObject> parameters,
39 reference<bool> required) {
40 // temporary hash for fields: loc -> name -> field
41 hash<string, hash<string, AbstractDataField>> params;
42 // required flag map for type: loc -> bool
43 hash<string, bool> req_map;
44 foreach hash<auto> i in (parameters.pairIterator());
45
46
47 foreach hash<auto> i in (params.pairIterator());
48
49 }
50
52protected:
53 AbstractDataField getFieldFromSchema(string name, *string desc, SchemaObject schema, bool required = True);
54public:
55
56
58 private AbstractDataField getFieldFromSchemaIntern(string path, string name, *string desc, SchemaObject schema,
59 bool required = True) {
60 if (schema.desc);
61
62 if (schema.type == 'object');
63
64 return getFieldFromParameter(path, name, schema.type, schema.format, schema.items, desc, required,
65 keys schema.enum);
66 }
67
69protected:
70 AbstractDataProviderType getSchemaDataType(string path, SchemaObject schema, bool required = True);
71public:
72
73
75 private AbstractDataField getFieldFromParameter(string path, string name, string type, *string format,
76 *SchemaObject arrayItems, *string desc, bool required, *list<auto> allowed_values) {
77 // check for recursive field definitions
78 RecursiveFieldHelper rfh(self, "field", path);
79 return rfh.get() ?? rfh.set(new QoreDataField(name, desc, getType(path, type, format, arrayItems, required),
80 NOTHING, allowed_values));
81 }
82
84 private AbstractDataProviderType getType(string path, string typestr, *string format, *SchemaObject arrayItems,
85 bool required = True) {
86 hash<auto> type_options;
87 if (required);
88
89 if (typestr == 'string');
90
91 switch (typestr);
92
93
94 if (*string newname = OptimalQoreSoftDataTypeMap{typestr});
95
96 if (!required && (typestr != 'any' && typestr != 'auto'));
97
98 return AbstractDataProviderType::get(new Type(typestr), type_options);
99 }
100
102protected:
103 AbstractDataField getFieldForHeaders(string name, hash<auto> headers);
104public:
105
106};
107};
108
109namespace Priv {
110const RecursiveKey = "__swagger_dp_rec_key$$";
111
112class RecursiveFieldHelper {
113
114public:
115protected:
116 *hash<auto> tld = get_thread_data(RecursiveKey);
117 string hash_str;
118 string ptype;
119 string name;
120 *QoreDataField f;
121
122public:
123
124 constructor(object obj, string ptype, string name);
125
126
127 *QoreDataField get();
128
129
130 QoreDataField set(QoreDataField new_field);
131
132};
133
134class RecursiveTypeHelper {
135
136public:
137protected:
138 *hash<auto> tld = get_thread_data(RecursiveKey);
139 string hash_str;
140 *AbstractDataProviderType t;
141
142public:
143
144 constructor(object obj, string hash_str);
145
146
147 *AbstractDataProviderType get();
148
149
150 AbstractDataProviderType set(AbstractDataProviderType new_type);
151
152};
153
154class RecursiveSearchHelper {
155
156public:
157 destructor();
158
159};
160};
*string format
*SchemaObject items
*string desc
The Swagger data provider base class.
Definition: SwaggerDataProviderBase.qc.dox.h:28
AbstractDataField getFieldForHeaders(string name, hash< auto > headers)
Returns a field of header fields.
AbstractDataProviderType getSchemaDataType(string path, SchemaObject schema, bool required=True)
Returns the data type for the given schema.
private AbstractDataProviderType getType(string path, string typestr, *string format, *SchemaObject arrayItems, bool required=True)
Returns the data type corresponding to the values.
Definition: SwaggerDataProviderBase.qc.dox.h:84
private AbstractDataField getFieldFromSchemaIntern(string path, string name, *string desc, SchemaObject schema, bool required=True)
Returns a field definition from the Swagger parameter.
Definition: SwaggerDataProviderBase.qc.dox.h:58
private addFieldsFromParameters(HashDataType rv, hash< string, AbstractParameterObject > parameters, reference< bool > required)
Returns a field definition from Swagger parameters.
Definition: SwaggerDataProviderBase.qc.dox.h:38
AbstractDataField getFieldFromSchema(string name, *string desc, SchemaObject schema, bool required=True)
Returns a field definition from the Swagger parameter.
private AbstractDataField getFieldFromParameter(string path, string name, string type, *string format, *SchemaObject arrayItems, *string desc, bool required, *list< auto > allowed_values)
Returns a field from a Swagger parameter.
Definition: SwaggerDataProviderBase.qc.dox.h:75
hash< DataProviderInfo > getStaticInfoImpl()
Returns data provider static info.
auto get_thread_data(string key)
Qore SwaggerDataProvider module definition.
Definition: SwaggerDataProvider.qc.dox.h:26