Qore SwaggerDataProvider Module Reference  1.2.2
SwaggerDataProviderBase.qc.dox.h
1 // -*- mode: c++; indent-tabs-mode: nil -*-
3 
26 namespace SwaggerDataProvider {
28 class SwaggerDataProviderBase : public AbstractDataProvider {
29 
30 public:
32 protected:
33  hash<DataProviderInfo> getStaticInfoImpl();
34 public:
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 
52 protected:
53  AbstractDataField getFieldFromSchema(string name, *string desc, SchemaObject schema, bool required = True);
54 public:
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 
69 protected:
70  AbstractDataProviderType getSchemaDataType(string path, SchemaObject schema, bool required = True);
71 public:
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 
102 protected:
103  AbstractDataField getFieldForHeaders(string name, hash<auto> headers);
104 public:
105 
106 };
107 };
108 
109 namespace Priv {
110 const RecursiveKey = "__swagger_dp_rec_key$$";
111 
112 class RecursiveFieldHelper {
113 
114 public:
115 protected:
116  *hash<auto> tld = get_thread_data(RecursiveKey);
117  string hash_str;
118  string ptype;
119  string name;
120  *QoreDataField f;
121 
122 public:
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 
134 class RecursiveTypeHelper {
135 
136 public:
137 protected:
138  *hash<auto> tld = get_thread_data(RecursiveKey);
139  string hash_str;
140  *AbstractDataProviderType t;
141 
142 public:
143 
144  constructor(object obj, string hash_str);
145 
146 
147  *AbstractDataProviderType get();
148 
149 
150  AbstractDataProviderType set(AbstractDataProviderType new_type);
151 
152 };
153 
154 class RecursiveSearchHelper {
155 
156 public:
157  destructor();
158 
159 };
160 };
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.
hash< DataProviderInfo > getStaticInfoImpl()
Returns data provider static info.
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
const True
const NOTHING
auto get_thread_data(string key)
string type(auto arg)
Qore SwaggerDataProvider module definition.
Definition: SwaggerDataProvider.qc.dox.h:26