From 68e06da328967bff74a8272805d3ca3dc9c7f4d7 Mon Sep 17 00:00:00 2001
From: Greg Quinn <greg.quinn@ssec.wisc.edu>
Date: Tue, 5 Sep 2017 07:46:54 -0500
Subject: [PATCH] Extract _decode_rdr_blob function

---
 edosl0util/jpssrdr.py | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/edosl0util/jpssrdr.py b/edosl0util/jpssrdr.py
index 9654c73..beef1e2 100644
--- a/edosl0util/jpssrdr.py
+++ b/edosl0util/jpssrdr.py
@@ -191,15 +191,23 @@ def _rdrs_for_packet_dataset(group):
     rdrs = []
     if group:
         for name, buf in _generate_packet_datasets(group):
-            if buf.shape[0] < c.sizeof(StaticHeader):
-                LOG.warn('Not enough bytes for %s static header', name)
+            try:
+                rdr = _decode_rdr_blob(buf)
+            except ValueError as e:
+                LOG.warn('{} ({})'.format(e.message, name))
                 continue
-            header = StaticHeader.from_buffer(buf)
-            apids = _read_apid_list(header, buf)
-            rdrs.append(CommonRdr(buf, header, list(apids)))
+            rdrs.append(rdr)
     return rdrs
 
 
+def _decode_rdr_blob(buf):
+    if buf.shape[0] < c.sizeof(StaticHeader):
+        raise ValueError('Not enough bytes for static header')
+    header = StaticHeader.from_buffer(buf)
+    apids = _read_apid_list(header, buf)
+    return CommonRdr(buf, header, list(apids))
+
+
 def rdr_datasets(filepath):
     fobj = H5File(filepath)
     rdr = dict(
-- 
GitLab