Skip to content

Commit 8f3e13b

Browse files
Merge pull request #7 from websiteshot/add-template-handling
add template handling, type declaration
2 parents fa17949 + d2656b5 commit 8f3e13b

File tree

5 files changed

+30
-8
lines changed

5 files changed

+30
-8
lines changed

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@websiteshot/nodejs-client",
3-
"version": "0.0.7",
3+
"version": "0.0.8",
44
"description": "NodeJS Client for Websiteshot.",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

src/types/CreateRequest.type.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ import { ScreenshotParameter } from './ScreenshotParameter.type'
22
import { Url } from './Url.type'
33

44
export interface CreateRequest {
5-
screenshotParameter: ScreenshotParameter
6-
urls: Url[]
5+
screenshotParameter?: ScreenshotParameter
6+
urls?: Url[]
7+
templateId?: string
78
scheduledTs?: number
89
scheduleDescription?: {
910
value: number

src/websiteshot.controller.ts

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,36 @@ export enum Route {
1111
PROJECTS = 'projects',
1212
SCREENSHOTS = 'screenshots',
1313
ROOT = 'root',
14+
TEMPLATES = 'templates',
1415
}
1516

1617
export class WebsiteshotController {
1718
constructor(private config: Config) {}
1819

1920
public async create(request: CreateRequest): Promise<CreateResponse> {
20-
const url = `${BASE_URL}/${Route.API}/${Route.PROJECTS}/${this.config.projectId}`
21-
const data = {
22-
screenshotParameter: request.screenshotParameter,
23-
urls: request.urls,
21+
let url
22+
let data
23+
24+
if (request.templateId) {
25+
url = `${BASE_URL}/${Route.API}/${Route.PROJECTS}/${this.config.projectId}/${Route.TEMPLATES}/${request.templateId}`
26+
data = {
27+
scheduledTs: request.scheduledTs,
28+
scheduleDescription: request.scheduleDescription,
29+
}
30+
} else if (request.screenshotParameter && request.urls) {
31+
url = `${BASE_URL}/${Route.API}/${Route.PROJECTS}/${this.config.projectId}`
32+
data = {
33+
screenshotParameter: request.screenshotParameter,
34+
urls: request.urls,
35+
scheduledTs: request.scheduledTs,
36+
scheduleDescription: request.scheduleDescription,
37+
}
38+
}
39+
40+
if (!url || !data) {
41+
throw new Error(
42+
`Mandatory Parameter missing. ScreenshotParameter and URLs or TemplateId must be set.`,
43+
)
2444
}
2545

2646
const config: AxiosRequestConfig = {

tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"outDir": "./dist",
77
"baseUrl": "./src",
88
"types": ["node", "jest"],
9+
"declaration": true,
910
"esModuleInterop": true,
1011
"plugins": [
1112
{

0 commit comments

Comments
 (0)