with Recreation.gov and OpenSRS?
Emit new events when selected campsite's availability is changed. See the documentation
Emit new event when the DNS/ZONE check has passed or failed at the registry. See the documentation
Emit new events when a new recreation area is added to the Recreation.gov database. See the documentation
Emit new event for each new domain registration. See the documentation
Emit new event when the status of a domain transfer changes. See the documentation
Retrieves details of a specific campsite. See the documentation
Initiate a domain transfer to OpenSRS. See the documentation
Searchs campsites with the given query. If no query given, returns campsites from the beginning. Returning campsite number is limited to 1000
. See the documentation
Searchs recreation areas with the given properties. If no parameters given, returns all. See the documentation
The Recreation.gov API provides access to data about federal recreational activities and areas. With it, you can fetch details about campsites, tours, permits, and articles. On Pipedream, leverage this API to automate notifications, analyze recreational data, or integrate with other services for trip planning or environmental monitoring.
import { axios } from "@pipedream/platform"
export default defineComponent({
props: {
recreation_gov: {
type: "app",
app: "recreation_gov",
}
},
async run({steps, $}) {
return await axios($, {
url: `https://ridb.recreation.gov/api/v1/campsites`,
params: {
apikey: `${this.recreation_gov.$auth.api_key}`,
},
})
},
})
import { axios } from "@pipedream/platform";
import crypto from 'crypto';
export default defineComponent({
props: {
opensrs: {
type: "app",
app: "opensrs",
}
},
async run({steps, $}) {
const connectionDetails = {
reseller_username: this.opensrs.$auth.reseller_username,
api_key: this.opensrs.$auth.api_key,
api_host_port: this.opensrs.$auth.api_host_port
};
//Payload of the request
const xml = `<?xml version='1.0' encoding='UTF-8' standalone='no' ?>
<!DOCTYPE OPS_envelope SYSTEM 'ops.dtd'>
<OPS_envelope>
<header>
<version>0.9</version>
</header>
<body>
<data_block>
<dt_assoc>
<item key="protocol">XCP</item>
<item key="action">LOOKUP</item>
<item key="object">DOMAIN</item>
<item key="attributes">
<dt_assoc>
<item key="domain">${this.opensrs.$auth.domain}</item>
</dt_assoc>
</item>
</dt_assoc>
</data_block>
</body>
</OPS_envelope>`;
// Generate signature
const generateSignature = (xml, apiKey) => {
let md5 = crypto.createHash('md5');
md5.update(xml + apiKey);
let firstHash = md5.digest('hex');
md5 = crypto.createHash('md5');
md5.update(firstHash + apiKey);
return md5.digest('hex');
};
const signature = generateSignature(xml, connectionDetails.api_key);
// Prepare and call OpenSRS API
const headers = {
'Content-Type': 'text/xml',
'X-Username': connectionDetails.reseller_username,
'X-Signature': signature
};
return await axios($, {
method: "POST",
url: connectionDetails.api_host_port,
headers,
data: xml
});
},
})