opc_request_id.go raw

   1  package utils
   2  
   3  import (
   4  	"crypto/rand"
   5  	"encoding/hex"
   6  	"fmt"
   7  )
   8  
   9  // GenerateOpcRequestID -
  10  // Maximum segment length:	32 characters
  11  // Allowed segment contents: regular expression pattern /^[a-zA-Z0-9]{0,32}$/
  12  func GenerateOpcRequestID() string {
  13  	clientId := generateUniqueID()
  14  	stackId := generateUniqueID()
  15  	individualId := generateUniqueID()
  16  
  17  	opcRequestId := fmt.Sprintf("%s/%s/%s", clientId, stackId, individualId)
  18  
  19  	return opcRequestId
  20  }
  21  
  22  func generateUniqueID() string {
  23  	b := make([]byte, 16)
  24  	_, err := rand.Read(b)
  25  	if err != nil {
  26  		return ""
  27  	}
  28  
  29  	return hex.EncodeToString(b)
  30  }
  31