Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions src/config/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,8 @@ const envVarsSchema = Joi.object()
REDIS_HOST: Joi.string().required().description('Redis host'),
REDIS_PORT: Joi.string().required().description('Redis port'),
REDIS_PASSWORD: Joi.string().required().description('Reids password').allow(''),
OCI_BACKEND_URL: Joi.string().required().description('Oci Backend url'),
TEMPORAL_URI: Joi.string().required().description('Temporal address'),
TEMPORAL_QUEUE_HEAVY: Joi.string().required().description('Queue for heavy workflows'),
BLOCKCHAIN_NETWORK_MODE: Joi.string().valid('mainnet', 'testnet').required(),
})
.unknown();

Expand Down Expand Up @@ -166,6 +164,4 @@ export default {
uri: envVars.TEMPORAL_URI,
heavyQueue: envVars.TEMPORAL_QUEUE_HEAVY,
},
ociBackendURL: envVars.OCI_BACKEND_URL,
blockchainNetworkMode: envVars.BLOCKCHAIN_NETWORK_MODE,
};
16 changes: 7 additions & 9 deletions src/controllers/index.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
import announcementController from './announcement.controller';
import authController from './auth.controller';
import userController from './user.controller';
import categoryController from './category.controller';
import communityController from './community.controller';
import discourseController from './discourse.controller';
import heatmapController from './heatmap.controller';
import notionController from './notion.controller';
import memberActivityController from './memberActivity.controller';
import communityController from './community.controller';
import platformController from './platform.controller';
import announcementController from './announcement.controller';
import categoryController from './category.controller';
import moduleController from './module.controller';
import discourseController from './discourse.controller';
import nftController from './nft.controller';
import notionController from './notion.controller';
import platformController from './platform.controller';
import telegramController from './telegram.controller';
import userController from './user.controller';

export {
authController,
Expand All @@ -24,6 +23,5 @@ export {
categoryController,
moduleController,
discourseController,
nftController,
telegramController,
};
17 changes: 0 additions & 17 deletions src/controllers/nft.controller.ts

This file was deleted.

25 changes: 7 additions & 18 deletions src/controllers/platform.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import {
twitterService,
userService,
} from '../services';
import { ApiError, catchAsync, pick } from '../utils';
import { catchAsync, pick } from '../utils';

const logger = parentLogger.child({ module: 'PlatformController' });

Expand Down Expand Up @@ -323,7 +323,7 @@ const getPlatform = catchAsync(async function (req: IAuthRequest, res: Response)
res.send(platform);
});
const updatePlatform = catchAsync(async function (req: IAuthAndPlatform, res: Response) {
validatePlatformUpdate(req.platform, req.body);
platformService.validatePlatformUpdate(req.platform, req.body);
if (req.platform.name === PlatformNames.Discord) {
const discordIdentity = userService.getIdentityByProvider(req.user.identities, PlatformNames.Discord);
if (discordIdentity) {
Expand Down Expand Up @@ -384,23 +384,11 @@ const requestAccess = catchAsync(async function (req: ISessionRequest, res: Resp
res.redirect(discordUrl);
}
});
const validatePlatformUpdate = (platform: IAuthAndPlatform['platform'], body: IAuthAndPlatform['body']) => {
if (platform.name !== PlatformNames.Discord) return;

if (platform.metadata?.isInProgress && (body.metadata?.selectedChannels || body.metadata?.period)) {
throw new ApiError(
httpStatus.BAD_REQUEST,
'Updating channels or date period is not allowed during server analysis.',
);
}

if (platform.metadata?.isFetchingInitialData && (body.metadata?.selectedChannels || body.metadata?.period)) {
throw new ApiError(
httpStatus.BAD_REQUEST,
'Updating channels or date periods is not allowed during the initial fetching of the server.',
);
}
};
const getReputationScore = catchAsync(async function (req: IAuthAndPlatform, res: Response) {
const reputationScore = await platformService.getReputationScore(req.platform, req.user.id);
res.send(reputationScore);
});

export default {
createPlatform,
Expand All @@ -417,4 +405,5 @@ export default {
getProperties,
requestAccess,
requestAccessCallback,
getReputationScore,
};
39 changes: 0 additions & 39 deletions src/docs/nft.yml

This file was deleted.

37 changes: 36 additions & 1 deletion src/docs/platform.doc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -448,7 +448,7 @@ paths:
description: Array of channel IDs (required if 'property' is 'channel').
responses:
'200':
description: Platformx properties retrieved successfully.
description: Platform properties retrieved successfully.
content:
application/json:
schema:
Expand Down Expand Up @@ -559,3 +559,38 @@ paths:
'302':
description: Found - Redirect to Discord OAuth2 page if conditions are met.
$ref: '#/components/responses/Found'
/api/v1/platforms/{platformId}/reputation-score:
get:
tags:
- Platform
summary: Retrieve reputation scores for given platformId.
security:
- bearerAuth: []
parameters:
- name: platformId
in: path
required: true
description: The ID of the platform
schema:
type: string
format: objectId
responses:
'200':
description: Platform created successfully.
content:
Comment on lines +578 to +580
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Update Response Description for Accuracy
The 200-response description currently states “Platform created successfully.” This is misleading for a GET request intended to retrieve a reputation score. Please update the description to “Reputation score retrieved successfully.”

Suggested change:

-          description: Platform created successfully.
+          description: Reputation score retrieved successfully.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
'200':
description: Platform created successfully.
content:
'200':
description: Reputation score retrieved successfully.
content:

application/json:
schema:
type: object
properties:
reputationScore:
type: integer
example: 1
'400':
description: Bad Request
$ref: '#/components/responses/BadRequest'
'401':
description: Unauthorized
$ref: '#/components/responses/Unauthorized'
'404':
description: NotFound
$ref: '#/components/responses/NotFound'
5 changes: 3 additions & 2 deletions src/interfaces/Request.interface.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { IPlatform, IUser } from '@togethercrew.dev/db';
import { HydratedDocument } from 'mongoose';
import { Request } from 'express';
import { Session, SessionData } from 'express-session';
import { HydratedDocument } from 'mongoose';

import { IPlatform, IUser } from '@togethercrew.dev/db';

export interface IAuthRequest extends Request {
user: HydratedDocument<IUser>;
Expand Down
9 changes: 5 additions & 4 deletions src/middlewares/auth.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import passport, { use } from 'passport';
import { NextFunction, Request, Response } from 'express';
import httpStatus from 'http-status';
import { ApiError, roleUtil, pick } from '../utils';
import { Request, Response, NextFunction } from 'express';
import { communityService, platformService, moduleService } from '../services';
import { Types } from 'mongoose';
import passport from 'passport';

import { UserRole } from '../interfaces';
import { communityService, moduleService, platformService } from '../services';
import { ApiError, pick, roleUtil } from '../utils';

const verifyCallback =
(req: Request, resolve: Function, reject: Function, requiredRights: any) =>
Expand Down
23 changes: 10 additions & 13 deletions src/routes/v1/index.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
import express from 'express';
import docsRoute from './docs.route';

import announcementRoute from './announcement.route';
import authRoute from './auth.route';
import userRoute from './user.route';
import categoryRoute from './category.route';
import communityRoute from './community.route';
import discourseRoute from './discourse.route';
import docsRoute from './docs.route';
import heatmapRoute from './heatmap.route';
import notionRoute from './notion.route';
import memberActivityRoute from './memberActivity.route';
import communityRoute from './community.route';
import platformRoute from './platform.route';
import announcementRoute from './announcement.route';
import categoryRoute from './category.route';
import moduleRoute from './module.route';
import discourseRoute from './discourse.route';
import nftRoute from './nft.route';
import notionRoute from './notion.route';
import platformRoute from './platform.route';
import telegramRoute from './telegram.route';
import userRoute from './user.route';

const router = express.Router();

const defaultRoutes = [
Expand Down Expand Up @@ -65,10 +66,6 @@ const defaultRoutes = [
path: '/discourse',
route: discourseRoute,
},
{
path: '/nft',
route: nftRoute,
},
{
path: '/telegram',
route: telegramRoute,
Expand Down
14 changes: 0 additions & 14 deletions src/routes/v1/nft.route.ts

This file was deleted.

10 changes: 9 additions & 1 deletion src/routes/v1/platform.route.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import express from 'express';

import { platformController } from '../../controllers';
import { auth, validate } from '../../middlewares';
import { platformValidation } from '../../validations';

import { auth, validate } from '../../middlewares';
const router = express.Router();

// Routes
Expand Down Expand Up @@ -39,4 +40,11 @@ router
.patch(auth('admin'), validate(platformValidation.dynamicUpdatePlatform), platformController.updatePlatform)
.delete(auth('admin'), validate(platformValidation.deletePlatform), platformController.deletePlatform);

router.get(
'/:platformId/reputation-score',
auth('admin', 'view'),
validate(platformValidation.getReputationScore),
platformController.getReputationScore,
);

export default router;
29 changes: 14 additions & 15 deletions src/services/index.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
import userService from './user.service';
import announcementService from './announcement.service';
import authService from './auth.service';
import tokenService from './token.service';
import heatmapService from './heatmap.service';
import memberActivityService from './memberActivity.service';
import sagaService from './saga.service';
import communityService from './community.service';
import platformService from './platform.service';
import twitterService from './twitter.service';
import discordServices from './discord';
import announcementService from './announcement.service';
import moduleService from './module.service';
import googleService from './google';
import discourseService from './discourse';
import githubService from './github';
import googleService from './google';
import heatmapService from './heatmap.service';
import memberActivityService from './memberActivity.service';
import moduleService from './module.service';
import notionService from './notion';
import discourseService from './discourse';
import ociService from './oci.service';
import nftService from './nft.service';
import platformService from './platform.service';
import reputationScoreService from './reputationScore.service';
import sagaService from './saga.service';
import telegramService from './telegram';
import tokenService from './token.service';
import twitterService from './twitter.service';
import userService from './user.service';

export {
userService,
authService,
Expand All @@ -34,7 +34,6 @@ export {
githubService,
notionService,
discourseService,
ociService,
nftService,
telegramService,
reputationScoreService,
};
Loading