Skip to content

Commit 6b8a3f6

Browse files
committed
feat(analysis): schedule analysis for the uploaded files
Signed-off-by: Shruti3004 <mail2shruti.ag@gmail.com>
1 parent 9acf685 commit 6b8a3f6

File tree

11 files changed

+424
-146
lines changed

11 files changed

+424
-146
lines changed

src/api/getFolder.js

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
Copyright (C) 2021 Shruti Agarwal (mail2shruti.ag@gmail.com)
3+
4+
SPDX-License-Identifier: GPL-2.0
5+
This program is free software; you can redistribute it and/or
6+
modify it under the terms of the GNU General Public License
7+
version 2 as published by the Free Software Foundation.
8+
This program is distributed in the hope that it will be useful,
9+
but WITHOUT ANY WARRANTY; without even the implied warranty of
10+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+
GNU General Public License for more details.
12+
You should have received a copy of the GNU General Public License along
13+
with this program; if not, write to the Free Software Foundation, Inc.,
14+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15+
*/
16+
17+
import { endpoints } from "../constants/endpoints";
18+
import sendRequest from "./sendRequest";
19+
import { getToken } from "../shared/authHelper";
20+
21+
export const getAllFolders = () => {
22+
const url = endpoints.folders.getAll();
23+
return sendRequest({
24+
url,
25+
method: "GET",
26+
credentials: "include",
27+
headers: {
28+
Authorization: getToken(),
29+
},
30+
});
31+
};

src/api/upload.js

+45
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,51 @@ export const createUpload = async (
5252
});
5353
};
5454

55+
export const scheduleAnalysis = async (folderId, uploadId, scanData) => {
56+
const url = endpoints.upload.scheduleAnalysis();
57+
const token = await getToken();
58+
const { bucket, copyrightEmailAuthor, ecc, keyword, mime, monk, nomos, ojo } =
59+
scanData?.analysis;
60+
const { nomosMonk, bulkReused, newScanner, ojoDecider } = scanData?.decider;
61+
const { reuseUpload, reuseGroup, reuseMain, reuseEnhanced } = scanData?.reuse;
62+
return sendRequest({
63+
url,
64+
method: "POST",
65+
credentials: "include",
66+
headers: {
67+
Authorization: token,
68+
folderId,
69+
uploadId,
70+
groupName: "",
71+
},
72+
body: {
73+
analysis: {
74+
bucket,
75+
copyright_email_author: copyrightEmailAuthor,
76+
ecc,
77+
keyword,
78+
mime,
79+
monk,
80+
nomos,
81+
ojo,
82+
package: scanData.analysis.package,
83+
},
84+
decider: {
85+
nomos_monk: nomosMonk,
86+
bulk_reused: bulkReused,
87+
new_scanner: newScanner,
88+
ojo_decider: ojoDecider,
89+
},
90+
reuse: {
91+
reuse_upload: reuseUpload,
92+
reuse_group: reuseGroup,
93+
reuse_main: reuseMain,
94+
reuse_enhanced: reuseEnhanced,
95+
},
96+
},
97+
});
98+
};
99+
55100
createUpload.propTypes = {
56101
folderId: PropTypes.number,
57102
uploadDescription: PropTypes.string,
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,44 @@
11
import React from "react";
2+
import PropTypes from "prop-types";
23
import InputContainer from "../../../Widgets/Input";
34

4-
function LicenseDecider() {
5-
const handleChange = () => {};
5+
function LicenseDecider({ decider, handleChange }) {
66
return (
77
<div id="upload-concluded-license-decider" className="mt-4">
88
<p className="font-demi">Automatic Concluded License Decider, based on</p>
99
<InputContainer
1010
type="checkbox"
11-
checked={false}
12-
name="licenseConcluded"
13-
id="upload-report-license-concluded"
11+
checked={decider.nomosMonk}
12+
name="nomosMonk"
13+
id="upload-file-nomos-monk"
1414
onChange={(e) => handleChange(e)}
1515
>
1616
... scanners matches if all Nomos findings are within the Monk findings
1717
</InputContainer>
1818
<InputContainer
1919
type="checkbox"
20-
checked={false}
21-
name="licenseConcluded"
22-
id="upload-report-license-concluded"
20+
checked={decider.ojoDecider}
21+
name="ojoDecider"
22+
id="upload-file-ojo-decider"
2323
onChange={(e) => handleChange(e)}
2424
>
2525
.. scanners matches if Ojo findings are no contradiction with other
2626
findings
2727
</InputContainer>
2828
<InputContainer
2929
type="checkbox"
30-
checked={false}
31-
name="licenseConcluded"
32-
id="upload-report-license-concluded"
30+
checked={decider.bulkReused}
31+
name="bulkReused"
32+
id="upload-file-bulk-reused"
3333
onChange={(e) => handleChange(e)}
3434
>
3535
... bulk phrases from reused packages
3636
</InputContainer>
3737
<InputContainer
3838
type="checkbox"
39-
checked={false}
40-
name="licenseConcluded"
41-
id="upload-report-license-concluded"
39+
checked={decider.newScanner}
40+
name="newScanner"
41+
id="upload-file-new-scanner"
4242
onChange={(e) => handleChange(e)}
4343
>
4444
... new scanner results, i.e., decisions were marked as work in progress
@@ -48,4 +48,9 @@ function LicenseDecider() {
4848
);
4949
}
5050

51+
LicenseDecider.propTypes = {
52+
decider: PropTypes.object,
53+
handleChange: PropTypes.func,
54+
};
55+
5156
export default LicenseDecider;
Original file line numberDiff line numberDiff line change
@@ -1,98 +1,94 @@
11
import React from "react";
2+
import PropTypes from "prop-types";
23
import InputContainer from "../../../Widgets/Input";
34

4-
function OptionalAnalysis() {
5-
const handleChange = () => {};
5+
function OptionalAnalysis({ analysis, handleChange }) {
66
return (
77
<div id="uplod-optional-analysis" className="mt-4">
88
<p className="font-demi">Select optional analysis</p>
99
<InputContainer
1010
type="checkbox"
11-
checked={false}
12-
name="licenseConcluded"
13-
id="upload-report-license-concluded"
11+
checked={analysis.copyrightEmailAuthor}
12+
name="copyrightEmailAuthor"
13+
id="upload-file-copyright-email-author"
1414
onChange={(e) => handleChange(e)}
1515
>
1616
Copyright/Email/URL/Author Analysis
1717
</InputContainer>
1818
<InputContainer
1919
type="checkbox"
20-
checked={false}
21-
name="licenseConcluded"
22-
id="upload-report-license-concluded"
20+
checked={analysis.ecc}
21+
name="ecc"
22+
id="upload-file-ecc"
2323
onChange={(e) => handleChange(e)}
2424
>
2525
ECC Analysis, scanning for text fragments potentially relevant for
2626
export control
2727
</InputContainer>
2828
<InputContainer
2929
type="checkbox"
30-
checked={false}
31-
name="licenseConcluded"
32-
id="upload-report-license-concluded"
30+
checked={analysis.keyword}
31+
name="keyword"
32+
id="upload-file-keyword"
3333
onChange={(e) => handleChange(e)}
3434
>
3535
Keyword Analysis
3636
</InputContainer>
3737
<InputContainer
3838
type="checkbox"
39-
checked={false}
40-
name="licenseConcluded"
41-
id="upload-report-license-concluded"
39+
checked={analysis.mime}
40+
name="mime"
41+
id="upload-file-mime"
4242
onChange={(e) => handleChange(e)}
4343
>
4444
MIME-type Analysis (Determine mimetype of every file. Not needed for
4545
licenses or buckets)
4646
</InputContainer>
4747
<InputContainer
4848
type="checkbox"
49-
checked={false}
50-
name="licenseConcluded"
51-
id="upload-report-license-concluded"
49+
checked={analysis.monk}
50+
name="monk"
51+
id="upload-file-monk"
5252
onChange={(e) => handleChange(e)}
5353
>
5454
Monk License Analysis, scanning for licenses performing a text
5555
comparison
5656
</InputContainer>
5757
<InputContainer
5858
type="checkbox"
59-
checked={false}
60-
name="licenseConcluded"
61-
id="upload-report-license-concluded"
59+
checked={analysis.nomos}
60+
name="nomos"
61+
id="upload-file-nomos"
6262
onChange={(e) => handleChange(e)}
6363
>
6464
Nomos License Analysis, scanning for licenses using regular expressions
6565
</InputContainer>
6666
<InputContainer
6767
type="checkbox"
68-
checked={false}
69-
name="licenseConcluded"
70-
id="upload-report-license-concluded"
68+
checked={analysis.ojo}
69+
name="ojo"
70+
id="upload-file-ojo"
7171
onChange={(e) => handleChange(e)}
7272
>
7373
Ojo License Analysis, scanning for licenses using
7474
SPDX-License-Identifier
7575
</InputContainer>
7676
<InputContainer
7777
type="checkbox"
78-
checked={false}
79-
name="licenseConcluded"
80-
id="upload-report-license-concluded"
78+
checked={analysis.package}
79+
name="package"
80+
id="upload-file-package"
8181
onChange={(e) => handleChange(e)}
8282
>
8383
Package Analysis (Parse package headers)
8484
</InputContainer>
85-
<InputContainer
86-
type="checkbox"
87-
checked={false}
88-
name="licenseConcluded"
89-
id="upload-report-license-concluded"
90-
onChange={(e) => handleChange(e)}
91-
>
92-
Software Heritage Analysis
93-
</InputContainer>
9485
</div>
9586
);
9687
}
9788

89+
OptionalAnalysis.propTypes = {
90+
analysis: PropTypes.object,
91+
handleChange: PropTypes.func,
92+
};
93+
9894
export default OptionalAnalysis;
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,66 @@
11
import React from "react";
2+
import PropTypes from "prop-types";
23
import InputContainer from "../../../Widgets/Input";
34

4-
function UploadReuse() {
5-
const handleChange = () => {};
5+
function UploadReuse({ reuse, handleChange }) {
66
return (
77
<div id="upload-reuse" className="mt-4">
88
<p className="font-demi">(Optional) Reuse</p>
9-
<InputContainer
9+
{/* <InputContainer
1010
type="checkbox"
11-
checked={false}
11+
checked={reuse.main}
1212
name="licenseConcluded"
13-
id="upload-report-license-concluded"
13+
id="upload-file"
1414
onChange={(e) => handleChange(e)}
1515
>
1616
Select an already uploaded package for reuse in specific folder
1717
</InputContainer>
1818
<select>
1919
<option value="Software Repository">Software Repository</option>
20-
</select>
20+
</select> */}
2121
<InputContainer
2222
type="checkbox"
23-
checked={false}
24-
name="licenseConcluded"
25-
id="upload-report-license-concluded"
23+
checked={reuse.reuseEnhanced}
24+
name="reuseEnhanced"
25+
id="upload-file-reuse-enhanced"
2626
onChange={(e) => handleChange(e)}
2727
>
2828
Enhanced reuse (slower)
2929
</InputContainer>
3030
<InputContainer
3131
type="checkbox"
32-
checked={false}
33-
name="licenseConcluded"
34-
id="upload-report-license-concluded"
32+
checked={reuse.reuseMain}
33+
name="reuseMain"
34+
id="upload-file-reuse-main"
3535
onChange={(e) => handleChange(e)}
3636
>
3737
Reuse main license/s
3838
</InputContainer>
39-
<InputContainer
39+
{/* <InputContainer
4040
type="checkbox"
41-
checked={false}
41+
checked={reuse.main}
4242
name="licenseConcluded"
43-
id="upload-report-license-concluded"
43+
id="upload-file"
4444
onChange={(e) => handleChange(e)}
4545
>
4646
Reuse report configuration settings
4747
</InputContainer>
4848
<InputContainer
4949
type="checkbox"
50-
checked={false}
50+
checked={reuse.main}
5151
name="licenseConcluded"
52-
id="upload-report-license-concluded"
52+
id="upload-file"
5353
onChange={(e) => handleChange(e)}
5454
>
5555
Reuse deactivated copyright when agent version changes
56-
</InputContainer>
56+
</InputContainer> */}
5757
</div>
5858
);
5959
}
6060

61+
UploadReuse.propTypes = {
62+
reuse: PropTypes.object,
63+
handleChange: PropTypes.func,
64+
};
65+
6166
export default UploadReuse;

0 commit comments

Comments
 (0)