const crypto = require('crypto');

function generateHmac(talentspace, email, timestamp, secretKey) {
  // Create the HMAC
  const hmacBody = [talentspace, email, timestamp, secretKey].join(';');
  return crypto.createHmac('md5', secretKey)
            .update(hmacBody)
            .digest('hex');

}

function validateHmac(request, secretKey) {
  // Extract the necessary parts from the request
  const { talentspace, email, timestamp, hmac } = request;

  // Recreate the HMAC
  const generatedHmac = generateHmac(talentspace, email, timestamp, secretKey)

  // Compare and return the validation result
  return hmac === generatedHmac;
}

// Example usage
const request = {
  talentspace: 'exampleTalentspace',
  email: 'example@email.com',
  timestamp: '2023-12-14T07:12:17+00:00',
  hmac: '259429c3df5c45d8f0e50f914f9f9380'
};

const secretKey = 'exampleHmacFromRequest'; // Replace with your actual secret key

const isValid = validateHmac(request, secretKey);
console.log('Is HMAC valid?', isValid);