squash getStat variations into one underlying method

Squash the getStat(name) and getStat(session) into one underlying
method.

Change-Id: I6c00b9f4128a64e3d1a918c8a9d1eaf252de32bc
Signed-off-by: Patrick Venture <venture@google.com>
diff --git a/src/ipmiblob/blob_handler.cpp b/src/ipmiblob/blob_handler.cpp
index 0d31b3f..8ec3f9c 100644
--- a/src/ipmiblob/blob_handler.cpp
+++ b/src/ipmiblob/blob_handler.cpp
@@ -212,17 +212,15 @@
     return list;
 }
 
-StatResponse BlobHandler::getStat(const std::string& id)
+StatResponse BlobHandler::statGeneric(BlobOEMCommands command,
+                                      const std::vector<std::uint8_t>& request)
 {
     StatResponse meta;
-    std::vector<std::uint8_t> name, resp;
-
-    std::copy(id.begin(), id.end(), std::back_inserter(name));
-    name.push_back(0x00); /* need to add nul-terminator. */
+    std::vector<std::uint8_t> resp;
 
     try
     {
-        resp = sendIpmiPayload(BlobOEMCommands::bmcBlobStat, name);
+        resp = sendIpmiPayload(command, request);
     }
     catch (const BlobException& b)
     {
@@ -242,35 +240,23 @@
     return meta;
 }
 
+StatResponse BlobHandler::getStat(const std::string& id)
+{
+    std::vector<std::uint8_t> name;
+    std::copy(id.begin(), id.end(), std::back_inserter(name));
+    name.push_back(0x00); /* need to add nul-terminator. */
+
+    return statGeneric(BlobOEMCommands::bmcBlobStat, name);
+}
+
 StatResponse BlobHandler::getStat(std::uint16_t session)
 {
-    StatResponse meta;
-    std::vector<std::uint8_t> resp;
     std::vector<std::uint8_t> request;
     auto addrSession = reinterpret_cast<const std::uint8_t*>(&session);
     std::copy(addrSession, addrSession + sizeof(session),
               std::back_inserter(request));
 
-    try
-    {
-        resp = sendIpmiPayload(BlobOEMCommands::bmcBlobSessionStat, request);
-    }
-    catch (const BlobException& b)
-    {
-        throw;
-    }
-
-    std::memcpy(&meta.blob_state, &resp[0], sizeof(meta.blob_state));
-    std::memcpy(&meta.size, &resp[sizeof(meta.blob_state)], sizeof(meta.size));
-    int offset = sizeof(meta.blob_state) + sizeof(meta.size);
-    std::uint8_t len = resp[offset];
-    if (len > 0)
-    {
-        std::copy(&resp[offset + 1], &resp[resp.size()],
-                  std::back_inserter(meta.metadata));
-    }
-
-    return meta;
+    return statGeneric(BlobOEMCommands::bmcBlobSessionStat, request);
 }
 
 std::uint16_t BlobHandler::openBlob(const std::string& id,