File size: 1,478 Bytes
89fd6fd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
const builderService = require("../services/builderService");
const crypto = require("crypto");

const jobs = new Map();

const createJob = async (req, res) => {
  const { url, name, packageName, iconUrl } = req.body;

  if (!url || !name || !packageName) {
    return res.status(400).json({
      status: false,
      message: "missing required parameters"
    });
  }

  const jobId = crypto.randomBytes(8).toString("hex");
  
  const jobData = {
    jobId,
    url,
    name,
    packageName,
    iconUrl,
    status: "queue",
    createdAt: new Date().toISOString()
  };

  jobs.set(jobId, jobData);

  builderService.processApk(jobId, jobData, (result) => {
    jobs.set(jobId, { ...jobs.get(jobId), ...result });
  });

  res.json({
    status: true,
    message: "job created successfully",
    data: { jobId }
  });
};

const checkJob = (req, res) => {
  const { jobId } = req.params;
  const job = jobs.get(jobId);

  if (!job) {
    return res.status(404).json({ status: false, message: "job id not found" });
  }

  res.json({
    status: true,
    data: {
      jobId: job.jobId,
      status: job.status,
      progress: job.progress || "0%"
    }
  });
};

const infoJob = (req, res) => {
  const { jobId } = req.params;
  const job = jobs.get(jobId);

  if (!job) {
    return res.status(404).json({ status: false, message: "job id not found" });
  }

  res.json({
    status: true,
    data: job
  });
};

module.exports = {
  createJob,
  checkJob,
  infoJob
};