feat(integerations): add route to get user details (#4030)
* feat(integerations): add route to get user details * Commit updated API documentation * test(integrations): implement unit test for get user details --------- Co-authored-by: Owncast <owncast@owncast.online> Co-authored-by: Gabe Kangas <gabek@real-ity.com>
This commit is contained in:
parent
2c2bf2b5bb
commit
d135d2907a
File diff suppressed because one or more lines are too long
28
openapi.yaml
28
openapi.yaml
@ -3217,6 +3217,34 @@ paths:
|
|||||||
responses:
|
responses:
|
||||||
'204':
|
'204':
|
||||||
$ref: '#/components/responses/204'
|
$ref: '#/components/responses/204'
|
||||||
|
/integrations/moderation/chat/user/{userId}:
|
||||||
|
get:
|
||||||
|
summary: Get a user's details
|
||||||
|
operationId: ExternalGetUserDetails
|
||||||
|
tags: ['External', 'Chat']
|
||||||
|
security:
|
||||||
|
- BearerAuth: []
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: userId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
description: The ID of the user to find
|
||||||
|
required: true
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: User information
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/ModerationUserDetails'
|
||||||
|
'401':
|
||||||
|
$ref: '#/components/responses/401BasicAuth'
|
||||||
|
'404':
|
||||||
|
$ref: '#/components/responses/404'
|
||||||
|
default:
|
||||||
|
$ref: '#/components/responses/Default'
|
||||||
|
|
||||||
/moderation/chat/user/{userId}:
|
/moderation/chat/user/{userId}:
|
||||||
get:
|
get:
|
||||||
summary: Get a user's details
|
summary: Get a user's details
|
||||||
|
@ -3,6 +3,7 @@ request = request('http://127.0.0.1:8080');
|
|||||||
|
|
||||||
const getAdminResponse = require('./lib/admin').getAdminResponse;
|
const getAdminResponse = require('./lib/admin').getAdminResponse;
|
||||||
const sendAdminPayload = require('./lib/admin').sendAdminPayload;
|
const sendAdminPayload = require('./lib/admin').sendAdminPayload;
|
||||||
|
const registerChat = require('./lib/chat').registerChat;
|
||||||
|
|
||||||
var accessToken = '';
|
var accessToken = '';
|
||||||
var webhookID;
|
var webhookID;
|
||||||
@ -126,6 +127,16 @@ test('test fetch chat history OPTIONS request', async () => {
|
|||||||
.expect(204);
|
.expect(204);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('get user details', async () => {
|
||||||
|
const registration = await registerChat();
|
||||||
|
const userId = registration.id;
|
||||||
|
|
||||||
|
await request
|
||||||
|
.get(`/api/integrations/moderation/chat/user/${userId}`)
|
||||||
|
.set('Authorization', 'Bearer ' + accessToken)
|
||||||
|
.expect(200);
|
||||||
|
});
|
||||||
|
|
||||||
test('delete access token', async () => {
|
test('delete access token', async () => {
|
||||||
const res = await sendAdminPayload('accesstokens/delete', {
|
const res = await sendAdminPayload('accesstokens/delete', {
|
||||||
token: accessToken,
|
token: accessToken,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// Package generated provides primitives to interact with the openapi HTTP API.
|
// Package generated provides primitives to interact with the openapi HTTP API.
|
||||||
//
|
//
|
||||||
// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.3.0 DO NOT EDIT.
|
// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.4.1 DO NOT EDIT.
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -503,14 +503,6 @@ type StreamOutputVariant struct {
|
|||||||
VideoPassthrough *bool `json:"videoPassthrough,omitempty"`
|
VideoPassthrough *bool `json:"videoPassthrough,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// SystemActionEvent defines model for SystemActionEvent.
|
|
||||||
type SystemActionEvent struct {
|
|
||||||
Body *string `json:"body,omitempty"`
|
|
||||||
Id *string `json:"id,omitempty"`
|
|
||||||
Timestamp *string `json:"timestamp,omitempty"`
|
|
||||||
Type *string `json:"type,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// SystemMessage defines model for SystemMessage.
|
// SystemMessage defines model for SystemMessage.
|
||||||
type SystemMessage struct {
|
type SystemMessage struct {
|
||||||
Body *string `json:"body,omitempty"`
|
Body *string `json:"body,omitempty"`
|
||||||
@ -1088,16 +1080,16 @@ type RegisterAnonymousChatUserJSONRequestBody RegisterAnonymousChatUserJSONBody
|
|||||||
type UpdateUserEnabledJSONRequestBody UpdateUserEnabledJSONBody
|
type UpdateUserEnabledJSONRequestBody UpdateUserEnabledJSONBody
|
||||||
|
|
||||||
// SendChatActionJSONRequestBody defines body for SendChatAction for application/json ContentType.
|
// SendChatActionJSONRequestBody defines body for SendChatAction for application/json ContentType.
|
||||||
type SendChatActionJSONRequestBody = SystemActionEvent
|
type SendChatActionJSONRequestBody = MessageEvent
|
||||||
|
|
||||||
// ExternalUpdateMessageVisibilityJSONRequestBody defines body for ExternalUpdateMessageVisibility for application/json ContentType.
|
// ExternalUpdateMessageVisibilityJSONRequestBody defines body for ExternalUpdateMessageVisibility for application/json ContentType.
|
||||||
type ExternalUpdateMessageVisibilityJSONRequestBody = MessageVisibilityUpdate
|
type ExternalUpdateMessageVisibilityJSONRequestBody = MessageVisibilityUpdate
|
||||||
|
|
||||||
// SendIntegrationChatMessageJSONRequestBody defines body for SendIntegrationChatMessage for application/json ContentType.
|
// SendIntegrationChatMessageJSONRequestBody defines body for SendIntegrationChatMessage for application/json ContentType.
|
||||||
type SendIntegrationChatMessageJSONRequestBody = UserMessage
|
type SendIntegrationChatMessageJSONRequestBody = MessageEvent
|
||||||
|
|
||||||
// SendSystemMessageJSONRequestBody defines body for SendSystemMessage for application/json ContentType.
|
// SendSystemMessageJSONRequestBody defines body for SendSystemMessage for application/json ContentType.
|
||||||
type SendSystemMessageJSONRequestBody = SystemMessage
|
type SendSystemMessageJSONRequestBody = MessageEvent
|
||||||
|
|
||||||
// SendSystemMessageToConnectedClientJSONRequestBody defines body for SendSystemMessageToConnectedClient for application/json ContentType.
|
// SendSystemMessageToConnectedClientJSONRequestBody defines body for SendSystemMessageToConnectedClient for application/json ContentType.
|
||||||
type SendSystemMessageToConnectedClientJSONRequestBody = SystemMessage
|
type SendSystemMessageToConnectedClientJSONRequestBody = SystemMessage
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -5,6 +5,7 @@ import (
|
|||||||
|
|
||||||
"github.com/owncast/owncast/models"
|
"github.com/owncast/owncast/models"
|
||||||
"github.com/owncast/owncast/webserver/handlers/admin"
|
"github.com/owncast/owncast/webserver/handlers/admin"
|
||||||
|
"github.com/owncast/owncast/webserver/handlers/moderation"
|
||||||
"github.com/owncast/owncast/webserver/router/middleware"
|
"github.com/owncast/owncast/webserver/router/middleware"
|
||||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||||
)
|
)
|
||||||
@ -67,6 +68,10 @@ func (*ServerInterfaceImpl) ExternalSetStreamTitleOptions(w http.ResponseWriter,
|
|||||||
middleware.RequireExternalAPIAccessToken(models.ScopeHasAdminAccess, admin.ExternalSetStreamTitle)(w, r)
|
middleware.RequireExternalAPIAccessToken(models.ScopeHasAdminAccess, admin.ExternalSetStreamTitle)(w, r)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (*ServerInterfaceImpl) ExternalGetUserDetails(w http.ResponseWriter, r *http.Request, userId string) {
|
||||||
|
middleware.RequireExternalAPIAccessToken(models.ScopeHasAdminAccess, moderation.ExternalGetUserDetails)(w, r)
|
||||||
|
}
|
||||||
|
|
||||||
func (*ServerInterfaceImpl) ExternalGetChatMessages(w http.ResponseWriter, r *http.Request) {
|
func (*ServerInterfaceImpl) ExternalGetChatMessages(w http.ResponseWriter, r *http.Request) {
|
||||||
middleware.RequireExternalAPIAccessToken(models.ScopeHasAdminAccess, ExternalGetChatMessages)(w, r)
|
middleware.RequireExternalAPIAccessToken(models.ScopeHasAdminAccess, ExternalGetChatMessages)(w, r)
|
||||||
}
|
}
|
||||||
|
@ -74,3 +74,7 @@ func GetUserDetails(w http.ResponseWriter, r *http.Request) {
|
|||||||
utils.InternalErrorHandler(w, err)
|
utils.InternalErrorHandler(w, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ExternalGetUserDetails(integration models.ExternalAPIUser, w http.ResponseWriter, r *http.Request) {
|
||||||
|
GetUserDetails(w, r)
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user