66 lines
2.5 KiB
TypeScript
66 lines
2.5 KiB
TypeScript
|
|
import { json_content_parser, } from '../http/parse-request-content';
|
|
import { OIDCProvider } from '../security/openid-connect';
|
|
import { PKCECookieProvider } from '../security/pkce-cookie';
|
|
import { StorageProvider } from '../storage';
|
|
import { Argon2HashProvider } from '../security/argon-hash';
|
|
import { SessionProvider } from '../security/session';
|
|
import { BaseHttpDependencies, HttpConfig, create_http_server } from '../http/server';
|
|
import { SnowflakeProvider } from '../utilities/snowflake-uid';
|
|
|
|
import { register_csp_report_endpoint } from '../http/content-security-policy';
|
|
import { register_asset_endpoints } from './assets';
|
|
import { register_root_page_endpoint } from './root-page';
|
|
import { register_submit_login_endpoint } from './authentication/submit-login';
|
|
import { register_login_callback_endpoint } from './authentication/login-callback';
|
|
import { register_logout_endpoint } from './authentication/logout';
|
|
import { ColorThemeProvider } from '../utilities/color-themes';
|
|
import { OutboundHttpProvider } from '../http/outbound';
|
|
import { ServicesProvider } from '../services';
|
|
import { RSSFeedReaderProvider } from '../utilities/rss-feeds';
|
|
|
|
export interface HttpWebDependencies extends BaseHttpDependencies {
|
|
oidc: OIDCProvider;
|
|
pkce_cookie: PKCECookieProvider;
|
|
storage: StorageProvider;
|
|
argon2: Argon2HashProvider;
|
|
session: SessionProvider;
|
|
snowflake: SnowflakeProvider;
|
|
color_themes: ColorThemeProvider;
|
|
outbound_http: OutboundHttpProvider;
|
|
rss_feed_reader: RSSFeedReaderProvider;
|
|
services: ServicesProvider;
|
|
}
|
|
|
|
export function create_http_web_server(conf: HttpConfig, deps: HttpWebDependencies) {
|
|
return create_http_server(conf, deps, {
|
|
endpoints: [
|
|
register_csp_report_endpoint,
|
|
register_asset_endpoints,
|
|
|
|
// Login/logout
|
|
register_submit_login_endpoint,
|
|
register_login_callback_endpoint,
|
|
register_logout_endpoint,
|
|
|
|
// Pages
|
|
register_root_page_endpoint,
|
|
],
|
|
content_parsers: {
|
|
// 'application/ld+json': json_content_parser,
|
|
'application/csp-report': json_content_parser,
|
|
// 'application/yaml': yaml_content_parser,
|
|
// 'application/ld+yaml': yaml_content_parser,
|
|
// 'image/png': binary_content_parser,
|
|
// 'image/jpeg': binary_content_parser,
|
|
// 'image/gif': binary_content_parser,
|
|
// 'text/html': text_content_parser,
|
|
// 'text/markdown': text_content_parser,
|
|
// 'text/css': text_content_parser,
|
|
// 'text/xml': xml_content_parser,
|
|
// 'application/xml': xml_content_parser,
|
|
// 'application/rss+xml': xml_content_parser,
|
|
}
|
|
});
|
|
}
|