/src/open5gs/lib/sbi/openapi/model/smcce_info.c
Line | Count | Source |
1 | | |
2 | | #include <stdlib.h> |
3 | | #include <string.h> |
4 | | #include <stdio.h> |
5 | | #include "smcce_info.h" |
6 | | |
7 | | OpenAPI_smcce_info_t *OpenAPI_smcce_info_create( |
8 | | char *dnn, |
9 | | OpenAPI_snssai_t *snssai, |
10 | | OpenAPI_smcce_ue_list_t *smcce_ue_list |
11 | | ) |
12 | 0 | { |
13 | 0 | OpenAPI_smcce_info_t *smcce_info_local_var = ogs_malloc(sizeof(OpenAPI_smcce_info_t)); |
14 | 0 | ogs_assert(smcce_info_local_var); |
15 | | |
16 | 0 | smcce_info_local_var->dnn = dnn; |
17 | 0 | smcce_info_local_var->snssai = snssai; |
18 | 0 | smcce_info_local_var->smcce_ue_list = smcce_ue_list; |
19 | |
|
20 | 0 | return smcce_info_local_var; |
21 | 0 | } |
22 | | |
23 | | void OpenAPI_smcce_info_free(OpenAPI_smcce_info_t *smcce_info) |
24 | 0 | { |
25 | 0 | OpenAPI_lnode_t *node = NULL; |
26 | |
|
27 | 0 | if (NULL == smcce_info) { |
28 | 0 | return; |
29 | 0 | } |
30 | 0 | if (smcce_info->dnn) { |
31 | 0 | ogs_free(smcce_info->dnn); |
32 | 0 | smcce_info->dnn = NULL; |
33 | 0 | } |
34 | 0 | if (smcce_info->snssai) { |
35 | 0 | OpenAPI_snssai_free(smcce_info->snssai); |
36 | 0 | smcce_info->snssai = NULL; |
37 | 0 | } |
38 | 0 | if (smcce_info->smcce_ue_list) { |
39 | 0 | OpenAPI_smcce_ue_list_free(smcce_info->smcce_ue_list); |
40 | 0 | smcce_info->smcce_ue_list = NULL; |
41 | 0 | } |
42 | 0 | ogs_free(smcce_info); |
43 | 0 | } |
44 | | |
45 | | cJSON *OpenAPI_smcce_info_convertToJSON(OpenAPI_smcce_info_t *smcce_info) |
46 | 0 | { |
47 | 0 | cJSON *item = NULL; |
48 | 0 | OpenAPI_lnode_t *node = NULL; |
49 | |
|
50 | 0 | if (smcce_info == NULL) { |
51 | 0 | ogs_error("OpenAPI_smcce_info_convertToJSON() failed [SmcceInfo]"); |
52 | 0 | return NULL; |
53 | 0 | } |
54 | | |
55 | 0 | item = cJSON_CreateObject(); |
56 | 0 | if (smcce_info->dnn) { |
57 | 0 | if (cJSON_AddStringToObject(item, "dnn", smcce_info->dnn) == NULL) { |
58 | 0 | ogs_error("OpenAPI_smcce_info_convertToJSON() failed [dnn]"); |
59 | 0 | goto end; |
60 | 0 | } |
61 | 0 | } |
62 | | |
63 | 0 | if (smcce_info->snssai) { |
64 | 0 | cJSON *snssai_local_JSON = OpenAPI_snssai_convertToJSON(smcce_info->snssai); |
65 | 0 | if (snssai_local_JSON == NULL) { |
66 | 0 | ogs_error("OpenAPI_smcce_info_convertToJSON() failed [snssai]"); |
67 | 0 | goto end; |
68 | 0 | } |
69 | 0 | cJSON_AddItemToObject(item, "snssai", snssai_local_JSON); |
70 | 0 | if (item->child == NULL) { |
71 | 0 | ogs_error("OpenAPI_smcce_info_convertToJSON() failed [snssai]"); |
72 | 0 | goto end; |
73 | 0 | } |
74 | 0 | } |
75 | | |
76 | 0 | if (!smcce_info->smcce_ue_list) { |
77 | 0 | ogs_error("OpenAPI_smcce_info_convertToJSON() failed [smcce_ue_list]"); |
78 | 0 | return NULL; |
79 | 0 | } |
80 | 0 | cJSON *smcce_ue_list_local_JSON = OpenAPI_smcce_ue_list_convertToJSON(smcce_info->smcce_ue_list); |
81 | 0 | if (smcce_ue_list_local_JSON == NULL) { |
82 | 0 | ogs_error("OpenAPI_smcce_info_convertToJSON() failed [smcce_ue_list]"); |
83 | 0 | goto end; |
84 | 0 | } |
85 | 0 | cJSON_AddItemToObject(item, "smcceUeList", smcce_ue_list_local_JSON); |
86 | 0 | if (item->child == NULL) { |
87 | 0 | ogs_error("OpenAPI_smcce_info_convertToJSON() failed [smcce_ue_list]"); |
88 | 0 | goto end; |
89 | 0 | } |
90 | | |
91 | 0 | end: |
92 | 0 | return item; |
93 | 0 | } |
94 | | |
95 | | OpenAPI_smcce_info_t *OpenAPI_smcce_info_parseFromJSON(cJSON *smcce_infoJSON) |
96 | 0 | { |
97 | 0 | OpenAPI_smcce_info_t *smcce_info_local_var = NULL; |
98 | 0 | OpenAPI_lnode_t *node = NULL; |
99 | 0 | cJSON *dnn = NULL; |
100 | 0 | cJSON *snssai = NULL; |
101 | 0 | OpenAPI_snssai_t *snssai_local_nonprim = NULL; |
102 | 0 | cJSON *smcce_ue_list = NULL; |
103 | 0 | OpenAPI_smcce_ue_list_t *smcce_ue_list_local_nonprim = NULL; |
104 | 0 | dnn = cJSON_GetObjectItemCaseSensitive(smcce_infoJSON, "dnn"); |
105 | 0 | if (dnn) { |
106 | 0 | if (!cJSON_IsString(dnn) && !cJSON_IsNull(dnn)) { |
107 | 0 | ogs_error("OpenAPI_smcce_info_parseFromJSON() failed [dnn]"); |
108 | 0 | goto end; |
109 | 0 | } |
110 | 0 | } |
111 | | |
112 | 0 | snssai = cJSON_GetObjectItemCaseSensitive(smcce_infoJSON, "snssai"); |
113 | 0 | if (snssai) { |
114 | 0 | snssai_local_nonprim = OpenAPI_snssai_parseFromJSON(snssai); |
115 | 0 | if (!snssai_local_nonprim) { |
116 | 0 | ogs_error("OpenAPI_snssai_parseFromJSON failed [snssai]"); |
117 | 0 | goto end; |
118 | 0 | } |
119 | 0 | } |
120 | | |
121 | 0 | smcce_ue_list = cJSON_GetObjectItemCaseSensitive(smcce_infoJSON, "smcceUeList"); |
122 | 0 | if (!smcce_ue_list) { |
123 | 0 | ogs_error("OpenAPI_smcce_info_parseFromJSON() failed [smcce_ue_list]"); |
124 | 0 | goto end; |
125 | 0 | } |
126 | 0 | smcce_ue_list_local_nonprim = OpenAPI_smcce_ue_list_parseFromJSON(smcce_ue_list); |
127 | 0 | if (!smcce_ue_list_local_nonprim) { |
128 | 0 | ogs_error("OpenAPI_smcce_ue_list_parseFromJSON failed [smcce_ue_list]"); |
129 | 0 | goto end; |
130 | 0 | } |
131 | | |
132 | 0 | smcce_info_local_var = OpenAPI_smcce_info_create ( |
133 | 0 | dnn && !cJSON_IsNull(dnn) ? ogs_strdup(dnn->valuestring) : NULL, |
134 | 0 | snssai ? snssai_local_nonprim : NULL, |
135 | 0 | smcce_ue_list_local_nonprim |
136 | 0 | ); |
137 | |
|
138 | 0 | return smcce_info_local_var; |
139 | 0 | end: |
140 | 0 | if (snssai_local_nonprim) { |
141 | 0 | OpenAPI_snssai_free(snssai_local_nonprim); |
142 | 0 | snssai_local_nonprim = NULL; |
143 | 0 | } |
144 | 0 | if (smcce_ue_list_local_nonprim) { |
145 | 0 | OpenAPI_smcce_ue_list_free(smcce_ue_list_local_nonprim); |
146 | 0 | smcce_ue_list_local_nonprim = NULL; |
147 | 0 | } |
148 | 0 | return NULL; |
149 | 0 | } |
150 | | |
151 | | OpenAPI_smcce_info_t *OpenAPI_smcce_info_copy(OpenAPI_smcce_info_t *dst, OpenAPI_smcce_info_t *src) |
152 | 0 | { |
153 | 0 | cJSON *item = NULL; |
154 | 0 | char *content = NULL; |
155 | |
|
156 | 0 | ogs_assert(src); |
157 | 0 | item = OpenAPI_smcce_info_convertToJSON(src); |
158 | 0 | if (!item) { |
159 | 0 | ogs_error("OpenAPI_smcce_info_convertToJSON() failed"); |
160 | 0 | return NULL; |
161 | 0 | } |
162 | | |
163 | 0 | content = cJSON_Print(item); |
164 | 0 | cJSON_Delete(item); |
165 | |
|
166 | 0 | if (!content) { |
167 | 0 | ogs_error("cJSON_Print() failed"); |
168 | 0 | return NULL; |
169 | 0 | } |
170 | | |
171 | 0 | item = cJSON_Parse(content); |
172 | 0 | ogs_free(content); |
173 | 0 | if (!item) { |
174 | 0 | ogs_error("cJSON_Parse() failed"); |
175 | 0 | return NULL; |
176 | 0 | } |
177 | | |
178 | 0 | OpenAPI_smcce_info_free(dst); |
179 | 0 | dst = OpenAPI_smcce_info_parseFromJSON(item); |
180 | 0 | cJSON_Delete(item); |
181 | |
|
182 | 0 | return dst; |
183 | 0 | } |
184 | | |