mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
setup middleware for language detection
This commit is contained in:
parent
9130b2bb50
commit
f3847e5c97
@ -69,6 +69,7 @@
|
|||||||
"helmet": "~3.22.0",
|
"helmet": "~3.22.0",
|
||||||
"ioredis": "^4.16.1",
|
"ioredis": "^4.16.1",
|
||||||
"jsonwebtoken": "~8.5.1",
|
"jsonwebtoken": "~8.5.1",
|
||||||
|
"languagedetect": "^2.0.0",
|
||||||
"linkifyjs": "~2.1.8",
|
"linkifyjs": "~2.1.8",
|
||||||
"lodash": "~4.17.14",
|
"lodash": "~4.17.14",
|
||||||
"merge-graphql-schemas": "^1.7.7",
|
"merge-graphql-schemas": "^1.7.7",
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import notifications from './notifications/notificationsMiddleware'
|
|||||||
import hashtags from './hashtags/hashtagsMiddleware'
|
import hashtags from './hashtags/hashtagsMiddleware'
|
||||||
import email from './email/emailMiddleware'
|
import email from './email/emailMiddleware'
|
||||||
import sentry from './sentryMiddleware'
|
import sentry from './sentryMiddleware'
|
||||||
|
import languages from './languages/languages'
|
||||||
|
|
||||||
export default (schema) => {
|
export default (schema) => {
|
||||||
const middlewares = {
|
const middlewares = {
|
||||||
@ -30,6 +31,7 @@ export default (schema) => {
|
|||||||
softDelete,
|
softDelete,
|
||||||
includedFields,
|
includedFields,
|
||||||
orderBy,
|
orderBy,
|
||||||
|
languages,
|
||||||
}
|
}
|
||||||
|
|
||||||
let order = [
|
let order = [
|
||||||
@ -39,6 +41,7 @@ export default (schema) => {
|
|||||||
// 'activityPub', disabled temporarily
|
// 'activityPub', disabled temporarily
|
||||||
'validation',
|
'validation',
|
||||||
'sluggify',
|
'sluggify',
|
||||||
|
'languages',
|
||||||
'excerpt',
|
'excerpt',
|
||||||
'email',
|
'email',
|
||||||
'notifications',
|
'notifications',
|
||||||
|
|||||||
24
backend/src/middleware/languages/languages.js
Normal file
24
backend/src/middleware/languages/languages.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import LanguageDetect from 'languagedetect'
|
||||||
|
|
||||||
|
const setPostLanguage = (text) => {
|
||||||
|
console.log(text)
|
||||||
|
const lngDetector = new LanguageDetect()
|
||||||
|
lngDetector.setLanguageType('iso2')
|
||||||
|
const result = lngDetector.detect(text, 2)
|
||||||
|
console.log(result)
|
||||||
|
return result[0][0]
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
Mutation: {
|
||||||
|
CreatePost: async (resolve, root, args, context, info) => {
|
||||||
|
console.log('CreatePost, language', args)
|
||||||
|
args.language = await setPostLanguage(args.content)
|
||||||
|
return resolve(root, args, context, info)
|
||||||
|
},
|
||||||
|
UpdatePost: async (resolve, root, args, context, info) => {
|
||||||
|
args.language = await setPostLanguage(args.content)
|
||||||
|
return resolve(root, args, context, info)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
74
backend/src/middleware/languages/languages.spec.js
Normal file
74
backend/src/middleware/languages/languages.spec.js
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
import Factory, { cleanDatabase } from '../../db/factories'
|
||||||
|
import { gql } from '../../helpers/jest'
|
||||||
|
import { getNeode, getDriver } from '../../db/neo4j'
|
||||||
|
import createServer from '../../server'
|
||||||
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
|
|
||||||
|
|
||||||
|
let mutate
|
||||||
|
let authenticatedUser
|
||||||
|
let variables
|
||||||
|
|
||||||
|
const driver = getDriver()
|
||||||
|
const neode = getNeode()
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
const { server } = createServer({
|
||||||
|
context: () => {
|
||||||
|
return {
|
||||||
|
driver,
|
||||||
|
neode,
|
||||||
|
user: authenticatedUser,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
mutate = createTestClient(server).mutate
|
||||||
|
await cleanDatabase()
|
||||||
|
variables = {}
|
||||||
|
const user = await Factory.build('user')
|
||||||
|
authenticatedUser = await user.toJson()
|
||||||
|
await Factory.build('category', {
|
||||||
|
id: 'cat9',
|
||||||
|
name: 'Democracy & Politics',
|
||||||
|
icon: 'university',
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
afterAll(async () => {
|
||||||
|
//await cleanDatabase()
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const createPostMutation = gql`
|
||||||
|
mutation($title: String!, $content: String!, $categoryIds: [ID]) {
|
||||||
|
CreatePost(title: $title, content: $content, categoryIds: $categoryIds) {
|
||||||
|
language
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
describe('languagesMiddleware', () => {
|
||||||
|
variables = {
|
||||||
|
title: 'Test post languages',
|
||||||
|
categoryIds: ['cat9'],
|
||||||
|
}
|
||||||
|
|
||||||
|
it('detects German', async () => {
|
||||||
|
variables = {
|
||||||
|
...variables,
|
||||||
|
content: 'Jeder sollte vor seiner eigenen Tür kehren.',
|
||||||
|
}
|
||||||
|
await expect(mutate({
|
||||||
|
mutation: createPostMutation,
|
||||||
|
variables,
|
||||||
|
})).resolves.toMatchObject({
|
||||||
|
data: {
|
||||||
|
CreatePost: {
|
||||||
|
language: 'de',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
@ -6302,6 +6302,11 @@ knuth-shuffle-seeded@^1.0.6:
|
|||||||
dependencies:
|
dependencies:
|
||||||
seed-random "~2.2.0"
|
seed-random "~2.2.0"
|
||||||
|
|
||||||
|
languagedetect@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/languagedetect/-/languagedetect-2.0.0.tgz#4b8fa2b7593b2a3a02fb1100891041c53238936c"
|
||||||
|
integrity sha512-AZb/liiQ+6ZoTj4f1J0aE6OkzhCo8fyH+tuSaPfSo8YHCWLFJrdSixhtO2TYdIkjcDQNaR4RmGaV2A5FJklDMQ==
|
||||||
|
|
||||||
latest-version@^3.0.0:
|
latest-version@^3.0.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15"
|
resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user