mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 09:48:58 -04:00
* add getServerInfo http setup api * update generated doc
This commit is contained in:
parent
585fce8d61
commit
e5a0477542
17 changed files with 168 additions and 1 deletions
|
@ -0,0 +1,13 @@
|
|||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServerInfo](./kibana-plugin-server.httpserverinfo.md) > [host](./kibana-plugin-server.httpserverinfo.host.md)
|
||||
|
||||
## HttpServerInfo.host property
|
||||
|
||||
The hostname of the server
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
host: string;
|
||||
```
|
|
@ -0,0 +1,22 @@
|
|||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServerInfo](./kibana-plugin-server.httpserverinfo.md)
|
||||
|
||||
## HttpServerInfo interface
|
||||
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
export interface HttpServerInfo
|
||||
```
|
||||
|
||||
## Properties
|
||||
|
||||
| Property | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| [host](./kibana-plugin-server.httpserverinfo.host.md) | <code>string</code> | The hostname of the server |
|
||||
| [name](./kibana-plugin-server.httpserverinfo.name.md) | <code>string</code> | The name of the Kibana server |
|
||||
| [port](./kibana-plugin-server.httpserverinfo.port.md) | <code>number</code> | The port the server is listening on |
|
||||
| [protocol](./kibana-plugin-server.httpserverinfo.protocol.md) | <code>'http' | 'https' | 'socket'</code> | The protocol used by the server |
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServerInfo](./kibana-plugin-server.httpserverinfo.md) > [name](./kibana-plugin-server.httpserverinfo.name.md)
|
||||
|
||||
## HttpServerInfo.name property
|
||||
|
||||
The name of the Kibana server
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
name: string;
|
||||
```
|
|
@ -0,0 +1,13 @@
|
|||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServerInfo](./kibana-plugin-server.httpserverinfo.md) > [port](./kibana-plugin-server.httpserverinfo.port.md)
|
||||
|
||||
## HttpServerInfo.port property
|
||||
|
||||
The port the server is listening on
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
port: number;
|
||||
```
|
|
@ -0,0 +1,13 @@
|
|||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServerInfo](./kibana-plugin-server.httpserverinfo.md) > [protocol](./kibana-plugin-server.httpserverinfo.protocol.md)
|
||||
|
||||
## HttpServerInfo.protocol property
|
||||
|
||||
The protocol used by the server
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
protocol: 'http' | 'https' | 'socket';
|
||||
```
|
|
@ -0,0 +1,13 @@
|
|||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServiceSetup](./kibana-plugin-server.httpservicesetup.md) > [getServerInfo](./kibana-plugin-server.httpservicesetup.getserverinfo.md)
|
||||
|
||||
## HttpServiceSetup.getServerInfo property
|
||||
|
||||
Provides common [information](./kibana-plugin-server.httpserverinfo.md) about the running http server.
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
getServerInfo: () => HttpServerInfo;
|
||||
```
|
|
@ -86,6 +86,7 @@ async (context, request, response) => {
|
|||
| [createCookieSessionStorageFactory](./kibana-plugin-server.httpservicesetup.createcookiesessionstoragefactory.md) | <code><T>(cookieOptions: SessionStorageCookieOptions<T>) => Promise<SessionStorageFactory<T>></code> | Creates cookie based session storage factory [SessionStorageFactory](./kibana-plugin-server.sessionstoragefactory.md) |
|
||||
| [createRouter](./kibana-plugin-server.httpservicesetup.createrouter.md) | <code>() => IRouter</code> | Provides ability to declare a handler function for a particular path and HTTP request method. |
|
||||
| [csp](./kibana-plugin-server.httpservicesetup.csp.md) | <code>ICspConfig</code> | The CSP config used for Kibana. |
|
||||
| [getServerInfo](./kibana-plugin-server.httpservicesetup.getserverinfo.md) | <code>() => HttpServerInfo</code> | Provides common [information](./kibana-plugin-server.httpserverinfo.md) about the running http server. |
|
||||
| [isTlsEnabled](./kibana-plugin-server.httpservicesetup.istlsenabled.md) | <code>boolean</code> | Flag showing whether a server was configured to use TLS connection. |
|
||||
| [registerAuth](./kibana-plugin-server.httpservicesetup.registerauth.md) | <code>(handler: AuthenticationHandler) => void</code> | To define custom authentication and/or authorization mechanism for incoming requests. |
|
||||
| [registerOnPostAuth](./kibana-plugin-server.httpservicesetup.registeronpostauth.md) | <code>(handler: OnPostAuthHandler) => void</code> | To define custom logic to perform for incoming requests. |
|
||||
|
|
|
@ -64,6 +64,7 @@ The plugin integrates with the core system via lifecycle events: `setup`<!-- -->
|
|||
| [ErrorHttpResponseOptions](./kibana-plugin-server.errorhttpresponseoptions.md) | HTTP response parameters |
|
||||
| [FakeRequest](./kibana-plugin-server.fakerequest.md) | Fake request object created manually by Kibana plugins. |
|
||||
| [HttpResponseOptions](./kibana-plugin-server.httpresponseoptions.md) | HTTP response parameters |
|
||||
| [HttpServerInfo](./kibana-plugin-server.httpserverinfo.md) | |
|
||||
| [HttpServiceSetup](./kibana-plugin-server.httpservicesetup.md) | Kibana HTTP Service provides own abstraction for work with HTTP stack. Plugins don't have direct access to <code>hapi</code> server and its primitives anymore. Moreover, plugins shouldn't rely on the fact that HTTP Service uses one or another library under the hood. This gives the platform flexibility to upgrade or changing our internal HTTP stack without breaking plugins. If the HTTP Service lacks functionality you need, we are happy to discuss and support your needs. |
|
||||
| [HttpServiceStart](./kibana-plugin-server.httpservicestart.md) | |
|
||||
| [IContextContainer](./kibana-plugin-server.icontextcontainer.md) | An object that handles registration of context providers and configuring handlers with context. |
|
||||
|
|
|
@ -62,6 +62,7 @@ beforeAll(() => {
|
|||
|
||||
beforeEach(() => {
|
||||
config = {
|
||||
name: 'kibana',
|
||||
host: '127.0.0.1',
|
||||
maxPayload: new ByteSizeValue(1024),
|
||||
port: 10002,
|
||||
|
@ -1077,4 +1078,37 @@ describe('setup contract', () => {
|
|||
expect(isTlsEnabled).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('#getServerInfo', () => {
|
||||
it('returns correct information', async () => {
|
||||
let { getServerInfo } = await server.setup(config);
|
||||
|
||||
expect(getServerInfo()).toEqual({
|
||||
host: '127.0.0.1',
|
||||
name: 'kibana',
|
||||
port: 10002,
|
||||
protocol: 'http',
|
||||
});
|
||||
|
||||
({ getServerInfo } = await server.setup({
|
||||
...config,
|
||||
port: 12345,
|
||||
name: 'custom-name',
|
||||
host: 'localhost',
|
||||
}));
|
||||
|
||||
expect(getServerInfo()).toEqual({
|
||||
host: 'localhost',
|
||||
name: 'custom-name',
|
||||
port: 12345,
|
||||
protocol: 'http',
|
||||
});
|
||||
});
|
||||
|
||||
it('returns correct protocol when ssl is enabled', async () => {
|
||||
const { getServerInfo } = await server.setup(configWithSSL);
|
||||
|
||||
expect(getServerInfo().protocol).toEqual('https');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -35,7 +35,7 @@ import {
|
|||
import { IsAuthenticated, AuthStateStorage, GetAuthState } from './auth_state_storage';
|
||||
import { AuthHeadersStorage, GetAuthHeaders } from './auth_headers_storage';
|
||||
import { BasePath } from './base_path_service';
|
||||
import { HttpServiceSetup } from './types';
|
||||
import { HttpServiceSetup, HttpServerInfo } from './types';
|
||||
|
||||
/** @internal */
|
||||
export interface HttpServerSetup {
|
||||
|
@ -58,6 +58,7 @@ export interface HttpServerSetup {
|
|||
get: GetAuthState;
|
||||
isAuthenticated: IsAuthenticated;
|
||||
};
|
||||
getServerInfo: () => HttpServerInfo;
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
|
@ -122,6 +123,12 @@ export class HttpServer {
|
|||
isAuthenticated: this.authState.isAuthenticated,
|
||||
},
|
||||
getAuthHeaders: this.authRequestHeaders.get,
|
||||
getServerInfo: () => ({
|
||||
name: config.name,
|
||||
host: config.host,
|
||||
port: config.port,
|
||||
protocol: this.server!.info.protocol,
|
||||
}),
|
||||
isTlsEnabled: config.ssl.enabled,
|
||||
// Return server instance with the connection options so that we can properly
|
||||
// bridge core and the "legacy" Kibana internally. Once this bridge isn't
|
||||
|
|
|
@ -77,12 +77,19 @@ const createSetupContractMock = () => {
|
|||
auth: createAuthMock(),
|
||||
getAuthHeaders: jest.fn(),
|
||||
isTlsEnabled: false,
|
||||
getServerInfo: jest.fn(),
|
||||
};
|
||||
setupContract.createCookieSessionStorageFactory.mockResolvedValue(
|
||||
sessionStorageMock.createFactory()
|
||||
);
|
||||
setupContract.createRouter.mockImplementation(() => mockRouter.create());
|
||||
setupContract.getAuthHeaders.mockReturnValue({ authorization: 'authorization-header' });
|
||||
setupContract.getServerInfo.mockReturnValue({
|
||||
host: 'localhost',
|
||||
name: 'kibana',
|
||||
port: 80,
|
||||
protocol: 'http',
|
||||
});
|
||||
return setupContract;
|
||||
};
|
||||
|
||||
|
|
|
@ -252,6 +252,11 @@ export interface HttpServiceSetup {
|
|||
contextName: T,
|
||||
provider: RequestHandlerContextProvider<T>
|
||||
) => RequestHandlerContextContainer;
|
||||
|
||||
/**
|
||||
* Provides common {@link HttpServerInfo | information} about the running http server.
|
||||
*/
|
||||
getServerInfo: () => HttpServerInfo;
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
|
@ -273,3 +278,15 @@ export interface HttpServiceStart {
|
|||
/** Indicates if http server is listening on a given port */
|
||||
isListening: (port: number) => boolean;
|
||||
}
|
||||
|
||||
/** @public */
|
||||
export interface HttpServerInfo {
|
||||
/** The name of the Kibana server */
|
||||
name: string;
|
||||
/** The hostname of the server */
|
||||
host: string;
|
||||
/** The port the server is listening on */
|
||||
port: number;
|
||||
/** The protocol used by the server */
|
||||
protocol: 'http' | 'https' | 'socket';
|
||||
}
|
||||
|
|
|
@ -103,6 +103,7 @@ export {
|
|||
GetAuthState,
|
||||
HttpResponseOptions,
|
||||
HttpResponsePayload,
|
||||
HttpServerInfo,
|
||||
HttpServiceSetup,
|
||||
HttpServiceStart,
|
||||
ErrorHttpResponseOptions,
|
||||
|
|
|
@ -292,6 +292,7 @@ export class LegacyService implements CoreService {
|
|||
},
|
||||
csp: setupDeps.core.http.csp,
|
||||
isTlsEnabled: setupDeps.core.http.isTlsEnabled,
|
||||
getServerInfo: setupDeps.core.http.getServerInfo,
|
||||
},
|
||||
savedObjects: {
|
||||
setClientFactoryProvider: setupDeps.core.savedObjects.setClientFactoryProvider,
|
||||
|
|
|
@ -105,6 +105,7 @@ function createCoreSetupMock() {
|
|||
get: httpService.auth.get,
|
||||
isAuthenticated: httpService.auth.isAuthenticated,
|
||||
},
|
||||
getServerInfo: httpService.getServerInfo,
|
||||
};
|
||||
httpMock.createRouter.mockImplementation(() => httpService.createRouter(''));
|
||||
|
||||
|
|
|
@ -164,6 +164,7 @@ export function createPluginSetupContext<TPlugin, TPluginDependencies>(
|
|||
auth: { get: deps.http.auth.get, isAuthenticated: deps.http.auth.isAuthenticated },
|
||||
csp: deps.http.csp,
|
||||
isTlsEnabled: deps.http.isTlsEnabled,
|
||||
getServerInfo: deps.http.getServerInfo,
|
||||
},
|
||||
savedObjects: {
|
||||
setClientFactoryProvider: deps.savedObjects.setClientFactoryProvider,
|
||||
|
|
|
@ -736,6 +736,14 @@ export interface HttpResponseOptions {
|
|||
// @public
|
||||
export type HttpResponsePayload = undefined | string | Record<string, any> | Buffer | Stream;
|
||||
|
||||
// @public (undocumented)
|
||||
export interface HttpServerInfo {
|
||||
host: string;
|
||||
name: string;
|
||||
port: number;
|
||||
protocol: 'http' | 'https' | 'socket';
|
||||
}
|
||||
|
||||
// @public
|
||||
export interface HttpServiceSetup {
|
||||
// (undocumented)
|
||||
|
@ -747,6 +755,7 @@ export interface HttpServiceSetup {
|
|||
createCookieSessionStorageFactory: <T>(cookieOptions: SessionStorageCookieOptions<T>) => Promise<SessionStorageFactory<T>>;
|
||||
createRouter: () => IRouter;
|
||||
csp: ICspConfig;
|
||||
getServerInfo: () => HttpServerInfo;
|
||||
isTlsEnabled: boolean;
|
||||
registerAuth: (handler: AuthenticationHandler) => void;
|
||||
registerOnPostAuth: (handler: OnPostAuthHandler) => void;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue