Add second work package for REST API implementation
[anna.git] / source / diameter / helpers / base / functions.cpp
index 20a0257..2036053 100644 (file)
@@ -150,3 +150,25 @@ std::string anna::diameter::helpers::base::functions::getSessionId(const anna::D
   return result;
 }
 
+
+std::string anna::diameter::helpers::base::functions::getOriginHost(const anna::DataBlock & db) throw(anna::RuntimeException) {
+  if(db.getSize() < Message::HeaderLength)
+    throw anna::RuntimeException("Not enough bytes to cover command header length", ANNA_FILE_LOCATION);
+
+  const char *avpsDB = db.getData() + Message::HeaderLength;
+  int avpsLen = db.getSize() - Message::HeaderLength;
+  const char * originHostPtr = anna::diameter::codec::functions::findAVP(avpsDB, avpsLen, AVPID__Origin_Host);
+
+
+  if(originHostPtr == NULL)
+    throw anna::RuntimeException("Origin-Host AVP not found in DataBlock provided", ANNA_FILE_LOCATION);
+
+  // Decoded avp information:
+  AvpId _id;
+  char _flags;
+  int _length;
+  std::string result;
+  anna::diameter::codec::functions::decodeAVP(originHostPtr, _id, _flags, _length, result);
+  return result;
+}
+