* tidy bsky auth * hook up new auth verifier * update auth throughout ozone * handle mod signing keys * fix bad var * fix key parsing in pds * fix admin auth test * rename test * update did doc id values * null creds string -> `none` * fix fetchLabels auth check * ✨ Add a couple more proxied requests that we use in ozone ui * Add runit to the services/bsky Dockerfile (#2254) add runit to the services/bsky Dockerfile * Improve tag detection (#2260) * Allow tags to lead with and contain only numbers * Break tags on other whitespace characters * Export regexes from rich text detection * Add test * Add test * Disallow number-only tags * Avoid combining enclosing screen chars * Allow full-width number sign * Clarify tests * Fix punctuation edge case * Reorder * Simplify, add another test * Another test, comment * Version packages (#2261) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * 🐛 Increment attempt count after each attempt to push ozone event (#2239) * Ozone delegates email sending to actor's pds (#2272) * ozone delegates email sending to user's pds * lexicon: add content field to mod email event * test email sending via mod event * fix auth verifier method * better error handling for get account infos * fix labeler service id * fix iss on auth headers * fix dev-env ozone did * fix tests & another jwt issuer * ozone: fix ip check * fix aud check on pds mod service auth * tidy --------- Co-authored-by: Foysal Ahamed <foysal@blueskyweb.xyz> Co-authored-by: Jake Gold <52801504+Jacob2161@users.noreply.github.com> Co-authored-by: Eric Bailey <git@esb.lol> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: devin ivy <devinivy@gmail.com>
@atproto/xrpc-server: atproto HTTP API server library
TypeScript library for implementing atproto HTTP API services, with Lexicon schema validation.
Usage
import { LexiconDoc } from '@atproto/lexicon'
import * as xrpc from '@atproto/xrpc-server'
import express from 'express'
const lexicons: LexiconDoc[] = [
{
lexicon: 1,
id: 'io.example.ping',
defs: {
main: {
type: 'query',
parameters: {
type: 'params',
properties: { message: { type: 'string' } },
},
output: {
encoding: 'application/json',
},
},
},
},
]
// create xrpc server
const server = xrpc.createServer(lexicons)
function ping(ctx: {
auth: xrpc.HandlerAuth | undefined
params: xrpc.Params
input: xrpc.HandlerInput | undefined
req: express.Request
res: express.Response
}) {
return { encoding: 'application/json', body: { message: ctx.params.message } }
}
server.method('io.example.ping', ping)
// mount in express
const app = express()
app.use(server.router)
app.listen(8080)
License
This project is dual-licensed under MIT and Apache 2.0 terms:
- MIT license (LICENSE-MIT.txt or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, (LICENSE-APACHE.txt or http://www.apache.org/licenses/LICENSE-2.0)
Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.