Skip to content

Commit

Permalink
Merge pull request #20 from arati-tekdi/main
Browse files Browse the repository at this point in the history
Added few more APIS and changes for formdata
  • Loading branch information
arati-tekdi authored Oct 3, 2024
2 parents 256f2d3 + c2862b6 commit c03b0ac
Show file tree
Hide file tree
Showing 3 changed files with 136 additions and 89 deletions.
185 changes: 110 additions & 75 deletions src/common/middleware/apiConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ sample output from above input
}
``
*/

const rolesGroup = {
common: ['admin', 'team_leader', 'teacher', 'student'],
admin: ['admin'],
Expand Down Expand Up @@ -87,6 +88,14 @@ const privilegeGroup = {
cohortmembers: createPrivilegeGroup('cohortmembers'),
attendance: createPrivilegeGroup('attendance'),
};
//added common values
const get_with_no_check = { get: {} };
const content_restricted_content_create = {
post: {
PRIVILEGE_CHECK: privilegeGroup.content.create,
ROLE_CHECK: rolesGroup.content_restricted,
},
};
const createRouteObject = (methods: any, redirectUrl: string | null = null) => {
const allMethods = Object.keys(methods); // Extract method names (e.g., 'get', 'patch', 'delete')

Expand Down Expand Up @@ -114,7 +123,9 @@ export const apiList = {
'/user/v1/auth/login': createRouteObject({
post: {},
}),

//user-service
'/user/v1/auth': createRouteObject(get_with_no_check),
'/user/v1/create': createRouteObject({
post: {
PRIVILEGE_CHECK: privilegeGroup.users.create,
Expand Down Expand Up @@ -314,15 +325,6 @@ export const apiList = {
ROLE_CHECK: rolesGroup.admin_team_leader,
},
}),
//auth - public // check
// '/user/v1/auth/login': createRouteObject({
// post: {
// checksNeeded: [],
// },
// post: {
// checksNeeded: [],
// },
// },
//event-service
//event
'/event-service/event/v1/create': createRouteObject({
Expand Down Expand Up @@ -509,95 +511,40 @@ export const apiList = {
'/questionset/v5/hierarchy/update',
),
'/action/questionset/v2/hierarchy/:identifier': createRouteObject(
{ get: {} },
get_with_no_check,
'/questionset/v5/hierarchy/:identifier',
),
'/action/questionset/v2/comment/read/:identifier': createRouteObject(
{ get: {} },
get_with_no_check,
'/questionset/v5/comment/read/:identifier',
),
'/api/channel/v1/read/:identifier': createRouteObject(
{ get: {} },
get_with_no_check,
'/channel/v3/read/:identifier',
),
'/api/framework/v1/read/:identifier': createRouteObject(
{ get: {} },
get_with_no_check,
'/framework/v3/read/:identifier',
),
'/action/composite/v3/search': createRouteObject({ post: {} }, '/v3/search'),
'/action/object/category/definition/v1/read': createRouteObject(
{ post: {} },
'/object/category/definition/v4/read',
),
'/action/asset/v1/create': createRouteObject(
{ post: {} },
'/asset/v4/create',
),
'/action/asset/v1/upload/url/:identifier': createRouteObject(
{ post: {} },
'/asset/v4/upload/url/:identifier',
),
'/action/asset/v1/upload/:identifier': createRouteObject(
{ post: {} },
'/asset/v4/upload/identifier',
),
'/action/question/v2/read/:identifier': createRouteObject(
{ get: {} },
get_with_no_check,
'/question/v5/read/:identifier',
),
'/action/asset/v1/read/:identifier': createRouteObject(
{ get: {} },
get_with_no_check,
'/asset/v4/read/:identifier',
),
'/action/content/v3/upload/url/:identifier': createRouteObject(
{ post: {} },
'/content/v3/upload/url/:identifier',
),
'/action/content/v3/create': createRouteObject(
{ post: {} },
'/content/v4/create',
),
'/action/content/v3/upload/:identifier': createRouteObject(
{ post: {} },
'/content/v4/upload/:identifier',
),
'/action/content/v3/read/:identifier': createRouteObject(
{ get: {} },
'/content/v4/read/:identifier',
),
'/action/content/v3/update/:identifier': createRouteObject(
{ patch: {} },
'/content/v4/update/:identifier',
get_with_no_check,
'/content/v3/read/:identifier',
),
'/action/content/v3/review/:identifier': createRouteObject({ post: {} }),
'/api/content/v1/read/:identifier': createRouteObject(
{ get: {} },
'/content/v4/read/:identifier',
),
'/content/content/v1/reject/:identifier': createRouteObject(
{ post: {} },
'/content/v4/reject/:identifier',
),
'/content/content/v1/publish/:identifier': createRouteObject(
{ post: {} },
'content/v4/publish/:identifier',
),
'/action/content/v1/reject/:identifier': createRouteObject(
{ post: {} },
'/content/v4/reject/:identifier',
),
'/action/content/v1/publish/:identifier': createRouteObject(
{ post: {} },
'content/v4/publish/:identifier',
get_with_no_check,
'/content/v3/read/:identifier',
),
//secure
'/action/questionset/v2/create': createRouteObject(
{
post: {
PRIVILEGE_CHECK: privilegeGroup.content.create,
ROLE_CHECK: rolesGroup.content_restricted,
},
},
content_restricted_content_create,
'/questionset/v5/create',
),
'/action/questionset/v2/update/:identifier': createRouteObject(
Expand Down Expand Up @@ -655,6 +602,94 @@ export const apiList = {
},
'/questionset/v5/comment/update/:identifier',
),
////////////////////////////////////////////////////
'/action/composite/v3/search': createRouteObject(
{
post: {
PRIVILEGE_CHECK: privilegeGroup.content.read,
ROLE_CHECK: rolesGroup.content_restricted,
},
},
'/v3/search',
),
'/action/object/category/definition/v1/read': createRouteObject(
{
post: {
PRIVILEGE_CHECK: privilegeGroup.content.read,
ROLE_CHECK: rolesGroup.content_restricted,
},
},
'/object/category/definition/v4/read',
),
'/action/asset/v1/create': createRouteObject(
content_restricted_content_create,
'/asset/v4/create',
),
'/action/asset/v1/upload/url/:identifier': createRouteObject(
content_restricted_content_create,
'/asset/v4/upload/url/:identifier',
),
'/action/asset/v1/upload/:identifier': createRouteObject(
content_restricted_content_create,
'/asset/v4/upload/:identifier',
),
'/action/content/v3/upload/url/:identifier': createRouteObject(
content_restricted_content_create,
'/content/v3/upload/url/:identifier',
),
'/action/content/v3/create': createRouteObject(
content_restricted_content_create,
'/content/v3/create',
),
'/action/content/v3/upload/:identifier': createRouteObject(
content_restricted_content_create,
'/content/v3/upload/:identifier',
),
'/action/content/v3/update/:identifier': createRouteObject(
{
patch: {
PRIVILEGE_CHECK: privilegeGroup.content.update,
ROLE_CHECK: rolesGroup.content_restricted,
},
},
'/content/v3/update/:identifier',
),
'/action/content/v3/review/:identifier': createRouteObject(
{
post: {
PRIVILEGE_CHECK: privilegeGroup.content.review,
ROLE_CHECK: rolesGroup.content_restricted,
},
},
'/content/v3/review/:identifier',
),
'/action/content/v3/reject/:identifier': createRouteObject(
{
post: {
PRIVILEGE_CHECK: privilegeGroup.content.review,
ROLE_CHECK: rolesGroup.content_restricted,
},
},
'/content/v3/reject/:identifier',
),
'/action/content/v3/publish/:identifier': createRouteObject(
{
post: {
PRIVILEGE_CHECK: privilegeGroup.content.review,
ROLE_CHECK: rolesGroup.content_restricted,
},
},
'/content/v3/publish/:identifier',
),
'/action/content/v3/retire/:identifier': createRouteObject(
{
delete: {
PRIVILEGE_CHECK: privilegeGroup.content.delete,
ROLE_CHECK: rolesGroup.content_restricted,
},
},
'/content/v3/retire/:identifier',
),

//attendance service
'/api/v1/attendance': createRouteObject({
Expand Down
39 changes: 25 additions & 14 deletions src/common/middleware/middleware.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ export class MiddlewareServices {
const uploadFiles = () => {
return new Promise((resolve, reject) => {
upload.any()(req, res, (err) => {
console.log('req: ', typeof req.body);
if (err) {
// Check if the error is due to file size limit
if (err instanceof multer.MulterError) {
Expand All @@ -164,24 +165,33 @@ export class MiddlewareServices {
),
);
}
resolve(req.files);
const reqObject = {
files: req.files,
data: req.body,
};
resolve(reqObject);
});
});
};
// Await the file upload
const files: any = await uploadFiles();

// Check if files are present
if (files && files.length > 0) {
const file = files[0]; // first file

// Prepare FormData for Axios call
const formData = new FormData();
formData.append('file', file.buffer, {
filename: file.originalname,
contentType: file.mimetype,
});

// Await the file upload
const reqObject: any = await uploadFiles();
const formData = new FormData();
// Prepare FormData for Axios call
if (reqObject && Object.keys(reqObject).length > 0) {
// Check if files are present
if (reqObject.files && reqObject.files.length > 0) {
const file = reqObject.files[0]; // first file
formData.append('file', file.buffer, {
filename: file.originalname,
contentType: file.mimetype,
});
}
if (reqObject.data) {
for (const key in reqObject.data) {
formData.append(key, reqObject.data[key]);
}
}
return await this.gatewayService.handleRequestForMultipartData(
url,
formData,
Expand Down Expand Up @@ -218,6 +228,7 @@ export class MiddlewareServices {
'/action/object': 'TAXONOMY_SERVICE',
'/action/asset': 'CONTENT_SERVICE',
'/action/content': 'CONTENT_SERVICE',
'/api/content': 'CONTENT_SERVICE',
};

// Iterate over the mapping to find the correct service based on the URL prefix
Expand Down
1 change: 1 addition & 0 deletions src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import * as dotenv from 'dotenv';
async function bootstrap() {
dotenv.config(); // Load environment variables from .env file
const app = await NestFactory.create(AppModule);
app.enableCors();
const config = new DocumentBuilder()
.setTitle('Middleware APIs')
.setDescription('The Middlware service')
Expand Down

0 comments on commit c03b0ac

Please sign in to comment.