Skip to content
This repository was archived by the owner on Jan 25, 2024. It is now read-only.

Commit 83ddf39

Browse files
committed
Update the record if it's already existed
1 parent f34c4d4 commit 83ddf39

File tree

1 file changed

+52
-2
lines changed

1 file changed

+52
-2
lines changed

AkamaiSample/main.js

+52-2
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,54 @@ const addTxtRecord = async (zoneName, payload, userInfo) => {
124124
console.log(`Add TXT record "${recordName}" finished successfully.`);
125125
};
126126

127+
/**
128+
* Update TXT record to domain
129+
* @param zoneName zone name
130+
* @param payload challenge data
131+
* @param userInfo user credentials
132+
* @returns {Promise<void>}
133+
*/
134+
const updateTxtRecord = async (zoneName, payload, userInfo) => {
135+
const recordName = payload.challenge.txt_record_name;
136+
const recordValue = payload.challenge.txt_record_val;
137+
console.log(`Update TXT record "${recordName}" to zone ${zoneName}`);
138+
139+
var data = {
140+
"name": recordName,
141+
"type": "txt",
142+
"ttl": 60,
143+
"rdata": [recordValue]
144+
};
145+
146+
var eg = new EdgeGrid(
147+
userInfo.client_token,
148+
userInfo.client_secret,
149+
userInfo.access_token,
150+
`https://${akamaiHost}`);
151+
152+
eg.auth({
153+
path: `/config-dns/v2/zones/${zoneName}/names/${recordName}/types/txt`,
154+
method: 'PUT',
155+
headers: {'Content-Type': 'application/json'},
156+
body: data
157+
});
158+
159+
let response;
160+
try {
161+
// console.log(eg);
162+
response = await request(eg.request);
163+
}
164+
catch (err) {
165+
console.log(`Couldn't update TXT record "${recordName}" to zone ${zoneName}. Reason is: ${getErrorString(error)}`);
166+
throw new Error(`Couldn't update TXT record "${recordName}" to zone ${zoneName}`);
167+
}
168+
if (response.statusCode !== 200) {
169+
console.log(`Couldn't update TXT record "${recordName}" to zone ${zoneName}. Reason is: status code ${response.statusCode} and body ${JSON.stringify(response.body)}`);
170+
throw new Error(`Couldn't update TXT record "${recordName}" to zone ${zoneName}`);
171+
}
172+
console.log(`Update TXT record "${recordName}" finished successfully.`);
173+
};
174+
127175
/**
128176
* Delete single TXT record from zone.
129177
* @param zoneName zone name
@@ -177,9 +225,11 @@ const setChallenge = async (payload, userInfo) => {
177225
domain = domain.replace('*.', '');
178226
record = await getTxtRecord(domain, payload, userInfo);
179227
if (record.length !== 0) {
180-
await removeTxtRecord(domain, payload, userInfo);
228+
//await removeTxtRecord(domain, payload, userInfo);
229+
await updateTxtRecord(domain, payload, userInfo);
230+
} else {
231+
await addTxtRecord(domain, payload, userInfo);
181232
}
182-
await addTxtRecord(domain, payload, userInfo);
183233
console.log(`Add challenge for domain ${domain} finished.`);
184234
};
185235

0 commit comments

Comments
 (0)