this repo has no description
1pub mod api;
2pub mod auth;
3pub mod repo;
4pub mod state;
5pub mod storage;
6pub mod sync;
7
8use axum::{
9 Router,
10 routing::{any, get, post},
11};
12use state::AppState;
13
14pub fn app(state: AppState) -> Router {
15 Router::new()
16 .route("/health", get(api::server::health))
17 .route(
18 "/xrpc/com.atproto.server.describeServer",
19 get(api::server::describe_server),
20 )
21 .route(
22 "/xrpc/com.atproto.server.createAccount",
23 post(api::identity::create_account),
24 )
25 .route(
26 "/xrpc/com.atproto.server.createSession",
27 post(api::server::create_session),
28 )
29 .route(
30 "/xrpc/com.atproto.server.getSession",
31 get(api::server::get_session),
32 )
33 .route(
34 "/xrpc/com.atproto.server.deleteSession",
35 post(api::server::delete_session),
36 )
37 .route(
38 "/xrpc/com.atproto.server.refreshSession",
39 post(api::server::refresh_session),
40 )
41 .route(
42 "/xrpc/com.atproto.server.getServiceAuth",
43 get(api::server::get_service_auth),
44 )
45 .route(
46 "/xrpc/com.atproto.identity.resolveHandle",
47 get(api::identity::resolve_handle),
48 )
49 .route(
50 "/xrpc/com.atproto.repo.createRecord",
51 post(api::repo::create_record),
52 )
53 .route(
54 "/xrpc/com.atproto.repo.putRecord",
55 post(api::repo::put_record),
56 )
57 .route(
58 "/xrpc/com.atproto.repo.getRecord",
59 get(api::repo::get_record),
60 )
61 .route(
62 "/xrpc/com.atproto.repo.deleteRecord",
63 post(api::repo::delete_record),
64 )
65 .route(
66 "/xrpc/com.atproto.repo.listRecords",
67 get(api::repo::list_records),
68 )
69 .route(
70 "/xrpc/com.atproto.repo.describeRepo",
71 get(api::repo::describe_repo),
72 )
73 .route(
74 "/xrpc/com.atproto.repo.uploadBlob",
75 post(api::repo::upload_blob),
76 )
77 .route(
78 "/xrpc/com.atproto.repo.applyWrites",
79 post(api::repo::apply_writes),
80 )
81 .route(
82 "/xrpc/com.atproto.sync.getLatestCommit",
83 get(sync::get_latest_commit),
84 )
85 .route(
86 "/xrpc/com.atproto.sync.listRepos",
87 get(sync::list_repos),
88 )
89 .route(
90 "/xrpc/com.atproto.sync.getBlob",
91 get(sync::get_blob),
92 )
93 .route(
94 "/xrpc/com.atproto.sync.listBlobs",
95 get(sync::list_blobs),
96 )
97 .route(
98 "/xrpc/com.atproto.sync.getRepoStatus",
99 get(sync::get_repo_status),
100 )
101 .route(
102 "/xrpc/com.atproto.server.checkAccountStatus",
103 get(api::server::check_account_status),
104 )
105 .route(
106 "/xrpc/com.atproto.identity.getRecommendedDidCredentials",
107 get(api::identity::get_recommended_did_credentials),
108 )
109 .route(
110 "/xrpc/com.atproto.repo.listMissingBlobs",
111 get(api::repo::list_missing_blobs),
112 )
113 .route(
114 "/xrpc/com.atproto.sync.notifyOfUpdate",
115 post(sync::notify_of_update),
116 )
117 .route(
118 "/xrpc/com.atproto.sync.requestCrawl",
119 post(sync::request_crawl),
120 )
121 .route(
122 "/xrpc/com.atproto.moderation.createReport",
123 post(api::moderation::create_report),
124 )
125 .route(
126 "/xrpc/com.atproto.admin.getAccountInfo",
127 get(api::admin::get_account_info),
128 )
129 .route(
130 "/xrpc/com.atproto.admin.getAccountInfos",
131 get(api::admin::get_account_infos),
132 )
133 .route(
134 "/xrpc/com.atproto.server.activateAccount",
135 post(api::server::activate_account),
136 )
137 .route(
138 "/xrpc/com.atproto.server.deactivateAccount",
139 post(api::server::deactivate_account),
140 )
141 .route(
142 "/xrpc/com.atproto.identity.updateHandle",
143 post(api::identity::update_handle),
144 )
145 .route(
146 "/xrpc/com.atproto.admin.deleteAccount",
147 post(api::admin::delete_account),
148 )
149 .route(
150 "/xrpc/com.atproto.admin.updateAccountEmail",
151 post(api::admin::update_account_email),
152 )
153 .route(
154 "/xrpc/com.atproto.admin.updateAccountHandle",
155 post(api::admin::update_account_handle),
156 )
157 .route(
158 "/xrpc/com.atproto.admin.updateAccountPassword",
159 post(api::admin::update_account_password),
160 )
161 .route(
162 "/xrpc/com.atproto.server.listAppPasswords",
163 get(api::server::list_app_passwords),
164 )
165 .route(
166 "/xrpc/com.atproto.server.createAppPassword",
167 post(api::server::create_app_password),
168 )
169 .route(
170 "/xrpc/com.atproto.server.revokeAppPassword",
171 post(api::server::revoke_app_password),
172 )
173 // I know I know, I'm not supposed to implement appview endpoints. Leave me be
174 .route(
175 "/xrpc/app.bsky.feed.getTimeline",
176 get(api::feed::get_timeline),
177 )
178 .route("/.well-known/did.json", get(api::identity::well_known_did))
179 .route("/u/{handle}/did.json", get(api::identity::user_did_doc))
180 .route("/xrpc/{*method}", any(api::proxy::proxy_handler))
181 .with_state(state)
182}