@fly/cdn
Version:
Fly's TypeScript CDN
32 lines • 3.42 kB
JavaScript
/**
* @module Backends
*/
import { proxy } from "../proxy";
import { normalizeOptions } from "./subdomain_service";
/**
* Creates a `fetch` like function for proxying requests to hosted Ghost Pro blogs.
*
* Example:
* ```typescript
* import { ghost } from "./src/backends";
* const backend = ghost({
* subdomain: "fly-io",
* directory: "/articles/",
* hostname: "fly.io"
* });
* ```
* @param options Ghost Pro blog information. Accepts subdomain as a string.
*/
export function ghostProBlog(options) {
const config = normalizeOptions(options);
const ghostHost = `${config.subdomain}.ghost.io`;
const uri = `https://${ghostHost}${config.directory}`;
const headers = {
"host": ghostHost,
"x-forwarded-host": config.hostname || false
};
const fn = proxy(uri, { headers: headers });
return Object.assign(fn, { proxyConfig: config });
}
ghostProBlog.normalizeOptions = normalizeOptions;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2hvc3RfcHJvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JhY2tlbmRzL2dob3N0X3Byby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxLQUFLLEVBQWlCLE1BQU0sVUFBVSxDQUFDO0FBQ2hELE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RTs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFrQztJQUM3RCxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV6QyxNQUFNLFNBQVMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLFdBQVcsQ0FBQTtJQUNoRCxNQUFNLEdBQUcsR0FBRyxXQUFXLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUE7SUFDckQsTUFBTSxPQUFPLEdBQUc7UUFDZCxNQUFNLEVBQUUsU0FBUztRQUNqQixrQkFBa0IsRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLEtBQUs7S0FDN0MsQ0FBQTtJQUVELE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUMzQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUE7QUFDbEQsQ0FBQztBQUVELFlBQVksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBCYWNrZW5kc1xuICovXG5cbmltcG9ydCB7IHByb3h5LCBQcm94eUZ1bmN0aW9uIH0gZnJvbSBcIi4uL3Byb3h5XCI7XG5pbXBvcnQgeyBTdWJkb21haW5PcHRpb25zLCBub3JtYWxpemVPcHRpb25zIH0gZnJvbSBcIi4vc3ViZG9tYWluX3NlcnZpY2VcIjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYGZldGNoYCBsaWtlIGZ1bmN0aW9uIGZvciBwcm94eWluZyByZXF1ZXN0cyB0byBob3N0ZWQgR2hvc3QgUHJvIGJsb2dzLlxuICogXG4gKiBFeGFtcGxlOlxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgZ2hvc3QgfSBmcm9tIFwiLi9zcmMvYmFja2VuZHNcIjtcbiAqIGNvbnN0IGJhY2tlbmQgPSBnaG9zdCh7XG4gKiAgc3ViZG9tYWluOiBcImZseS1pb1wiLFxuICogIGRpcmVjdG9yeTogXCIvYXJ0aWNsZXMvXCIsXG4gKiAgaG9zdG5hbWU6IFwiZmx5LmlvXCJcbiAqIH0pO1xuICogYGBgXG4gKiBAcGFyYW0gb3B0aW9ucyBHaG9zdCBQcm8gYmxvZyBpbmZvcm1hdGlvbi4gQWNjZXB0cyBzdWJkb21haW4gYXMgYSBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnaG9zdFByb0Jsb2cob3B0aW9uczogU3ViZG9tYWluT3B0aW9ucyB8IHN0cmluZyk6IFByb3h5RnVuY3Rpb248U3ViZG9tYWluT3B0aW9ucz4ge1xuICBjb25zdCBjb25maWcgPSBub3JtYWxpemVPcHRpb25zKG9wdGlvbnMpO1xuXG4gIGNvbnN0IGdob3N0SG9zdCA9IGAke2NvbmZpZy5zdWJkb21haW59Lmdob3N0LmlvYFxuICBjb25zdCB1cmkgPSBgaHR0cHM6Ly8ke2dob3N0SG9zdH0ke2NvbmZpZy5kaXJlY3Rvcnl9YFxuICBjb25zdCBoZWFkZXJzID0ge1xuICAgIFwiaG9zdFwiOiBnaG9zdEhvc3QsXG4gICAgXCJ4LWZvcndhcmRlZC1ob3N0XCI6IGNvbmZpZy5ob3N0bmFtZSB8fCBmYWxzZVxuICB9XG5cbiAgY29uc3QgZm4gPSBwcm94eSh1cmksIHsgaGVhZGVyczogaGVhZGVycyB9KVxuICByZXR1cm4gT2JqZWN0LmFzc2lnbihmbiwgeyBwcm94eUNvbmZpZzogY29uZmlnfSlcbn1cblxuZ2hvc3RQcm9CbG9nLm5vcm1hbGl6ZU9wdGlvbnMgPSBub3JtYWxpemVPcHRpb25zO1xuIl19