mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-16 11:23:11 -06:00
Merge branch 'master' into alias-servers-659
This commit is contained in:
commit
470ad737e4
|
|
@ -1,32 +0,0 @@
|
||||||
version: 2
|
|
||||||
jobs:
|
|
||||||
dendrite:
|
|
||||||
docker:
|
|
||||||
- image: matrixdotorg/sytest-dendrite
|
|
||||||
working_directory: /src
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
|
|
||||||
# Set up dendrite
|
|
||||||
- run:
|
|
||||||
name: Build Dendrite
|
|
||||||
command: ./build.sh
|
|
||||||
- run:
|
|
||||||
name: Copy dummy keys to root
|
|
||||||
command: |
|
|
||||||
mv .circleci/matrix_key.pem .
|
|
||||||
mv .circleci/server.key .
|
|
||||||
- run:
|
|
||||||
name: Run sytest with whitelisted tests
|
|
||||||
command: /dendrite_sytest.sh
|
|
||||||
|
|
||||||
- store_artifacts:
|
|
||||||
path: /logs
|
|
||||||
destination: logs
|
|
||||||
- store_test_results:
|
|
||||||
path: /logs
|
|
||||||
workflows:
|
|
||||||
version: 2
|
|
||||||
build:
|
|
||||||
jobs:
|
|
||||||
- dendrite
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
-----BEGIN MATRIX PRIVATE KEY-----
|
|
||||||
Key-ID: ed25519:zXtB
|
|
||||||
|
|
||||||
jDyHsx0EXbAfvM32yBEKQfIy1FHrmwtB1uMAbm5INBg=
|
|
||||||
-----END MATRIX PRIVATE KEY-----
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
||||||
-----BEGIN PRIVATE KEY-----
|
|
||||||
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
|
|
||||||
+yaBExKfroZjsksctNAcAbgpuvhLLG8=
|
|
||||||
-----END PRIVATE KEY-----
|
|
||||||
|
|
@ -25,7 +25,9 @@ run](scripts/build-test-lint.sh).
|
||||||
When a Pull Request is submitted, continuous integration jobs are run
|
When a Pull Request is submitted, continuous integration jobs are run
|
||||||
automatically to ensure the code builds and is relatively well-written. Checks
|
automatically to ensure the code builds and is relatively well-written. Checks
|
||||||
are run on [Buildkite](https://buildkite.com/matrix-dot-org/dendrite/) and
|
are run on [Buildkite](https://buildkite.com/matrix-dot-org/dendrite/) and
|
||||||
[CircleCI](https://circleci.com/gh/matrix-org/dendrite/).
|
[CircleCI](https://circleci.com/gh/matrix-org/dendrite/). The Buildkite
|
||||||
|
pipeline can be found in Matrix.org's [pipelines
|
||||||
|
repository](https://github.com/matrix-org/pipelines).
|
||||||
|
|
||||||
If a job fails, click the "details" button and you should be taken to the job's
|
If a job fails, click the "details" button and you should be taken to the job's
|
||||||
logs.
|
logs.
|
||||||
|
|
|
||||||
|
|
@ -120,28 +120,17 @@ func (s *accountDataStatements) selectAccountData(
|
||||||
|
|
||||||
func (s *accountDataStatements) selectAccountDataByType(
|
func (s *accountDataStatements) selectAccountDataByType(
|
||||||
ctx context.Context, localpart, roomID, dataType string,
|
ctx context.Context, localpart, roomID, dataType string,
|
||||||
) (data []gomatrixserverlib.ClientEvent, err error) {
|
) (data *gomatrixserverlib.ClientEvent, err error) {
|
||||||
data = []gomatrixserverlib.ClientEvent{}
|
|
||||||
|
|
||||||
stmt := s.selectAccountDataByTypeStmt
|
stmt := s.selectAccountDataByTypeStmt
|
||||||
rows, err := stmt.QueryContext(ctx, localpart, roomID, dataType)
|
var content []byte
|
||||||
if err != nil {
|
|
||||||
|
if err = stmt.QueryRowContext(ctx, localpart, roomID, dataType).Scan(&content); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
for rows.Next() {
|
data = &gomatrixserverlib.ClientEvent{
|
||||||
var content []byte
|
Type: dataType,
|
||||||
|
Content: content,
|
||||||
if err = rows.Scan(&content); err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
ac := gomatrixserverlib.ClientEvent{
|
|
||||||
Type: dataType,
|
|
||||||
Content: content,
|
|
||||||
}
|
|
||||||
|
|
||||||
data = append(data, ac)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
|
||||||
|
|
@ -263,11 +263,11 @@ func (d *Database) GetAccountData(ctx context.Context, localpart string) (
|
||||||
|
|
||||||
// GetAccountDataByType returns account data matching a given
|
// GetAccountDataByType returns account data matching a given
|
||||||
// localpart, room ID and type.
|
// localpart, room ID and type.
|
||||||
// If no account data could be found, returns an empty array
|
// If no account data could be found, returns nil
|
||||||
// Returns an error if there was an issue with the retrieval
|
// Returns an error if there was an issue with the retrieval
|
||||||
func (d *Database) GetAccountDataByType(
|
func (d *Database) GetAccountDataByType(
|
||||||
ctx context.Context, localpart, roomID, dataType string,
|
ctx context.Context, localpart, roomID, dataType string,
|
||||||
) (data []gomatrixserverlib.ClientEvent, err error) {
|
) (data *gomatrixserverlib.ClientEvent, err error) {
|
||||||
return d.accountDatas.selectAccountDataByType(
|
return d.accountDatas.selectAccountDataByType(
|
||||||
ctx, localpart, roomID, dataType,
|
ctx, localpart, roomID, dataType,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ func GetTags(
|
||||||
return httputil.LogThenError(req, err)
|
return httputil.LogThenError(req, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(data) == 0 {
|
if data == nil {
|
||||||
return util.JSONResponse{
|
return util.JSONResponse{
|
||||||
Code: http.StatusOK,
|
Code: http.StatusOK,
|
||||||
JSON: struct{}{},
|
JSON: struct{}{},
|
||||||
|
|
@ -68,7 +68,7 @@ func GetTags(
|
||||||
|
|
||||||
return util.JSONResponse{
|
return util.JSONResponse{
|
||||||
Code: http.StatusOK,
|
Code: http.StatusOK,
|
||||||
JSON: data[0].Content,
|
JSON: data.Content,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -103,8 +103,8 @@ func PutTag(
|
||||||
}
|
}
|
||||||
|
|
||||||
var tagContent gomatrix.TagContent
|
var tagContent gomatrix.TagContent
|
||||||
if len(data) > 0 {
|
if data != nil {
|
||||||
if err = json.Unmarshal(data[0].Content, &tagContent); err != nil {
|
if err = json.Unmarshal(data.Content, &tagContent); err != nil {
|
||||||
return httputil.LogThenError(req, err)
|
return httputil.LogThenError(req, err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -155,7 +155,7 @@ func DeleteTag(
|
||||||
}
|
}
|
||||||
|
|
||||||
// If there are no tags in the database, exit
|
// If there are no tags in the database, exit
|
||||||
if len(data) == 0 {
|
if data == nil {
|
||||||
// Spec only defines 200 responses for this endpoint so we don't return anything else.
|
// Spec only defines 200 responses for this endpoint so we don't return anything else.
|
||||||
return util.JSONResponse{
|
return util.JSONResponse{
|
||||||
Code: http.StatusOK,
|
Code: http.StatusOK,
|
||||||
|
|
@ -164,7 +164,7 @@ func DeleteTag(
|
||||||
}
|
}
|
||||||
|
|
||||||
var tagContent gomatrix.TagContent
|
var tagContent gomatrix.TagContent
|
||||||
err = json.Unmarshal(data[0].Content, &tagContent)
|
err = json.Unmarshal(data.Content, &tagContent)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return httputil.LogThenError(req, err)
|
return httputil.LogThenError(req, err)
|
||||||
}
|
}
|
||||||
|
|
@ -204,7 +204,7 @@ func obtainSavedTags(
|
||||||
userID string,
|
userID string,
|
||||||
roomID string,
|
roomID string,
|
||||||
accountDB *accounts.Database,
|
accountDB *accounts.Database,
|
||||||
) (string, []gomatrixserverlib.ClientEvent, error) {
|
) (string, *gomatrixserverlib.ClientEvent, error) {
|
||||||
localpart, _, err := gomatrixserverlib.SplitID('@', userID)
|
localpart, _, err := gomatrixserverlib.SplitID('@', userID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", nil, err
|
return "", nil, err
|
||||||
|
|
|
||||||
|
|
@ -196,13 +196,13 @@ func (rp *RequestPool) appendAccountData(
|
||||||
events := []gomatrixserverlib.ClientEvent{}
|
events := []gomatrixserverlib.ClientEvent{}
|
||||||
// Request the missing data from the database
|
// Request the missing data from the database
|
||||||
for _, dataType := range dataTypes {
|
for _, dataType := range dataTypes {
|
||||||
evs, err := rp.accountDB.GetAccountDataByType(
|
event, err := rp.accountDB.GetAccountDataByType(
|
||||||
req.ctx, localpart, roomID, dataType,
|
req.ctx, localpart, roomID, dataType,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
events = append(events, evs...)
|
events = append(events, *event)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Append the data to the response
|
// Append the data to the response
|
||||||
|
|
|
||||||
1
testfile
1
testfile
|
|
@ -171,6 +171,7 @@ Outbound federation can query profile data
|
||||||
/event/ on joined room works
|
/event/ on joined room works
|
||||||
/event/ does not allow access to events before the user joined
|
/event/ does not allow access to events before the user joined
|
||||||
Federation key API allows unsigned requests for keys
|
Federation key API allows unsigned requests for keys
|
||||||
|
Can paginate public room list
|
||||||
GET /directory/room/:room_alias yields room ID
|
GET /directory/room/:room_alias yields room ID
|
||||||
PUT /directory/room/:room_alias creates alias
|
PUT /directory/room/:room_alias creates alias
|
||||||
Room aliases can contain Unicode
|
Room aliases can contain Unicode
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue