@simpleview/sv-redirects-client
v1.13.0
Published
Client for communicating with sv-redirects
Maintainers
Keywords
Readme
sv-redirects-client
Client for communicating with the sv-redirects GraphQL system.
It is built in TypeScript and has one peer dependency of @simpleview/sv-graphql-client.
OS Support
The expectation is that this application will be installed in Linux using sv-kubernetes.
Prerequisites
Install
Using npm:
npm install @simpleview/sv-redirects-clientUsing yarn:
yarn install @simpleview/sv-redirects-clientUpdate
To update to the latest version, rerun the install command.
Authentication Requirements
Interactions with sv-redirects require authentication and require redirects read and write permission to access the resolvers.
Use a Google Service Account when interacting with the service on behalf of a product.
const { AuthPrefix } = require("@simpleview/sv-auth-client");
const { GraphServer } = require("@simpleview/sv-graphql-client");
async function serviceAccountToken() {
const service_account = JSON.parse(SERVICE_ACCOUNT_JSON);
const { auth } = new GraphServer({
graphUrl: AUTH_GRAPHQL_URL,
prefixes: [AuthPrefix]
});
// authorize the service_account return the token
const { token } = await auth.login_service_account({
input: {
email: service_account.client_email,
private_key: service_account.private_key
},
fields: `
success
token
`
});
return token;
}The token should be added to the context for each function call.
Implementation & Usage
To see the input parameters and output fields of an endpoint, view the Schema in the GraphQL Explorer.
RedirectsPrefix
RedirectsPrefix can be loaded into the sv-graphql-client GraphServer to use as a client library for accessing redirects in GraphQL.
JavaScript:
const { RedirectsPrefix } = require("@simpleview/sv-redirects-client");
const { GraphServer } = require("@simpleview/sv-graphql-client");
module.exports = new GraphServer({ graphUrl: GRAPHQL_URL, prefixes: [RedirectsPrefix] });TypeScript:
import { RedirectsPrefix } from "@simpleview/sv-redirects-client";
import { GraphServer } from "@simpleview/sv-graphql-client";
export default new GraphServer({ graphUrl: GRAPHQL_URL, prefixes: [RedirectsPrefix] });Where you are making server requests:
JavaScript:
const { redirects } = require("./redirectsGraphServer");TypeScript:
import { redirects } from "./redirectsGraphServer";RedirectsPrefix.list
This method wraps the redirects.list GraphQL query.
const result = await redirects.list({
fields: `
count
docs {
acct_id
server_name
location {
path
url
status_code
}
active
certs_synced
debug {
ip
http_status
https_status
}
}
`,
filter: {
server_name: "www.your-server-name.com"
},
options: {
sort: {
limit: Infinity,
skip: 0,
field: "server_name",
dir: "asc"
}
},
context: {
acct_id: "your_acct_id",
token // from serviceAccountToken call
}
});RedirectsPrefix.upsert
This method wraps the redirects.upsert GraphQL mutation.
const result = await redirects.upsert({
fields: `
success
message
results {
success
message
doc {
acct_id
server_name
location {
path
url
status_code
}
active
}
}
errors {
success
message
}
`,
input: {
server_name: "www.your-server-name.com",
location: [{
path: "/",
url: "https://redirect-server-name.com{{request_uri}}",
status_code: 301
}],
active: true
},
context: {
acct_id: "your_acct_id",
token // from serviceAccountToken call
}
});RedirectsPrefix.remove
This method wraps the redirects.remove GraphQL mutation.
const result = await redirects.remove({
fields: "success message",
input: {
server_name: "www.your-server-name.com"
},
context: {
acct_id: "your_acct_id",
token // from serviceAccountToken call
}
});