generated from intersystems-community/intersystems-iris-dev-template
-
Notifications
You must be signed in to change notification settings - Fork 3
/
PetStore.cls
103 lines (64 loc) · 3.37 KB
/
PetStore.cls
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
Class dc.openapi.suite.samples.PetStore
{
ClassMethod GenerateHttpClient() As %Status
{
Set packageName = "petstoreclient"
Write !,"Delete previous code generation ..."
Do $SYSTEM.OBJ.DeletePackage(packageName)
Write !,"Generate client HTTP "_ packageName _"..."
Set features("simpleHttpClientOnly") = 1
;Set features("compile") = 1
Set sc = ##class(dc.openapi.client.Spec).generateApp(packageName, "https://petstore3.swagger.io/api/v3/openapi.json", .features)
Write !,!,"Status : ", $SYSTEM.Status.GetOneErrorText(sc)
Return sc
}
ClassMethod GenerateClientProduction() As %Status
{
Set packageName = "petstoreproduction"
Write !,"Delete previous code generation ..."
Do $SYSTEM.OBJ.DeletePackage(packageName)
Write !,"Generate client Production " _ packageName _"..."
Set sc = ##class(dc.openapi.client.Spec).generateApp(packageName, "https://petstore3.swagger.io/api/v3/openapi.json")
Write !,!,"Status : ", $SYSTEM.Status.GetOneErrorText(sc)
Return sc
}
ClassMethod GenerateRestApplication() As %Status
{
Set sc = $$$OK
Set packageName = "petstoreserver", webApplication = "/petstore/api"
Write !,"Delete previous code generation ..."
Do $SYSTEM.OBJ.DeletePackage(packageName)
Write !,"Generate REST application " _ packageName _" with Web Application : " _ webApplication
Set sc = ##class(dc.openapi.server.ServerAppGenerator).Generate("petstoreserver", "https://petstore3.swagger.io/api/v3/openapi.json", webApplication)
Write !,!,"Status : ", $SYSTEM.Status.GetOneErrorText(sc)
Return sc
}
ClassMethod addPetUsingProduction() As %Status
{
Set sc = $$$OK
Set messageRequest = ##class(petstoreproduction.requests.addPet).%New()
Set messageRequest.%ContentType = "application/json"
Do messageRequest.PetNewObject().%JSONImport({"id":123,"name":"Kitty Galore","photoUrls":["https://www.tippett.com/wp-content/uploads/2017/01/ca2DC049.130.1264.jpg"],"status":"pending"})
; MessageResponse will be an instance of petstoreclient.responses.addPet
Set sc = ##class(petstoreproduction.Utils).invokeHostSync("petstoreproduction.bp.SyncProcess", messageRequest, "petstoreproduction.bs.ProxyService", , .messageResponse)
Write !, "Take a look in visual trace (management portal)"
If $$$ISERR(sc) Do $SYSTEM.Status.DisplayError(sc)
Write !,"Http Status code : ", messageResponse.httpStatusCode,!
Do messageResponse.Pet.%JSONExport()
Return sc
}
ClassMethod addPetUsingHttpClient() As %Status
{
Set sc = $$$OK
Set messageRequest = ##class(petstoreclient.requests.addPet).%New()
Set messageRequest.%ContentType = "application/json"
Do messageRequest.PetNewObject().%JSONImport({"id":456,"name":"Mittens","photoUrls":["https://static.wikia.nocookie.net/disney/images/c/cb/Profile_-_Mittens.jpg/revision/latest?cb=20200709180903"],"status":"available"})
Set httpClient = ##class(petstoreclient.HttpClient).%New("https://petstore3.swagger.io/api/v3","DefaultSSL")
; MessageResponse will be an instance of petstoreclient.responses.addPet
Set sc = httpClient.addPet(messageRequest, .messageResponse)
If $$$ISERR(sc) Do $SYSTEM.Status.DisplayError(sc) Quit sc
Write !,"Http Status code : ", messageResponse.httpStatusCode,!
Do messageResponse.Pet.%JSONExport()
Return sc
}
}