mirror of
https://github.com/ArthurDanjou/artmcp.git
synced 2026-01-14 18:49:27 +01:00
feat: ajouter la gestion des contacts et des hobbies avec des ressources associées
This commit is contained in:
4
server/api/activity.get.ts
Normal file
4
server/api/activity.get.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
export default defineEventHandler(async (event) => {
|
||||
const { discord } = useRuntimeConfig(event)
|
||||
return await $fetch(`https://api.lanyard.rest/v1/users/${discord.userId}`)
|
||||
})
|
||||
10
server/api/contact.get.ts
Normal file
10
server/api/contact.get.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { queryCollection } from '@nuxt/content/server'
|
||||
|
||||
export default defineCachedEventHandler(async (event) => {
|
||||
return await queryCollection(event, 'contact')
|
||||
.where('extension', '=', 'json')
|
||||
.first()
|
||||
}, {
|
||||
name: 'contact-list',
|
||||
maxAge: 3600 // 1 hour
|
||||
})
|
||||
@@ -1,11 +1,9 @@
|
||||
import { queryCollection } from '@nuxt/content/server'
|
||||
|
||||
export default defineCachedEventHandler(async (event) => {
|
||||
return {
|
||||
body: await queryCollection(event, 'education')
|
||||
.where('extension', '=', 'md')
|
||||
.all()
|
||||
}
|
||||
return await queryCollection(event, 'education')
|
||||
.where('extension', '=', 'md')
|
||||
.all()
|
||||
}, {
|
||||
name: 'educations-list',
|
||||
maxAge: 3600 // 1 hour
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
import { queryCollection } from '@nuxt/content/server'
|
||||
|
||||
export default defineCachedEventHandler(async (event) => {
|
||||
return {
|
||||
body: await queryCollection(event, 'experiences')
|
||||
.where('extension', '=', 'md')
|
||||
.all()
|
||||
}
|
||||
return await queryCollection(event, 'experiences')
|
||||
.where('extension', '=', 'md')
|
||||
.all()
|
||||
}, {
|
||||
name: 'experiences-list',
|
||||
maxAge: 3600 // 1 hour
|
||||
|
||||
8
server/api/hobbies.get.ts
Normal file
8
server/api/hobbies.get.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { queryCollection } from '@nuxt/content/server'
|
||||
|
||||
export default defineCachedEventHandler(async (event) => {
|
||||
return await queryCollection(event, 'hobbies').first()
|
||||
}, {
|
||||
name: 'hobbies-list',
|
||||
maxAge: 3600 // 1 hour
|
||||
})
|
||||
@@ -1,11 +1,9 @@
|
||||
import { queryCollection } from '@nuxt/content/server'
|
||||
|
||||
export default defineCachedEventHandler(async (event) => {
|
||||
return {
|
||||
body: await queryCollection(event, 'projects')
|
||||
.where('extension', '=', 'md')
|
||||
.all()
|
||||
}
|
||||
return await queryCollection(event, 'projects')
|
||||
.where('extension', '=', 'md')
|
||||
.all()
|
||||
}, {
|
||||
name: 'projects-list',
|
||||
maxAge: 3600 // 1 hour
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
import { queryCollection } from '@nuxt/content/server'
|
||||
|
||||
export default defineCachedEventHandler(async (event) => {
|
||||
return {
|
||||
body: await queryCollection(event, 'skills')
|
||||
.where('extension', '=', 'json')
|
||||
.all()
|
||||
}
|
||||
return await queryCollection(event, 'skills')
|
||||
.where('extension', '=', 'json')
|
||||
.first()
|
||||
}, {
|
||||
name: 'skills-list',
|
||||
maxAge: 3600 // 1 hour
|
||||
|
||||
@@ -15,9 +15,7 @@ export default defineCachedEventHandler(async (event) => {
|
||||
})
|
||||
}
|
||||
|
||||
return {
|
||||
body: uses_by_categories
|
||||
}
|
||||
return uses_by_categories
|
||||
}, {
|
||||
name: 'uses-list',
|
||||
maxAge: 3600 // 1 hour
|
||||
|
||||
57
server/api/wakatime.get.ts
Normal file
57
server/api/wakatime.get.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
import type { H3Event } from 'h3'
|
||||
|
||||
const cachedWakatimeCoding = defineCachedFunction(async (event: H3Event) => {
|
||||
const config = useRuntimeConfig(event)
|
||||
|
||||
return await $fetch(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.coding}.json`)
|
||||
}, {
|
||||
maxAge: 24 * 60 * 60,
|
||||
name: 'wakatime',
|
||||
getKey: () => 'coding'
|
||||
})
|
||||
|
||||
const cachedWakatimeEditors = defineCachedFunction(async (event: H3Event) => {
|
||||
const config = useRuntimeConfig(event)
|
||||
|
||||
return await $fetch(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.editors}.json`)
|
||||
}, {
|
||||
maxAge: 24 * 60 * 60,
|
||||
name: 'wakatime',
|
||||
getKey: () => 'editors'
|
||||
})
|
||||
|
||||
const cachedWakatimeOs = defineCachedFunction(async (event: H3Event) => {
|
||||
const config = useRuntimeConfig(event)
|
||||
|
||||
return await $fetch(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.os}.json`)
|
||||
}, {
|
||||
maxAge: 24 * 60 * 60,
|
||||
name: 'wakatime',
|
||||
getKey: () => 'os'
|
||||
})
|
||||
|
||||
const cachedWakatimeLanguages = defineCachedFunction(async (event: H3Event) => {
|
||||
const config = useRuntimeConfig(event)
|
||||
|
||||
return await $fetch(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.languages}.json`)
|
||||
}, {
|
||||
maxAge: 24 * 60 * 60,
|
||||
name: 'wakatime',
|
||||
getKey: () => 'languages'
|
||||
})
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const [coding, editors, os, languages] = await Promise.all([
|
||||
cachedWakatimeCoding(event),
|
||||
cachedWakatimeEditors(event),
|
||||
cachedWakatimeOs(event),
|
||||
cachedWakatimeLanguages(event)
|
||||
])
|
||||
|
||||
return {
|
||||
coding,
|
||||
editors,
|
||||
os,
|
||||
languages
|
||||
}
|
||||
})
|
||||
@@ -104,6 +104,82 @@ function createServer() {
|
||||
}
|
||||
)
|
||||
|
||||
server.registerResource(
|
||||
'artmcp-activity',
|
||||
'resource://artmcp/activity',
|
||||
{
|
||||
title: 'ArtMCP Activity',
|
||||
description: 'Get realtime activity of Arthur Danjou'
|
||||
},
|
||||
async (uri) => {
|
||||
const result = await $fetch('/api/activity')
|
||||
return {
|
||||
contents: [{
|
||||
uri: uri.href,
|
||||
mimeType: 'application/json',
|
||||
text: JSON.stringify(result, null, 2)
|
||||
}]
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
server.registerResource(
|
||||
'artmcp-wakatime',
|
||||
'resource://artmcp/wakatime',
|
||||
{
|
||||
title: 'ArtMCP Wakatime',
|
||||
description: 'Get Wakatime statistics of Arthur Danjou'
|
||||
},
|
||||
async (uri) => {
|
||||
const result = await $fetch('/api/wakatime')
|
||||
return {
|
||||
contents: [{
|
||||
uri: uri.href,
|
||||
mimeType: 'application/json',
|
||||
text: JSON.stringify(result, null, 2)
|
||||
}]
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
server.registerResource(
|
||||
'artmcp-contact',
|
||||
'resource://artmcp/contact',
|
||||
{
|
||||
title: 'ArtMCP Contact',
|
||||
description: 'Get Contact Information of Arthur Danjou'
|
||||
},
|
||||
async (uri) => {
|
||||
const result = await $fetch('/api/contact')
|
||||
return {
|
||||
contents: [{
|
||||
uri: uri.href,
|
||||
mimeType: 'application/json',
|
||||
text: JSON.stringify(result, null, 2)
|
||||
}]
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
server.registerResource(
|
||||
'artmcp-contact',
|
||||
'resource://artmcp/hobbies',
|
||||
{
|
||||
title: 'ArtMCP Hobbies',
|
||||
description: 'Get Hobbies Information of Arthur Danjou'
|
||||
},
|
||||
async (uri) => {
|
||||
const result = await $fetch('/api/hobbies')
|
||||
return {
|
||||
contents: [{
|
||||
uri: uri.href,
|
||||
mimeType: 'application/json',
|
||||
text: JSON.stringify(result, null, 2)
|
||||
}]
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
// Tools
|
||||
server.registerTool(
|
||||
'get_resume_link',
|
||||
@@ -148,6 +224,82 @@ function createServer() {
|
||||
}
|
||||
)
|
||||
|
||||
server.registerPrompt(
|
||||
'artmcp-activity',
|
||||
{
|
||||
title: 'Get Realtime Activity of Arthur Danjou',
|
||||
description: 'Get Realtime Activity of Arthur Danjou'
|
||||
},
|
||||
async () => {
|
||||
return {
|
||||
messages: [{
|
||||
role: 'user',
|
||||
content: {
|
||||
type: 'text',
|
||||
text: `Provide me the realtime activity of Arthur Danjou.`
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
server.registerPrompt(
|
||||
'artmcp-wakatime',
|
||||
{
|
||||
title: 'Get Stats of Arthur Danjou',
|
||||
description: 'Get Stats of Arthur Danjou powered by Wakatime'
|
||||
},
|
||||
async () => {
|
||||
return {
|
||||
messages: [{
|
||||
role: 'user',
|
||||
content: {
|
||||
type: 'text',
|
||||
text: `Provide me the stats of Arthur Danjou powered by Wakatime.`
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
server.registerPrompt(
|
||||
'artmcp-contact',
|
||||
{
|
||||
title: 'Get Contact Information of Arthur Danjou',
|
||||
description: 'Get Contact Information of Arthur Danjou'
|
||||
},
|
||||
async () => {
|
||||
return {
|
||||
messages: [{
|
||||
role: 'user',
|
||||
content: {
|
||||
type: 'text',
|
||||
text: `How can I contact Arthur Danjou?`
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
server.registerPrompt(
|
||||
'artmcp-hobbies',
|
||||
{
|
||||
title: 'Get Hobbies Information of Arthur Danjou',
|
||||
description: 'Get Hobbies Information of Arthur Danjou'
|
||||
},
|
||||
async () => {
|
||||
return {
|
||||
messages: [{
|
||||
role: 'user',
|
||||
content: {
|
||||
type: 'text',
|
||||
text: `What are the hobbies, interests and passions of Arthur Danjou?`
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
return server
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user