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, } }); }