diff --git a/.vscode/settings.json b/.vscode/settings.json index 5d20645cc..8be439493 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,4 @@ { - "javascript.implicitProjectConfig.experimentalDecorators": true + "javascript.implicitProjectConfig.experimentalDecorators": true, + "git.ignoreLimitWarning": true } \ No newline at end of file diff --git a/ng6-seed/src/app/app.module.ts b/ng6-seed/src/app/app.module.ts index 7e3234d79..dfa8c171a 100755 --- a/ng6-seed/src/app/app.module.ts +++ b/ng6-seed/src/app/app.module.ts @@ -61,6 +61,7 @@ import { LoaderService } from './shared/loaderService/loader.service'; import {SocketIoConfig, SocketIoModule} from 'ngx-socket-io'; import { IncomingCallComponent } from './video-chat/incoming-call/incoming-call.component'; import { VideoChatComponent } from './video-chat/video-chat.component' +import { PushNotifyService } from './shared/push-notify.service'; export function HttpLoaderFactory(http: HttpClient) { return new TranslateHttpLoader(http); @@ -132,6 +133,7 @@ const socketConfig: SocketIoConfig = { url: environment.socketServerUrl, options AwsService,AuthGuard, TranslateService, PdTrigerService, + PushNotifyService, // { // provide: PERFECT_SCROLLBAR_CONFIG, // useValue: DEFAULT_PERFECT_SCROLLBAR_CONFIG diff --git a/ng6-seed/src/app/layouts/admin/admin-layout.component.ts b/ng6-seed/src/app/layouts/admin/admin-layout.component.ts index 0a77775cc..928af0946 100755 --- a/ng6-seed/src/app/layouts/admin/admin-layout.component.ts +++ b/ng6-seed/src/app/layouts/admin/admin-layout.component.ts @@ -19,6 +19,7 @@ import { IncomingCallComponent } from '../../video-chat/incoming-call/incoming-c import { Socket } from 'ngx-socket-io'; import { MatDialog } from '@angular/material'; import { VideoChatComponent } from 'app/video-chat/video-chat.component'; +import { PushNotifyService } from 'app/shared/push-notify.service'; @@ -64,7 +65,8 @@ export class AdminLayoutComponent implements OnInit, OnDestroy { alertTAT: any; countTAT: number; incomingDialogOpened:boolean = false - constructor(private router: Router, public menuItems: MenuItems, public horizontalMenuItems : HorizontalMenuItems, public translate: TranslateService,public aws:AwsService,public users:UserService,private _dashboardService: DashboardService,private messagingService:MessagingService,private socket:Socket,private matDialog:MatDialog) { + constructor(private router: Router, public menuItems: MenuItems, public horizontalMenuItems : HorizontalMenuItems, public translate: TranslateService,public aws:AwsService,public users:UserService,private _dashboardService: DashboardService,private messagingService:MessagingService,private socket:Socket,private matDialog:MatDialog, + private _notificationService:PushNotifyService) { const browserLang: string = translate.getBrowserLang(); translate.use(browserLang.match(/en|fr/) ? browserLang : 'en'); @@ -116,6 +118,7 @@ export class AdminLayoutComponent implements OnInit, OnDestroy { }); // this.alertForTAT(); + this._notificationService.requestPermission(); } ngOnInit(): void { @@ -143,7 +146,7 @@ export class AdminLayoutComponent implements OnInit, OnDestroy { } }); this.listenForCalls() - this.openIncomingDialog(); + // this.openIncomingDialog(); } @HostListener('click', ['$event']) @@ -298,6 +301,7 @@ export class AdminLayoutComponent implements OnInit, OnDestroy { this.aws.logout().subscribe(res=>{ //alert("res"); localStorage.removeItem('user_role'); + localStorage.removeItem('pd_short_info'); this.messagingService.unsubscribeNotification() setTimeout(()=>{ this.router.navigate(['/authentication/login']); @@ -319,17 +323,30 @@ export class AdminLayoutComponent implements OnInit, OnDestroy { // FOR LISTENING TO RECIEVE CALLS FROM CALLER listenForCalls() { // this.socket.on('BackOffer', this.connectPeer) - this.socket.fromEvent('BackOffer').subscribe(res=>{ + let userrole = localStorage.getItem('user_role') + if(userrole == '5') { + let pd_short_info:any = localStorage.getItem('pd_short_info') + pd_short_info = JSON.parse(pd_short_info); + this.socket.fromEvent('BackOffer').subscribe((res:any)=>{ console.log(res) - this.connectPeer(res); + if(res && res.hasOwnProperty('random_string') && res.random_string){ + if(pd_short_info.filter(val=>val.random_string == res.random_string).length > 0){ + let curr_pd_info= pd_short_info.filter(val=>val.random_string == res.random_string)[0] + if(curr_pd_info) { + this.connectPeer(res,curr_pd_info); + } + } + } }) } - connectPeer(offer) { + } + connectPeer(offer,curr_pd_info) { console.log(offer) // alert("Offer is listened"); - this.openIncomingDialog(offer); + this.notify('Incoming Call','Calling from ' + curr_pd_info.applicant_name + ' (' +curr_pd_info.pd_sno+ ')') + this.openIncomingDialog(offer,curr_pd_info); } - openIncomingDialog(offer?) { + openIncomingDialog(offer?,curr_pd_info?) { if(this.incomingDialogOpened == true) { return; } @@ -337,6 +354,7 @@ export class AdminLayoutComponent implements OnInit, OnDestroy { const dialogRef = this.matDialog.open(IncomingCallComponent,{ // minWidth:'25%', // maxWidth:'30%', + data:curr_pd_info, disableClose: true, backdropClass: 'incoming-call-background' , panelClass:'incoming-call-background' @@ -354,7 +372,7 @@ export class AdminLayoutComponent implements OnInit, OnDestroy { } openVideoChatDialog(offer) { let dialogRef = this.matDialog.open(VideoChatComponent,{ - data:{chat_info:'call_recieving',JSON_to_connect:offer}, + data:offer, maxWidth: '100vw', maxHeight: '100vh', height: '100%', @@ -363,4 +381,12 @@ export class AdminLayoutComponent implements OnInit, OnDestroy { panelClass:'video-chat' }) } + notify(title,approval) { + let data: Array < any >= []; + data.push({ + 'title': title, + 'body': approval + }); + this._notificationService.generateNotificationWithTitle(data); +} } diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/view-pd/view-pd.component.html b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/view-pd/view-pd.component.html index 4a04072af..df17d9888 100755 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/view-pd/view-pd.component.html +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/view-pd/view-pd.component.html @@ -127,6 +127,10 @@
+ diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/view-pd/view-pd.component.ts b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/view-pd/view-pd.component.ts index 119183645..943e04fd9 100755 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/view-pd/view-pd.component.ts +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/view-pd/view-pd.component.ts @@ -19,6 +19,7 @@ import { InitiateAdditionalPdComponent } from './../initiate-additional-pd/initi /**sweet alert */ import Swal from 'sweetalert2'; +import { VideoChatComponent } from 'app/video-chat/video-chat.component'; @Component({ selector: 'app-view-pd', @@ -559,5 +560,15 @@ export class ViewPdComponent implements OnInit, OnDestroy { }) } - + openVideoChat(){ + let dialogRef = this.dialog.open(VideoChatComponent,{ + data:{type:'init',random_string:this.pdMasterData[0].random_string}, + maxWidth: '100vw', + maxHeight: '100vh', + height: '100%', + width: '100%', + disableClose: true, + panelClass:'video-chat' + }) + } } \ No newline at end of file diff --git a/ng6-seed/src/app/personal-discussion/pd-service/pd-triger.service.ts b/ng6-seed/src/app/personal-discussion/pd-service/pd-triger.service.ts index ce3b5012c..893108a34 100755 --- a/ng6-seed/src/app/personal-discussion/pd-service/pd-triger.service.ts +++ b/ng6-seed/src/app/personal-discussion/pd-service/pd-triger.service.ts @@ -185,6 +185,13 @@ export class PdTrigerService { // get pd details getPdDetails(): Observable { return this._http.get(this.apiUrl + "listLessPDDetails/get") + .map(res=>{ + if(res['dataStatus']) { + let pd_det = res['records'].map(val=>{ return {applicant_name:val.applicant_name,pd_id:val.pd_id,random_string:val.random_string,pd_sno:val.pd_sno}}) + localStorage.setItem('pd_short_info',JSON.stringify(pd_det)); + return res + } + }) .pipe( catchError(this.handleError('operation', [])) ) diff --git a/ng6-seed/src/app/shared/push-notify.service.ts b/ng6-seed/src/app/shared/push-notify.service.ts index 1cdcf47e5..a85ab331b 100644 --- a/ng6-seed/src/app/shared/push-notify.service.ts +++ b/ng6-seed/src/app/shared/push-notify.service.ts @@ -68,6 +68,18 @@ export class PushNotifyService { let notify = self.create('', options).subscribe(); }) } + generateNotificationWithTitle(source: Array < any > ): void { + let self = this; + source.forEach((item) => { + let options = { + body: item.body, + icon: item.icon, + sound:'src/assets/spinner/notify.mp3', + sticky:true + }; + let notify = self.create(item.title, options).subscribe(); + }) +} } export declare type Permission = 'denied' | 'granted' | 'default'; export interface PushNotification { diff --git a/ng6-seed/src/app/video-chat/incoming-call/incoming-call.component.html b/ng6-seed/src/app/video-chat/incoming-call/incoming-call.component.html index e8579413c..55f6bd918 100644 --- a/ng6-seed/src/app/video-chat/incoming-call/incoming-call.component.html +++ b/ng6-seed/src/app/video-chat/incoming-call/incoming-call.component.html @@ -7,9 +7,10 @@ Image
-
+
-
User Name
+
{{this.pd_info.applicant_name}}
+
{{this.pd_info.pd_sno}}
diff --git a/ng6-seed/src/app/video-chat/incoming-call/incoming-call.component.scss b/ng6-seed/src/app/video-chat/incoming-call/incoming-call.component.scss index 2bb53444c..b45ddba99 100644 --- a/ng6-seed/src/app/video-chat/incoming-call/incoming-call.component.scss +++ b/ng6-seed/src/app/video-chat/incoming-call/incoming-call.component.scss @@ -9,9 +9,12 @@ } .user-name { margin: 8% !important; - h6{ + h5{ font-weight: bold; } + h6{ + margin-top: 8px; + } color: white } .call-animation { diff --git a/ng6-seed/src/app/video-chat/incoming-call/incoming-call.component.ts b/ng6-seed/src/app/video-chat/incoming-call/incoming-call.component.ts index 14535384f..fb97afe1e 100644 --- a/ng6-seed/src/app/video-chat/incoming-call/incoming-call.component.ts +++ b/ng6-seed/src/app/video-chat/incoming-call/incoming-call.component.ts @@ -1,5 +1,5 @@ -import { Component, OnInit } from '@angular/core'; -import { MatDialogRef } from '@angular/material'; +import { Component, OnInit, Inject } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; @Component({ selector: 'app-incoming-call', @@ -8,7 +8,9 @@ import { MatDialogRef } from '@angular/material'; }) export class IncomingCallComponent implements OnInit { - constructor(private dialogRef:MatDialogRef) { } + constructor(private dialogRef:MatDialogRef, @Inject(MAT_DIALOG_DATA) public pd_info:any) { + console.log(this.pd_info) + } ngOnInit() { } diff --git a/ng6-seed/src/app/video-chat/video-chat.component.html b/ng6-seed/src/app/video-chat/video-chat.component.html index 008d9fa3c..4f3837a84 100644 --- a/ng6-seed/src/app/video-chat/video-chat.component.html +++ b/ng6-seed/src/app/video-chat/video-chat.component.html @@ -4,68 +4,72 @@ matTooltipPosition="right" (click)="close_all()"> close +
-
- - - -
- -
- - - - - - -
- - - - - - - - -
-
-
-
-
- -
+
+ + - -
-

Note : Make sure the Reciever is waiting for your call before start Calling

-
- -
-
- - \ No newline at end of file +
+ +
+ + +
+

{{user_msg}}


+
+ + + +
+ + + + + + + + +
+
+
+
+
+ +
+ + +
+

Note : Make sure the Reciever is waiting for your call before start Calling

+
+ +
+
+ + \ No newline at end of file diff --git a/ng6-seed/src/app/video-chat/video-chat.component.scss b/ng6-seed/src/app/video-chat/video-chat.component.scss index bc377e6ae..b26518120 100644 --- a/ng6-seed/src/app/video-chat/video-chat.component.scss +++ b/ng6-seed/src/app/video-chat/video-chat.component.scss @@ -1,9 +1,10 @@ ::ng-deep { .video-chat > mat-dialog-container { - background: #71AFFF; + background: #eee; padding: 0; } } + @media(max-width:500px) { video#myvideo { @@ -15,26 +16,31 @@ left: 0; // /* top: 20px; } - +.body-container { + padding: 0px !important; +} video#peervideo { /* height: 498px; */ // position: relative; // margin-top: 126px; width: 100%; + margin-top: 5%; + } -.peer_message{ - font-size: 20px; - position: absolute; - top: 11%; - float: right; - padding: 57px; - /* border: 2px solid lavender; */ - left: 8%; - p{ - text-align: center; - } -} +// .peer_message{ +// font-size: 20px; +// position: absolute; +// top: 11%; +// bottom: 10%; +// float: right; +// padding: 57px; +// /* border: 2px solid lavender; */ +// left: 8%; +// p{ +// text-align: center; +// } +// } } @media(min-width:500px) { .peer_video{ diff --git a/ng6-seed/src/app/video-chat/video-chat.component.ts b/ng6-seed/src/app/video-chat/video-chat.component.ts index 35dbbb162..287159909 100644 --- a/ng6-seed/src/app/video-chat/video-chat.component.ts +++ b/ng6-seed/src/app/video-chat/video-chat.component.ts @@ -28,6 +28,8 @@ export class VideoChatComponent implements OnInit { is_video_enable:boolean = false; mic_mute: boolean = true; video_mute: boolean = true; + user_msg: string; + recorder: any; constructor(private _notificationService:PushNotifyService, private cdRef: ChangeDetectorRef,private socket: Socket, private dialogRef: MatDialogRef, @@ -42,7 +44,7 @@ export class VideoChatComponent implements OnInit { 'title': title, 'body': approval }); - this._notificationService.generateNotification(data); + this._notificationService.generateNotificationWithTitle(data); } // ngOnInit() { // setTimeout(()=>{ @@ -77,7 +79,7 @@ export class VideoChatComponent implements OnInit { ngOnInit() { console.log(this.chat_info); if(this.chat_info) { - if(this.chat_info.chat_info == 'call_recieving' && this.chat_info.hasOwnProperty('JSON_to_connect') && this.chat_info.JSON_to_connect) { + if(this.chat_info.type == 'offer' && this.chat_info.hasOwnProperty('JSON_to_connect') && this.chat_info.JSON_to_connect) { this.is_video_enable = true; this.start_Calling('receive') } @@ -85,6 +87,7 @@ export class VideoChatComponent implements OnInit { // this.start_Calling('receive') } start_Calling(option) { + this.user_msg ="Establishing Connection..." this.userCallType = option // let texk=this.textCopyElement.nativeElement let video = this.myVideo.nativeElement; @@ -107,6 +110,7 @@ export class VideoChatComponent implements OnInit { this.fetchVideoAndPlay(stream,video); this.myVideoEnable = true this.MediaStream = stream + this.is_video_enable = true; // let switchCameraBtn= this.camereSwitchBtn.nativeElement let supports = navigator.mediaDevices.getSupportedConstraints(); console.log(supports) @@ -124,13 +128,13 @@ export class VideoChatComponent implements OnInit { iceServers: [ { "urls": "stun:numb.viagenie.ca", - "username": 'fairojm@gmail.com', - "credential": 'fairojfai00' + "username": 'fairoj@venbainfotech.com', + "credential": '0987123400' }, { "urls": "turn:numb.viagenie.ca", - "username": "fairojm@gmail.com", - "credential": "fairojfai00" + "username": "fairoj@venbainfotech.com", + "credential": "0987123400" } ] } @@ -142,15 +146,19 @@ export class VideoChatComponent implements OnInit { console.log(JSON.stringify(data)); if(data.hasOwnProperty('type') && data.type == 'offer'){ console.log("entered!!!!!!!!!!!!!!!!1"); - this.socket.emit('Offer', data) - } - else if(data.type == 'answer'){ - this.socket.emit('Answer', data) + this.user_msg = "Calling..." + let event_data = {JSON_to_connect:data,type:'offer',random_string:this.chat_info.random_string} + this.socket.emit('Offer', event_data) } + else if(data.type == 'answer' ){ + this.user_msg = "Waiting For Connection..." + let event_data = {JSON_to_connect:data,type:'answer',random_string:this.chat_info.random_string} + this.socket.emit('Answer', event_data) + } // copyMessage(JSON.stringify(data)) copyMessageText = JSON.stringify(data); // update() - this.copyMessage(copyMessageText,data.type) + // this.copyMessage(copyMessageText,data.type) // this.targetpeer = data; }) // } @@ -161,11 +169,11 @@ export class VideoChatComponent implements OnInit { console.log("Peer Connection is closed ",data); this.disconnect(); // alert("Peer Connection is closed " +JSON.stringify(data)) - this.notify("Connection Closed",'Peer Connection Closed'+JSON.stringify(data)) + this.notify("Connection Closed",'Peer Connection Closed') }) peerx.on('error', (err) => { console.log("Fatal Error ",err); - + this.disconnect(); alert("Fatal Error" +JSON.stringify(err)) }) peerx.on('stream', (stream)=> { @@ -215,7 +223,9 @@ export class VideoChatComponent implements OnInit { function connectPeer(answer) { console.log("$$$$$$$$$$$$$$44"); console.log(answer); - peerx.signal(answer); + setTimeout(()=>{ + peerx.signal(answer.JSON_to_connect); + },1000) } function getPeer(){ return JSON.stringify(copyMessageText) @@ -226,11 +236,11 @@ export class VideoChatComponent implements OnInit { // this.socket.on('BackOffer', getPeer) // },2000) // } - if(this.chat_info.chat_info == 'call_recieving' && this.chat_info.JSON_to_connect && this.chat_info.JSON_to_connect != undefined) { - connectPeer(this.chat_info.JSON_to_connect) + if(this.chat_info.type == 'offer' && this.chat_info.JSON_to_connect && this.chat_info.JSON_to_connect != undefined) { + connectPeer(this.chat_info) } - let tt = this.socket.on('BackOffer', connectPeer) - console.log(tt); + // let tt = this.socket.on('BackOffer', connectPeer) + // console.log(tt); this.socket.on('BackAnswer', connectPeer) }, err=>{ console.log('Failed to get stream', err); @@ -259,13 +269,7 @@ export class VideoChatComponent implements OnInit { } fetchVideoAndPlay(stream,videotype,enablePeerVideo?) { console.log("12@@@@@@@@@2",enablePeerVideo) - if(enablePeerVideo) { - this.peerVideoEnable = enablePeerVideo - // this.camereSwitchBtn.nativeElement.disabled = true; - console.log(this.peerVideoEnable); - this.cdRef.detectChanges(); - // this.startRecording(stream) - } + fetch('') .then(response => response.blob()) .then(blob => { @@ -274,29 +278,36 @@ export class VideoChatComponent implements OnInit { }) .then(_ => { // Video playback started ;) + if(enablePeerVideo) { + if(this.peervideo.nativeElement.videoHeight >= 500) { + this.peervideo.nativeElement.style.marginTop = '0px' + } + this.peerVideoEnable = enablePeerVideo + // this.camereSwitchBtn.nativeElement.disabled = true; + console.log("peervideo check",this.peerVideoEnable,this.peervideo.nativeElement.videoWidth,this.peervideo.nativeElement.videoHeight); + this.cdRef.detectChanges(); + this.startRecording(stream) + } }) .catch(e => { // Video playback failed ;( }) } - startRecording(stream) { - let recorder = new RecordRTCPromisesHandler(stream, { + async startRecording(stream) { + this.recorder = [] + this.recorder = new RecordRTCPromisesHandler(stream, { type: 'video', mimeType: 'video/webm', // or video/webm\;codecs=h264 or video/webm\;codecs=vp9 audioBitsPerSecond: 128000, videoBitsPerSecond: 128000, bitsPerSecond: 128000 // if this line is provided, skip above }); - recorder.startRecording(); - const sleep = m => new Promise(r => setTimeout(r, m)); -sleep(3000); -setTimeout(()=>{ -recorder.stopRecording(); -console.log(recorder); -let blob = recorder.getBlob(); -recorder.getDataURL().then(dataURL=>{ -console.log("@@@@@",dataURL) -}); + this.recorder.startRecording(); + // const sleep = m => new Promise(r => setTimeout(r, m)); + // await sleep(3000); +// setTimeout(()=>{ + +// }); // var file = new File([blob], 'video.mp4', { // type: 'video/mp4' // }); @@ -332,9 +343,26 @@ console.log("@@@@@",dataURL) // const fileURL = window.URL.createObjectURL(blob); // console.log(fileURL); // window.open(fileURL); -},10000) // invokeSaveAsDialog(blob); } + async stopRecording() { + await this.recorder.stopRecording(); + console.log(this.recorder); + let blob = await this.recorder.getBlob(); + setTimeout(()=>{ + console.log(typeof(blob),blob); + var file = new File([blob], 'video.mp4', { + type: 'video/mp4' + }); + console.log(file) + const fileURL = window.URL.createObjectURL(file); + alert("saved Recording will be opened in a new window"); + window.open(fileURL); + },3000); + this.recorder.getDataURL().then(dataURL=>{ + console.log("@@@@@",dataURL) + }) +} connect() { this.peer.signal(JSON.parse(this.targetpeer)); } @@ -354,8 +382,12 @@ console.log("@@@@@",dataURL) this.peer.destroy(); this.peerVideoEnable = false this.targetpeer = '' - this.cdRef.detectChanges(); + this.peer = '' + // this.cdRef.detectChanges(); this.peervideo.nativeElement.pause(); + this.stopRecording().then(res=>{ + + }) console.log(this.MediaStream.getTracks()) // this.MediaStream.stop() // var track = this.MediaStream.getTracks()[0]; // if only one media track @@ -367,8 +399,10 @@ console.log("@@@@@",dataURL) console.log(this.peervideo); // this.peervideo.nativeElement.videoWidth = 0 // this.peervideo.nativeElement.videoHeight = 0 + this.myVideo.nativeElement.pause(); this.is_video_enable = false this.cdRef.detectChanges(); + console.log(this.peer) } copyMessage(val: string,message?){ const selBox = document.createElement('textarea'); diff --git a/ng6-seed/src/assets/spinner/notify.mp3 b/ng6-seed/src/assets/spinner/notify.mp3 new file mode 100644 index 000000000..9e859af35 Binary files /dev/null and b/ng6-seed/src/assets/spinner/notify.mp3 differ diff --git a/ng6-seed/src/environments/environment.prod.ts b/ng6-seed/src/environments/environment.prod.ts index 3a5f4c4e0..14cb1f21f 100755 --- a/ng6-seed/src/environments/environment.prod.ts +++ b/ng6-seed/src/environments/environment.prod.ts @@ -4,6 +4,7 @@ export const environment = { environmentName: 'Production Environment',//Live Environment. apiEndpoint: 'https://api.pdgenie.com/sparqprod/api/', + socketServerUrl:'https://morning-garden-90282.herokuapp.com', authorization: 'TnAwuc64pVpcB9xf', login_string: "cognito-idp.ap-south-1.amazonaws.com/ap-south-1_MlTee1O5V", diff --git a/ng6-seed/src/environments/environment.stage.ts b/ng6-seed/src/environments/environment.stage.ts index 0eaeb99d1..6e5b873da 100644 --- a/ng6-seed/src/environments/environment.stage.ts +++ b/ng6-seed/src/environments/environment.stage.ts @@ -4,6 +4,7 @@ export const environment = { environmentName: 'Testing Environment',//Test Environment. apiEndpoint: 'https://apitest.pdgenie.com/sparqtest/api/', + socketServerUrl:'https://morning-garden-90282.herokuapp.com', authorization: 'sparqvenba2018', login_string: "cognito-idp.ap-south-1.amazonaws.com/ap-south-1_qQ85yQZJO",