1
0
mirror of https://github.com/sasjs/adapter.git synced 2025-12-11 09:24:35 +00:00

Merge branch 'master' into create-context

This commit is contained in:
Krishna Acondy
2020-09-08 18:53:25 +01:00
committed by GitHub
9 changed files with 44 additions and 17 deletions

18
package-lock.json generated
View File

@@ -1103,9 +1103,9 @@
"dev": true "dev": true
}, },
"supports-color": { "supports-color": {
"version": "7.1.0", "version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true, "dev": true,
"requires": { "requires": {
"has-flag": "^4.0.0" "has-flag": "^4.0.0"
@@ -1648,9 +1648,9 @@
} }
}, },
"@types/jest": { "@types/jest": {
"version": "26.0.10", "version": "26.0.13",
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.10.tgz", "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.13.tgz",
"integrity": "sha512-i2m0oyh8w/Lum7wWK/YOZJakYF8Mx08UaKA1CtbmFeDquVhAEdA7znacsVSf2hJ1OQ/OfVMGN90pw/AtzF8s/Q==", "integrity": "sha512-sCzjKow4z9LILc6DhBvn5AkIfmQzDZkgtVVKmGwVrs5tuid38ws281D4l+7x1kP487+FlKDh5kfMZ8WSPAdmdA==",
"dev": true, "dev": true,
"requires": { "requires": {
"jest-diff": "^25.2.1", "jest-diff": "^25.2.1",
@@ -5904,9 +5904,9 @@
"dev": true "dev": true
}, },
"supports-color": { "supports-color": {
"version": "7.1.0", "version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true, "dev": true,
"requires": { "requires": {
"has-flag": "^4.0.0" "has-flag": "^4.0.0"

View File

@@ -37,7 +37,7 @@
"license": "ISC", "license": "ISC",
"devDependencies": { "devDependencies": {
"@types/isomorphic-fetch": "0.0.35", "@types/isomorphic-fetch": "0.0.35",
"@types/jest": "^26.0.10", "@types/jest": "^26.0.13",
"cp": "^0.2.0", "cp": "^0.2.0",
"jest": "^25.5.4", "jest": "^25.5.4",
"path": "^0.12.7", "path": "^0.12.7",

View File

@@ -1,4 +1,4 @@
import { isLogInRequired, needsRetry } from './utils' import { isLogInRequired, needsRetry, isUrl } from './utils'
import { CsrfToken } from './types/CsrfToken' import { CsrfToken } from './types/CsrfToken'
import { UploadFile } from './types/UploadFile' import { UploadFile } from './types/UploadFile'
@@ -11,7 +11,10 @@ export class FileUploader {
private jobsPath: string, private jobsPath: string,
private setCsrfTokenWeb: any, private setCsrfTokenWeb: any,
private csrfToken: CsrfToken | null = null private csrfToken: CsrfToken | null = null
) {} ) {
if (serverUrl) isUrl(serverUrl)
}
private retryCount = 0 private retryCount = 0
public uploadFile(sasJob: string, files: UploadFile[], params: any) { public uploadFile(sasJob: string, files: UploadFile[], params: any) {

View File

@@ -1,9 +1,13 @@
import { isUrl } from './utils'
/** /**
* A client for interfacing with the SAS9 REST API * A client for interfacing with the SAS9 REST API
* *
*/ */
export class SAS9ApiClient { export class SAS9ApiClient {
constructor(private serverUrl: string) {} constructor(private serverUrl: string) {
if (serverUrl) isUrl(serverUrl)
}
/** /**
* returns on object containing the server URL * returns on object containing the server URL

View File

@@ -2,7 +2,8 @@ import {
isAuthorizeFormRequired, isAuthorizeFormRequired,
parseAndSubmitAuthorizeForm, parseAndSubmitAuthorizeForm,
convertToCSV, convertToCSV,
makeRequest makeRequest,
isUrl
} from './utils' } from './utils'
import * as NodeFormData from 'form-data' import * as NodeFormData from 'form-data'
import * as path from 'path' import * as path from 'path'
@@ -26,7 +27,10 @@ export class SASViyaApiClient {
if (!rootFolderName) { if (!rootFolderName) {
throw new Error('Root folder must be provided.') throw new Error('Root folder must be provided.')
} }
if (serverUrl) isUrl(serverUrl)
} }
private csrfToken: CsrfToken | null = null private csrfToken: CsrfToken | null = null
private rootFolder: Folder | null = null private rootFolder: Folder | null = null
private sessionManager = new SessionManager( private sessionManager = new SessionManager(

View File

@@ -883,7 +883,7 @@ export default class SASjs {
) { ) {
if (this.retryCountWeb < requestRetryLimit) { if (this.retryCountWeb < requestRetryLimit) {
this.retryCountWeb++ this.retryCountWeb++
this.request(sasJob, data).then( this.request(sasJob, data, config, loginRequiredCallback).then(
(res: any) => resolve(res), (res: any) => resolve(res),
(err: any) => reject(err) (err: any) => reject(err)
) )

View File

@@ -1,5 +1,5 @@
import { Session, Context, CsrfToken } from './types' import { Session, Context, CsrfToken } from './types'
import { asyncForEach, makeRequest } from './utils' import { asyncForEach, makeRequest, isUrl } from './utils'
const MAX_SESSION_COUNT = 1 const MAX_SESSION_COUNT = 1
@@ -8,7 +8,10 @@ export class SessionManager {
private serverUrl: string, private serverUrl: string,
private contextName: string, private contextName: string,
private setCsrfToken: (csrfToken: CsrfToken) => void private setCsrfToken: (csrfToken: CsrfToken) => void
) {} ) {
if (serverUrl) isUrl(serverUrl)
}
private sessions: Session[] = [] private sessions: Session[] = []
private currentContext: Context | null = null private currentContext: Context | null = null
private csrfToken: CsrfToken | null = null private csrfToken: CsrfToken | null = null

View File

@@ -13,3 +13,4 @@ export * from './parseSasViyaLog'
export * from './serialize' export * from './serialize'
export * from './splitChunks' export * from './splitChunks'
export * from './parseWeboutResponse' export * from './parseWeboutResponse'
export * from './isUrl'

12
src/utils/isUrl.ts Normal file
View File

@@ -0,0 +1,12 @@
export const isUrl = (url: string): boolean => {
const pattern = new RegExp(
'^(http://|https://)[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(/.*)?$',
'gi'
)
if (pattern.test(url)) return true
else
throw new Error(
`'${url}' is not a valid url. An example of a valid url is 'http://valid-url.com'.`
)
}