Skip to content

Commit

Permalink
wadhwani apis base implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
jelanmathewjames committed Apr 19, 2024
1 parent 2f4400b commit 063c3c9
Show file tree
Hide file tree
Showing 5 changed files with 89 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .env.sample
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ FR_DOMAIN_NAME=http://127.0.0.1:8000
BE_DOMAIN_NAME = http://127.0.0.1:8000
AUTH_DOMAIN=http://127.0.0.1:8000

WADHWANI_CLIENT_AUTH_URL=
WADHWANI_BASE_URL=
WADHWANI_CLIENT_SECRET=

PROTECTED_API_KEY =

SYSTEM_ADMIN_ID =
1 change: 1 addition & 0 deletions api/integrations/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@
# app_name will help us do a reverse look-up latter.
urlpatterns = [
path('kkem/', include('api.integrations.kkem.urls')),
path('wadhwani/', include('api.integrations.wadhwani.urls')),
]
12 changes: 12 additions & 0 deletions api/integrations/wadhwani/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from django.urls import path

from . import wadhwani_views

# app_name will help us do a reverse look-up latter.
urlpatterns = [
path('auth-token/', wadhwani_views.WadhwaniAuthToken.as_view(), name='auth_token'),
path('user-login/', wadhwani_views.WadhwaniUserLogin.as_view(), name='user_login'),
path('course-details/', wadhwani_views.WadhwaniCourseDetails.as_view(), name='course_details'),
path('course-enroll-status/', wadhwani_views.WadhwaniCourseEnrollStatus.as_view(), name='course_enroll_status'),
path('course-quiz-data/', wadhwani_views.WadhwaniCourseQuizData.as_view(), name='course_quiz_data'),
]
69 changes: 69 additions & 0 deletions api/integrations/wadhwani/wadhwani_views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import requests

from utils.response import CustomResponse
from utils.permission import JWTUtils
from db.user import User

from rest_framework.views import APIView
from django.conf import settings

class WadhwaniAuthToken(APIView):
def post(self, request):
url = settings.WADHWANI_CLIENT_AUTH_URL

data = {
'grant_type': 'client_credentials',
'client_id': 'mulearn',
'client_secret': settings.WADHWANI_CLIENT_SECRET,
}
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
response = requests.post(url, data=data, headers=headers)
return CustomResponse(response=response.json()).get_success_response()

class WadhwaniUserLogin(APIView):
def post(self, request):
url = settings.WADHWANI_BASE_URL + "api/v1/iamservice/oauth/login"
user_id = JWTUtils.fetch_user_id(request)
user = User.objects.get(id=user_id)
token = request.headers.get('Client-Auth-Token')
data = {
"name": user.full_name,
"candidateId": user.id,
"userName": user.email,
"email": user.email,
"mobile": f"+91-{user.mobile}",
"countryCode": "IN",
"userLanguageCode": "en",
"token": token
}
response = requests.post(url, data=data)
return CustomResponse(response=response.json()).get_success_response()

class WadhwaniCourseDetails(APIView):
def get(self, request):
url = settings.WADHWANI_BASE_URL + "api/v1/courseservice/oauth/client/courses"
token = request.headers.get('Client-Auth-Token')
headers = {'Authorization': token}
response = requests.get(url, headers=headers)
return CustomResponse(response=response.json()).get_success_response()

class WadhwaniCourseEnrollStatus(APIView):
def get(self, request):
url = settings.WADHWANI_BASE_URL + "api/v1/courseservice/oauth/client/courses"
token = request.headers.get('Client-Auth-Token')
headers = {'Authorization': token}
user_id = JWTUtils.fetch_user_id(request)
user = User.objects.get(id=user_id)
response = requests.get(url, params={"username": user.email}, headers=headers)
return CustomResponse(response=response.json()).get_success_response()

class WadhwaniCourseQuizData(APIView):
def get(self, request):
url = settings.WADHWANI_BASE_URL + f"api/v1/courseservice/oauth/course/{course_id}/reports/quiz/student/{user.email}"
token = request.headers.get('Client-Auth-Token')
headers = {'Authorization': token}
course_id = request.query_params.get('course_id')
user_id = JWTUtils.fetch_user_id(request)
user = User.objects.get(id=user_id)
response = requests.get(url, headers=headers)
return CustomResponse(response=response.json()).get_success_response()
3 changes: 3 additions & 0 deletions mulearnbackend/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,9 @@
FROM_MAIL = decouple_config("FROM_MAIL")
FR_DOMAIN_NAME = decouple_config("FR_DOMAIN_NAME")

WADHWANI_CLIENT_AUTH_URL = decouple_config("WADHWANI_CLIENT_AUTH_URL")
WADHWANI_CLIENT_SECRET = decouple_config("WADHWANI_CLIENT_SECRET")

DEFAULT_FILE_STORAGE = "django.core.files.storage.FileSystemStorage"

import socket
Expand Down

0 comments on commit 063c3c9

Please sign in to comment.