const https = require('https');
const fs = require('fs');
const path = require('path');

// Create the target directory if it doesn't exist
const targetDir = path.join(__dirname, 'static', 'images', 'mine');
if (!fs.existsSync(targetDir)) {
  fs.mkdirSync(targetDir, { recursive: true });
}

// Define the images to download with their URLs and target filenames
const images = [
  {
    url: 'https://lanhu-oss-2537-2.lanhuapp.com/FigmaDDSSlicePNG3d7cb8a5a5c535dbdf3c899d2d323899.png',
    filename: 'default.png'
  },
  {
    url: 'https://lanhu-oss-2537-2.lanhuapp.com/FigmaDDSSlicePNG68c4f4a5f6a9cba03731ba76dfceca0e.png',
    filename: 'arrow_right_small.png'
  },
  {
    url: 'https://lanhu-oss-2537-2.lanhuapp.com/FigmaDDSSlicePNGdc763c9311112614ded8231482e23616.png',
    filename: 'order_icon.png'
  },
  {
    url: 'https://lanhu-oss-2537-2.lanhuapp.com/FigmaDDSSlicePNGf2f2ee9713d560fcb67c832e5fcee99a.png',
    filename: 'arrow_right.png'
  },
  {
    url: 'https://lanhu-oss-2537-2.lanhuapp.com/FigmaDDSSlicePNG02e5a238d57e63442f9a31863b613a63.png',
    filename: 'history_icon.png'
  },
  {
    url: 'https://lanhu-dds-backend.oss-cn-beijing.aliyuncs.com/merge_image/imgs/d5f6ba8545d04dd8b93333b07bbc9592_mergeImage.png',
    filename: 'customer_service_icon.png'
  },
  {
    url: 'https://lanhu-oss-2537-2.lanhuapp.com/FigmaDDSSlicePNG7a8d2e771bc19f2841728a7511507d77.png',
    filename: 'help_center_icon.png'
  },
  {
    url: 'https://lanhu-oss-2537-2.lanhuapp.com/FigmaDDSSlicePNG732c7c9ddf5994412cdbd02a77dac3e5.png',
    filename: 'about_us_icon.png'
  },
  {
    url: 'https://lanhu-oss-2537-2.lanhuapp.com/FigmaDDSSlicePNGb9d46e9970cf4f97f8074aeeb4f3ac5c.png',
    filename: 'logout_icon.png'
  },
  {
    url: 'https://lanhu-oss-2537-2.lanhuapp.com/FigmaDDSSlicePNGe0d56b7debf0486f50a80459dcd82228.png',
    filename: 'navigation_icon.png'
  },
  {
    url: 'https://lanhu-oss-2537-2.lanhuapp.com/FigmaDDSSlicePNG3bb0ad8451bd7dd9f96ac85130967887.png',
    filename: 'background.png'
  },
  {
    url: 'https://lanhu-oss-2537-2.lanhuapp.com/FigmaDDSSlicePNGce2485e84ba3205457f0b0e6921852b5.png',
    filename: 'integral_card.png'
  },
  {
    url: 'https://lanhu-oss-2537-2.lanhuapp.com/FigmaDDSSlicePNGa21607a7510c39025ba69fc44da86eb2.png',
    filename: 'coupon_card.png'
  },
  // Use order icon as recruit icon
  {
    url: 'https://lanhu-oss-2537-2.lanhuapp.com/FigmaDDSSlicePNGdc763c9311112614ded8231482e23616.png',
    filename: 'recruit_icon.png'
  },
  // Use a suitable icon for address from the order icon
  {
    url: 'https://lanhu-oss-2537-2.lanhuapp.com/FigmaDDSSlicePNGdc763c9311112614ded8231482e23616.png',
    filename: 'address_icon.png'
  }
];

// Function to download an image
function downloadImage(url, filename) {
  return new Promise((resolve, reject) => {
    const targetPath = path.join(targetDir, filename);
    console.log(`Downloading ${url} to ${targetPath}...`);
    
    // Create a write stream
    const file = fs.createWriteStream(targetPath);
    
    // Make the request to download the image
    const request = https.get(url, (response) => {
      // Check if the response is successful
      if (response.statusCode !== 200) {
        reject(new Error(`Failed to download ${url}: ${response.statusCode} ${response.statusMessage}`));
        return;
      }
      
      // Pipe the response to the file
      response.pipe(file);
      
      // Handle completion of the download
      file.on('finish', () => {
        file.close();
        console.log(`Downloaded ${filename} successfully!`);
        resolve();
      });
    });
    
    // Handle request errors
    request.on('error', (err) => {
      fs.unlink(targetPath, () => {}); // Delete the file if there's an error
      reject(err);
    });
    
    // Handle file write errors
    file.on('error', (err) => {
      fs.unlink(targetPath, () => {}); // Delete the file if there's an error
      reject(err);
    });
  });
}

// Download all images sequentially
async function downloadAllImages() {
  console.log('Starting to download images...');
  
  for (const image of images) {
    try {
      await downloadImage(image.url, image.filename);
    } catch (error) {
      console.error(`Error downloading ${image.filename}: ${error.message}`);
    }
  }
  
  console.log('Finished downloading all images!');
}

// Execute the download
downloadAllImages();
