| 218 | |
| 219 | |
| 220 | class StructureShape(Shape): |
| 221 | @CachedProperty |
| 222 | def members(self): |
| 223 | members = self._shape_model.get('members', self.MAP_TYPE()) |
| 224 | # The members dict looks like: |
| 225 | # 'members': { |
| 226 | # 'MemberName': {'shape': 'shapeName'}, |
| 227 | # 'MemberName2': {'shape': 'shapeName'}, |
| 228 | # } |
| 229 | # We return a dict of member name to Shape object. |
| 230 | shape_members = self.MAP_TYPE() |
| 231 | for name, shape_ref in members.items(): |
| 232 | shape_members[name] = self._resolve_shape_ref(shape_ref) |
| 233 | return shape_members |
| 234 | |
| 235 | @CachedProperty |
| 236 | def event_stream_name(self): |
| 237 | for member_name, member in self.members.items(): |
| 238 | if member.serialization.get('eventstream'): |
| 239 | return member_name |
| 240 | return None |
| 241 | |
| 242 | @CachedProperty |
| 243 | def error_code(self): |
| 244 | if not self.metadata.get('exception', False): |
| 245 | return None |
| 246 | error_metadata = self.metadata.get("error", {}) |
| 247 | code = error_metadata.get("code") |
| 248 | if code: |
| 249 | return code |
| 250 | # Use the exception name if there is no explicit code modeled |
| 251 | return self.name |
| 252 | |
| 253 | @CachedProperty |
| 254 | def is_document_type(self): |
| 255 | return self.metadata.get('document', False) |
| 256 | |
| 257 | @CachedProperty |
| 258 | def is_tagged_union(self): |
| 259 | return self.metadata.get('union', False) |
| 260 | |
| 261 | |
| 262 | class ListShape(Shape): |
no outgoing calls