Skip to content

Commit

Permalink
Merge pull request #161 from snyk/feat/respect-org-flag-in-token-vali…
Browse files Browse the repository at this point in the history
…dation

feat: add org propagation [ZEN-340]
  • Loading branch information
patricia-v committed Oct 6, 2022
2 parents 18ac5a1 + 08a6364 commit 3862c64
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 5 deletions.
1 change: 1 addition & 0 deletions src/analysis.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ export async function analyzeFolders(options: FileAnalysisOptions): Promise<File
...options.connection,
...options.fileOptions,
languages: options.languages,
...(options.analysisContext ? { analysisContext: options.analysisContext } : {}),
});
if (fileBundle === null) return null;

Expand Down
25 changes: 21 additions & 4 deletions src/bundles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ async function* prepareRemoteBundle(
emitter.createBundleProgress(cumulativeProgress, options.files.length);
for (const chunkedFiles of composeFilePayloads(options.files, MAX_PAYLOAD)) {
const apiParams = {
...pick(options, ['baseURL', 'sessionToken', 'source', 'removedFiles', 'requestId', 'base64Encoding']),
...pick(options, ['baseURL', 'sessionToken', 'source', 'removedFiles', 'requestId', 'base64Encoding', 'org']),
files: chunkedFiles.reduce((d, f) => {
// deepcode ignore PrototypePollution: FP this is an internal code
d[f.bundlePath] = f.hash;
Expand Down Expand Up @@ -91,7 +91,15 @@ interface UpdateRemoteBundleOptions extends ConnectionOptions {
export async function uploadRemoteBundle(options: UpdateRemoteBundleOptions): Promise<void> {
let uploadedFiles = 0;
emitter.uploadBundleProgress(0, options.files.length);
const apiParams = pick(options, ['baseURL', 'sessionToken', 'source', 'bundleHash', 'requestId', 'base64Encoding']);
const apiParams = pick(options, [
'baseURL',
'sessionToken',
'source',
'bundleHash',
'requestId',
'base64Encoding',
'org',
]);

const uploadFileChunks = async (bucketFiles: FileInfo[]): Promise<void> => {
// Note: we specifically create __new__ isolated bundles here to faster files upload
Expand Down Expand Up @@ -129,7 +137,7 @@ async function fullfillRemoteBundle(options: FullfillRemoteBundleOptions): Promi
// Check remove bundle to make sure no missing files left
let attempts = 0;
let { remoteBundle } = options;
const connectionOptions = pick(options, ['baseURL', 'sessionToken', 'source', 'requestId', 'base64Encoding']);
const connectionOptions = pick(options, ['baseURL', 'sessionToken', 'source', 'requestId', 'base64Encoding', 'org']);

while (remoteBundle.missingFiles.length && attempts < (options.maxAttempts || MAX_UPLOAD_ATTEMPTS)) {
const missingFiles = await resolveBundleFiles(options.baseDir, remoteBundle.missingFiles);
Expand All @@ -156,7 +164,15 @@ interface RemoteBundleFactoryOptions extends PrepareRemoteBundleOptions {

export async function remoteBundleFactory(options: RemoteBundleFactoryOptions): Promise<RemoteBundle | null> {
let remoteBundle: RemoteBundle | null = null;
const baseOptions = pick(options, ['baseURL', 'sessionToken', 'source', 'baseDir', 'requestId', 'base64Encoding']);
const baseOptions = pick(options, [
'baseURL',
'sessionToken',
'source',
'baseDir',
'requestId',
'base64Encoding',
'org',
]);
const bundleFactory = prepareRemoteBundle(omit(options, ['baseDir']));
for await (const response of bundleFactory) {
if (response.type === 'error') {
Expand Down Expand Up @@ -253,6 +269,7 @@ export async function createBundleFromFolders(options: CreateBundleFromFoldersOp
...pick(options, ['baseURL', 'sessionToken', 'source', 'requestId', 'base64Encoding']),
baseDir,
files: bundleFiles,
...(options.analysisContext?.org?.name ? { org: options.analysisContext.org.name } : {}),
};

// Create remote bundle
Expand Down
5 changes: 5 additions & 0 deletions src/http.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ export interface ConnectionOptions {
source: string;
requestId?: string;
base64Encoding: boolean;
org?: string;
}

// The trick to typecast union type alias
Expand Down Expand Up @@ -246,6 +247,7 @@ export async function createBundle(
source: options.source,
...(options.requestId && { 'snyk-request-id': options.requestId }),
...(base64Encoding ? { 'content-type': 'application/octet-stream', 'content-encoding': 'gzip' } : null),
...(options.org && { 'snyk-org-name': options.org }),
},
url: `${options.baseURL}/bundle`,
method: 'post',
Expand Down Expand Up @@ -283,6 +285,7 @@ export async function checkBundle(options: CheckBundleOptions): Promise<Result<R
...prepareTokenHeaders(options.sessionToken),
source: options.source,
...(options.requestId && { 'snyk-request-id': options.requestId }),
...(options.org && { 'snyk-org-name': options.org }),
},
url: `${options.baseURL}/bundle/${options.bundleHash}`,
method: 'get',
Expand Down Expand Up @@ -331,6 +334,7 @@ export async function extendBundle(
source: options.source,
...(options.requestId && { 'snyk-request-id': options.requestId }),
...(base64Encoding ? { 'content-type': 'application/octet-stream', 'content-encoding': 'gzip' } : null),
...(options.org && { 'snyk-org-name': options.org }),
},
url: `${options.baseURL}/bundle/${options.bundleHash}`,
method: 'put',
Expand Down Expand Up @@ -390,6 +394,7 @@ export async function getAnalysis(
...prepareTokenHeaders(options.sessionToken),
source: options.source,
...(options.requestId && { 'snyk-request-id': options.requestId }),
...(options.org && { 'snyk-org-name': options.org }),
},
url: `${options.baseURL}/analysis`,
method: 'post',
Expand Down
2 changes: 1 addition & 1 deletion src/interfaces/analysis-options.interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ export interface FileAnalysisOptions extends AnalysisContext {
languages?: string[];
}

export interface AnalyzeFoldersOptions {
export interface AnalyzeFoldersOptions extends AnalysisContext {
paths: string[];
symlinksEnabled?: boolean;
defaultFileIgnores?: string[];
Expand Down

0 comments on commit 3862c64

Please sign in to comment.