@@ -80,7 +80,7 @@ def _get_request(self, endpoint, data_key, params=None, **kwargs):
8080 data .extend (self .client .data_parse (r ))
8181 return Table (data )
8282
83- def __handle_nested_json (self , table : Table , column : str ) -> Table :
83+ def __handle_nested_json (self , table : Table , column : str , version : int = 1 ) -> Table :
8484 """
8585 This function unpacks JSON values from Zoom's API, which are often
8686 objects nested in lists
@@ -95,6 +95,8 @@ def __handle_nested_json(self, table: Table, column: str) -> Table:
9595 `Returns`:
9696 Parsons Table
9797 """
98+ if version == 2 :
99+ return Table (table .unpack_list (column = column ))
98100
99101 return Table (table .unpack_list (column = column )).unpack_dict (
100102 column = f"{ column } _0" , prepend_value = f"{ column } _"
@@ -305,7 +307,7 @@ def get_webinar_registrants(self, webinar_id):
305307 logger .info (f"Retrieved { tbl .num_rows } webinar registrants." )
306308 return tbl
307309
308- def get_meeting_poll_metadata (self , meeting_id , poll_id ) -> Table :
310+ def get_meeting_poll_metadata (self , meeting_id , poll_id , version : int = 1 ) -> Table :
309311 """
310312 Get metadata about a specific poll for a given meeting ID
311313
@@ -324,9 +326,6 @@ def get_meeting_poll_metadata(self, meeting_id, poll_id) -> Table:
324326 endpoint = f"meetings/{ meeting_id } /polls/{ poll_id } "
325327 tbl = self ._get_request (endpoint = endpoint , data_key = "questions" )
326328
327- if isinstance (tbl , dict ):
328- logger .debug (f"No poll data returned for poll ID { poll_id } " )
329- return Table (tbl )
330329 if tbl .num_rows == 0 :
331330 logger .debug (f"No poll data returned for poll ID { poll_id } " )
332331 return tbl
@@ -337,11 +336,11 @@ def get_meeting_poll_metadata(self, meeting_id, poll_id) -> Table:
337336
338337 if "prompts" in tbl .columns :
339338 logger .info (f"Unnesting columns 'prompts' from existing table columns: { tbl .columns } " )
340- return self .__handle_nested_json (table = tbl , column = "prompts" )
339+ return self .__handle_nested_json (table = tbl , column = "prompts" , version = version )
341340 else :
342341 return tbl
343342
344- def get_meeting_all_polls_metadata (self , meeting_id ) -> Table :
343+ def get_meeting_all_polls_metadata (self , meeting_id , version : int = 1 ) -> Table :
345344 """
346345 Get metadata for all polls for a given meeting ID
347346
@@ -358,18 +357,15 @@ def get_meeting_all_polls_metadata(self, meeting_id) -> Table:
358357 endpoint = f"meetings/{ meeting_id } /polls"
359358 tbl = self ._get_request (endpoint = endpoint , data_key = "polls" )
360359
361- if isinstance (tbl , dict ):
362- logger .debug (f"No poll data returned for meeting ID { meeting_id } " )
363- return Table (tbl )
364360 if tbl .num_rows == 0 :
365361 logger .debug (f"No poll data returned for meeting ID { meeting_id } " )
366362 return tbl
367363
368364 logger .info (f"Retrieved { tbl .num_rows } polls for meeting ID { meeting_id } " )
369365
370- return self .__handle_nested_json (table = tbl , column = "questions" )
366+ return self .__handle_nested_json (table = tbl , column = "questions" , version = version )
371367
372- def get_past_meeting_poll_metadata (self , meeting_id ) -> Table :
368+ def get_past_meeting_poll_metadata (self , meeting_id , version : int = 1 ) -> Table :
373369 """
374370 List poll metadata of a past meeting.
375371
@@ -386,9 +382,6 @@ def get_past_meeting_poll_metadata(self, meeting_id) -> Table:
386382 endpoint = f"past_meetings/{ meeting_id } /polls"
387383 tbl = self ._get_request (endpoint = endpoint , data_key = "questions" )
388384
389- if isinstance (tbl , dict ):
390- logger .debug (f"No poll data returned for meeting ID { meeting_id } " )
391- return Table (tbl )
392385 if tbl .num_rows == 0 :
393386 logger .debug (f"No poll data returned for meeting ID { meeting_id } " )
394387 return tbl
@@ -398,9 +391,9 @@ def get_past_meeting_poll_metadata(self, meeting_id) -> Table:
398391 f"Unnesting columns 'question_details' from existing table columns: { tbl .columns } "
399392 )
400393
401- return self .__handle_nested_json (table = tbl , column = "question_details" )
394+ return self .__handle_nested_json (table = tbl , column = "question_details" , version = version )
402395
403- def get_webinar_poll_metadata (self , webinar_id , poll_id ) -> Table :
396+ def get_webinar_poll_metadata (self , webinar_id , poll_id , version : int = 1 ) -> Table :
404397 """
405398 Get metadata for a specific poll for a given webinar ID
406399
@@ -419,9 +412,6 @@ def get_webinar_poll_metadata(self, webinar_id, poll_id) -> Table:
419412 endpoint = f"webinars/{ webinar_id } /polls/{ poll_id } "
420413 tbl = self ._get_request (endpoint = endpoint , data_key = "questions" )
421414
422- if isinstance (tbl , dict ):
423- logger .debug (f"No poll data returned for poll ID { poll_id } " )
424- return Table (tbl )
425415 if tbl .num_rows == 0 :
426416 logger .debug (f"No poll data returned for poll ID { poll_id } " )
427417 return tbl
@@ -430,9 +420,9 @@ def get_webinar_poll_metadata(self, webinar_id, poll_id) -> Table:
430420 f"Retrieved { tbl .num_rows } rows of metadata [meeting={ webinar_id } poll={ poll_id } ]"
431421 )
432422
433- return self .__handle_nested_json (table = tbl , column = "prompts" )
423+ return self .__handle_nested_json (table = tbl , column = "prompts" , version = version )
434424
435- def get_webinar_all_polls_metadata (self , webinar_id ) -> Table :
425+ def get_webinar_all_polls_metadata (self , webinar_id , version : int = 1 ) -> Table :
436426 """
437427 Get metadata for all polls for a given webinar ID
438428
@@ -449,18 +439,15 @@ def get_webinar_all_polls_metadata(self, webinar_id) -> Table:
449439 endpoint = f"webinars/{ webinar_id } /polls"
450440 tbl = self ._get_request (endpoint = endpoint , data_key = "polls" )
451441
452- if isinstance (tbl , dict ):
453- logger .debug (f"No poll data returned for webinar ID { webinar_id } " )
454- return Table (tbl )
455442 if tbl .num_rows == 0 :
456443 logger .debug (f"No poll data returned for webinar ID { webinar_id } " )
457444 return tbl
458445
459446 logger .info (f"Retrieved { tbl .num_rows } polls for meeting ID { webinar_id } " )
460447
461- return self .__handle_nested_json (table = tbl , column = "questions" )
448+ return self .__handle_nested_json (table = tbl , column = "questions" , version = version )
462449
463- def get_past_webinar_poll_metadata (self , webinar_id ) -> Table :
450+ def get_past_webinar_poll_metadata (self , webinar_id , version : int = 1 ) -> Table :
464451 """
465452 Retrieves the metadata for Webinar Polls of a specific Webinar
466453
@@ -477,16 +464,13 @@ def get_past_webinar_poll_metadata(self, webinar_id) -> Table:
477464 endpoint = f"past_webinars/{ webinar_id } /polls"
478465 tbl = self ._get_request (endpoint = endpoint , data_key = "questions" )
479466
480- if isinstance (tbl , dict ):
481- logger .debug (f"No poll data returned for webinar ID { webinar_id } " )
482- return Table (tbl )
483467 if tbl .num_rows == 0 :
484468 logger .debug (f"No poll data returned for webinar ID { webinar_id } " )
485469 return tbl
486470
487471 logger .info (f"Retrieved { tbl .num_rows } polls for meeting ID { webinar_id } " )
488472
489- return self .__handle_nested_json (table = tbl , column = "prompts" )
473+ return self .__handle_nested_json (table = tbl , column = "prompts" , version = version )
490474
491475 def get_meeting_poll_results (self , meeting_id ) -> Table :
492476 """
@@ -498,9 +482,6 @@ def get_meeting_poll_results(self, meeting_id) -> Table:
498482 endpoint = f"report/meetings/{ meeting_id } /polls"
499483 tbl = self ._get_request (endpoint = endpoint , data_key = "questions" )
500484
501- if isinstance (tbl , dict ):
502- logger .debug (f"No poll data returned for meeting ID { meeting_id } " )
503- return Table (tbl )
504485 if tbl .num_rows == 0 :
505486 logger .debug (f"No poll data returned for meeting ID { meeting_id } " )
506487 return tbl
@@ -519,9 +500,6 @@ def get_webinar_poll_results(self, webinar_id) -> Table:
519500 endpoint = f"report/webinars/{ webinar_id } /polls"
520501 tbl = self ._get_request (endpoint = endpoint , data_key = "questions" )
521502
522- if isinstance (tbl , dict ):
523- logger .debug (f"No poll data returned for webinar ID { webinar_id } " )
524- return Table (tbl )
525503 if tbl .num_rows == 0 :
526504 logger .debug (f"No poll data returned for webinar ID { webinar_id } " )
527505 return tbl
0 commit comments