Skip to content

Commit 22d6175

Browse files
fix SwaggerHub allOf display issue
1 parent e6b14f0 commit 22d6175

2 files changed

Lines changed: 35 additions & 1 deletion

File tree

Scripts/buildOpenAPI.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import glob
1010
import sys
1111
import os
12-
from dereferenceAll import dereferenceBrAPI
12+
import dereferenceAll
1313

1414

1515
def str_presenter(dumper, data):
@@ -63,6 +63,8 @@ def go(rootPaths, metaFilePath = './swaggerMetaData.yaml'):
6363
out['paths'].update(paths)
6464
out['components'].update(defin)
6565

66+
out = dereferenceAll.dereferenceAllOfClause(out, out)
67+
6668
with open(outFilePath, 'w') as outfile:
6769
print(outFilePath)
6870
yaml.dump(out, outfile, default_flow_style=False, width=float("inf"), Dumper=noalias_dumper)

Scripts/dereferenceAll.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,38 @@ def dereferenceAll(obj, parent):
5151
return obj
5252

5353

54+
def dereferenceAllOfClause(obj, parent):
55+
#print(breadCrumb)
56+
try:
57+
if type(obj) is dict:
58+
for fieldStr in obj:
59+
#print(fieldStr)
60+
if(fieldStr == 'allOf'):
61+
comboObj = {'properties': {}, 'type': 'object'}
62+
for item in obj[fieldStr]:
63+
itemObj = dereferenceAll(item, parent)
64+
comboObj['properties'] = {**(comboObj['properties']), **(itemObj['properties'])}
65+
if 'title' in itemObj:
66+
comboObj['title'] = itemObj['title']
67+
if 'description' in itemObj:
68+
comboObj['description'] = itemObj['description']
69+
if 'example' in itemObj:
70+
comboObj['example'] = itemObj['example']
71+
72+
obj = comboObj
73+
else:
74+
obj[fieldStr] = dereferenceAllOfClause(obj[fieldStr], parent)
75+
elif type(obj) is list:
76+
newList = []
77+
for item in obj:
78+
newList.append(dereferenceAllOfClause(item, parent))
79+
obj = newList
80+
except Exception as ex:
81+
##print(obj)
82+
raise ex
83+
return obj
84+
85+
5486
def dereferenceBrAPI(filePath = './brapi_openapi.yaml', verbose = False):
5587
fileObj = {}
5688
if verbose :

0 commit comments

Comments
 (0)