[DEV] rework to manage secure connection
This commit is contained in:
parent
0aefa81c1d
commit
f71b88a459
@ -4,6 +4,7 @@ import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
|
|||||||
import org.glassfish.jersey.media.multipart.FormDataParam;
|
import org.glassfish.jersey.media.multipart.FormDataParam;
|
||||||
import org.kar.karideo.ConfigVariable;
|
import org.kar.karideo.ConfigVariable;
|
||||||
import org.kar.karideo.GenericContext;
|
import org.kar.karideo.GenericContext;
|
||||||
|
import org.kar.karideo.Secured;
|
||||||
import org.kar.karideo.WebLauncher;
|
import org.kar.karideo.WebLauncher;
|
||||||
import org.kar.karideo.db.DBEntry;
|
import org.kar.karideo.db.DBEntry;
|
||||||
import org.kar.karideo.model.Data;
|
import org.kar.karideo.model.Data;
|
||||||
@ -324,6 +325,7 @@ public class DataResource {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Secured
|
||||||
@POST
|
@POST
|
||||||
@Path("/upload/")
|
@Path("/upload/")
|
||||||
@Consumes({MediaType.MULTIPART_FORM_DATA})
|
@Consumes({MediaType.MULTIPART_FORM_DATA})
|
||||||
@ -346,7 +348,7 @@ public class DataResource {
|
|||||||
//return null;
|
//return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
//@Secured
|
@Secured
|
||||||
@GET
|
@GET
|
||||||
@Path("{id}")
|
@Path("{id}")
|
||||||
@RolesAllowed("USER")
|
@RolesAllowed("USER")
|
||||||
@ -365,7 +367,7 @@ public class DataResource {
|
|||||||
}
|
}
|
||||||
return buildStream(ConfigVariable.getMediaDataFolder() + File.separator + id + File.separator + "data", range, value.mimeType);
|
return buildStream(ConfigVariable.getMediaDataFolder() + File.separator + id + File.separator + "data", range, value.mimeType);
|
||||||
}
|
}
|
||||||
//@Secured
|
@Secured
|
||||||
@GET
|
@GET
|
||||||
@Path("thumbnail/{id}")
|
@Path("thumbnail/{id}")
|
||||||
@RolesAllowed("USER")
|
@RolesAllowed("USER")
|
||||||
@ -412,7 +414,7 @@ public class DataResource {
|
|||||||
}
|
}
|
||||||
return buildStream(filePathName, range, value.mimeType);
|
return buildStream(filePathName, range, value.mimeType);
|
||||||
}
|
}
|
||||||
//@Secured
|
@Secured
|
||||||
@GET
|
@GET
|
||||||
@Path("{id}/{name}")
|
@Path("{id}/{name}")
|
||||||
@RolesAllowed("USER")
|
@RolesAllowed("USER")
|
||||||
|
@ -15,9 +15,21 @@ CREATE TABLE `node` (
|
|||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class MediaSmall {
|
public class MediaSmall {
|
||||||
|
public class MediaStreamProperty {
|
||||||
|
public Long id;
|
||||||
|
public Long timeSecond;
|
||||||
|
public Long width;
|
||||||
|
public Long height;
|
||||||
|
public Map<String, Long> videos = new HashMap<>();
|
||||||
|
public Map<String, Long> audios = new HashMap<>();
|
||||||
|
public Map<String, Long> subtitles = new HashMap<>();
|
||||||
|
}
|
||||||
|
|
||||||
public Long id;
|
public Long id;
|
||||||
public String name;
|
public String name;
|
||||||
public String description;
|
public String description;
|
||||||
@ -31,6 +43,7 @@ public class MediaSmall {
|
|||||||
public Integer time;
|
public Integer time;
|
||||||
public String ageLimit;
|
public String ageLimit;
|
||||||
public List<Long> covers = new ArrayList<>();
|
public List<Long> covers = new ArrayList<>();
|
||||||
|
public MediaStreamProperty media;
|
||||||
|
|
||||||
public MediaSmall(ResultSet rs) {
|
public MediaSmall(ResultSet rs) {
|
||||||
int iii = 1;
|
int iii = 1;
|
||||||
|
6646
front/package-lock.json
generated
6646
front/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -13,6 +13,7 @@ import { AppRoutingModule } from './app-routing.module';
|
|||||||
|
|
||||||
import { UploadFileComponent } from './component/upload-file/upload-file';
|
import { UploadFileComponent } from './component/upload-file/upload-file';
|
||||||
import { TopMenuComponent } from './component/top-menu/top-menu';
|
import { TopMenuComponent } from './component/top-menu/top-menu';
|
||||||
|
import { ElementDataImageComponent } from './component/data-image/data-image';
|
||||||
import { ElementTypeComponent } from './component/element-type/element-type';
|
import { ElementTypeComponent } from './component/element-type/element-type';
|
||||||
import { ElementSeriesComponent } from './component/element-series/element-series';
|
import { ElementSeriesComponent } from './component/element-series/element-series';
|
||||||
import { ElementSeasonComponent } from './component/element-season/element-season';
|
import { ElementSeasonComponent } from './component/element-season/element-season';
|
||||||
@ -45,7 +46,7 @@ import { AuthService } from './service/auth';
|
|||||||
import { ArianeService } from './service/ariane';
|
import { ArianeService } from './service/ariane';
|
||||||
import { CookiesService } from './service/cookies';
|
import { CookiesService } from './service/cookies';
|
||||||
import { HttpWrapperService } from './service/http-wrapper';
|
import { HttpWrapperService } from './service/http-wrapper';
|
||||||
import { HttpOAuthWrapperService } from './service/http-oauth-wrapper';
|
//import { HttpOAuthWrapperService } from './service/http-oauth-wrapper';
|
||||||
import { UserService } from './service/user';
|
import { UserService } from './service/user';
|
||||||
import { UniverseService } from './service/universe';
|
import { UniverseService } from './service/universe';
|
||||||
import { SeriesService } from './service/series';
|
import { SeriesService } from './service/series';
|
||||||
@ -64,6 +65,7 @@ import { AppComponent } from './app.component';
|
|||||||
AppComponent,
|
AppComponent,
|
||||||
TopMenuComponent,
|
TopMenuComponent,
|
||||||
UploadFileComponent,
|
UploadFileComponent,
|
||||||
|
ElementDataImageComponent,
|
||||||
ElementTypeComponent,
|
ElementTypeComponent,
|
||||||
ElementSeriesComponent,
|
ElementSeriesComponent,
|
||||||
ElementSeasonComponent,
|
ElementSeasonComponent,
|
||||||
@ -103,7 +105,7 @@ import { AppComponent } from './app.component';
|
|||||||
providers: [
|
providers: [
|
||||||
PopInService,
|
PopInService,
|
||||||
HttpWrapperService,
|
HttpWrapperService,
|
||||||
HttpOAuthWrapperService,
|
//HttpOAuthWrapperService,
|
||||||
BddService,
|
BddService,
|
||||||
AuthService,
|
AuthService,
|
||||||
SessionService,
|
SessionService,
|
||||||
|
3
front/src/app/component/data-image/data-image.html
Normal file
3
front/src/app/component/data-image/data-image.html
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<div>
|
||||||
|
<canvas width="200" height="250" style="border:1px solid #d3d3d3;" id="imageCanvas" #imageCanvas></canvas>
|
||||||
|
</div>
|
52
front/src/app/component/data-image/data-image.less
Normal file
52
front/src/app/component/data-image/data-image.less
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
|
||||||
|
.count-base {
|
||||||
|
height: 0px;
|
||||||
|
width: 100%;
|
||||||
|
right: 0px;
|
||||||
|
z-index: 12;
|
||||||
|
//position:flex;
|
||||||
|
text-align: right;
|
||||||
|
.count {
|
||||||
|
height: 30px;
|
||||||
|
//width: 30px;
|
||||||
|
font-size: 17px;
|
||||||
|
line-height: 30px;
|
||||||
|
overflow:hidden;
|
||||||
|
position:relative;
|
||||||
|
z-index: 12;
|
||||||
|
right: 2px;
|
||||||
|
top: 4px;
|
||||||
|
text-align: right;
|
||||||
|
padding: 5px 10px;
|
||||||
|
color: rgba(0, 0, 0, 1.0);
|
||||||
|
background: rgba(256, 256, 256, 0.3);
|
||||||
|
border: 1px solid;
|
||||||
|
border-color: rgba(256, 256, 256, 0.8);
|
||||||
|
border-radius: 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.imgContainer-small {
|
||||||
|
text-align: center;
|
||||||
|
margin: 15px 0 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
img.miniature-small {
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
//border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title-small {
|
||||||
|
height: 60px;
|
||||||
|
font-size: 24px;
|
||||||
|
overflow:hidden;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.description-small {
|
||||||
|
height: 30px;
|
||||||
|
font-size: 12px;
|
||||||
|
overflow:hidden;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
47
front/src/app/component/data-image/data-image.ts
Normal file
47
front/src/app/component/data-image/data-image.ts
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
/** @file
|
||||||
|
* @author Edouard DUPIN
|
||||||
|
* @copyright 2018, Edouard DUPIN, all right reserved
|
||||||
|
* @license PROPRIETARY (see license file)
|
||||||
|
*/
|
||||||
|
import { Injectable, Component, OnInit, Input, ElementRef, ViewChild } from '@angular/core';
|
||||||
|
import { DataService } from '../../service/data';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'data-image',
|
||||||
|
templateUrl: './data-image.html',
|
||||||
|
styleUrls: [ './data-image.less' ]
|
||||||
|
})
|
||||||
|
@Injectable()
|
||||||
|
export class ElementDataImageComponent implements OnInit {
|
||||||
|
// input parameters
|
||||||
|
@Input() id:number = -1;
|
||||||
|
|
||||||
|
imageCanvas:any;
|
||||||
|
@ViewChild('imageCanvas')
|
||||||
|
set mainDivEl(el: ElementRef) {
|
||||||
|
if(el !== null && el !== undefined) {
|
||||||
|
this.imageCanvas = el.nativeElement;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor(private dataService: DataService) {
|
||||||
|
|
||||||
|
}
|
||||||
|
ngOnInit() {
|
||||||
|
/*
|
||||||
|
let canvas = this.imageCanvas.nativeElement;
|
||||||
|
let ctx = canvas.getContext("2d");
|
||||||
|
*/
|
||||||
|
console.log(`Request thumnail for ---> ${this.id}`);
|
||||||
|
this.dataService.getImageThumbnail(this.id)
|
||||||
|
.then((result) => {
|
||||||
|
console.log(`plop ---> ${result.status}`);
|
||||||
|
}).catch(()=>{
|
||||||
|
console.log("plop ---> ");
|
||||||
|
});
|
||||||
|
|
||||||
|
//let img = new Image();
|
||||||
|
//img.src = "../../assets/aCRF-PRV111_CLN-001 v1.4-images/aCRF-PRV111_CLN-001 v1.4-blank_0.jpg";
|
||||||
|
//ctx.drawImage(img, 10, 10, 250, 250);
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
<div class="imgContainer-small">
|
<div class="imgContainer-small">
|
||||||
<div *ngIf="cover">
|
<div *ngIf="cover">
|
||||||
<img src="{{cover}}"/>
|
<data-image id="{{cover}}"></data-image>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="!cover" class="noImage">
|
<div *ngIf="!cover" class="noImage">
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ export class ElementSeasonComponent implements OnInit {
|
|||||||
self.cover = null;
|
self.cover = null;
|
||||||
// self.covers = [];
|
// self.covers = [];
|
||||||
} else {
|
} else {
|
||||||
self.cover = self.seasonService.getCoverThumbnailUrl(response.covers[0]);
|
self.cover = response.covers[0];//self.seasonService.getCoverThumbnailUrl(response.covers[0]);
|
||||||
for(let iii = 0; iii < response.covers.length; iii++) {
|
for(let iii = 0; iii < response.covers.length; iii++) {
|
||||||
self.covers.push(self.seasonService.getCoverThumbnailUrl(response.covers[iii]));
|
self.covers.push(self.seasonService.getCoverThumbnailUrl(response.covers[iii]));
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="imgContainer-small">
|
<div class="imgContainer-small">
|
||||||
<div *ngIf="cover">
|
<div *ngIf="cover">
|
||||||
<img src="{{cover}}"/>
|
<data-image id="{{cover}}"></data-image>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="!cover" class="noImage">
|
<div *ngIf="!cover" class="noImage">
|
||||||
|
|
||||||
|
@ -43,9 +43,9 @@ export class ElementSeriesComponent implements OnInit {
|
|||||||
self.cover = null;
|
self.cover = null;
|
||||||
// self.covers = [];
|
// self.covers = [];
|
||||||
} else {
|
} else {
|
||||||
self.cover = self.seriesService.getCoverThumbnailUrl(response.covers[0]);
|
self.cover = response.covers[0];//self.seriesService.getCoverThumbnailUrl(response.covers[0]);
|
||||||
for(let iii = 0; iii < response.covers.length; iii++) {
|
for(let iii = 0; iii < response.covers.length; iii++) {
|
||||||
self.covers.push(self.seriesService.getCoverThumbnailUrl(response.covers[iii]));
|
self.covers.push(response.covers[iii]);//self.seriesService.getCoverThumbnailUrl(response.covers[iii]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).catch((response) => {
|
}).catch((response) => {
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
<div>
|
<div>
|
||||||
<div class="videoImgContainer">
|
<div class="videoImgContainer">
|
||||||
<div *ngIf="cover">
|
<div *ngIf="cover">
|
||||||
<img src="{{cover}}"/>
|
<data-image id="{{cover}}"></data-image>
|
||||||
|
<!--<img src="{{cover}}"/>-->
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="!cover" class="noImage">
|
<div *ngIf="!cover" class="noImage">
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<button class="item"
|
<button class="item"
|
||||||
*ngIf="login == null"
|
*ngIf="login === null"
|
||||||
style="float:right;"
|
style="float:right;"
|
||||||
(click)="onSignIn($event)"
|
(click)="onSignIn($event)"
|
||||||
(auxclick)="onSignIn($event)">
|
(auxclick)="onSignIn($event)">
|
||||||
|
@ -108,6 +108,7 @@ export class BddService {
|
|||||||
}
|
}
|
||||||
// brut force update of the BDD : TODO optimise it later ...
|
// brut force update of the BDD : TODO optimise it later ...
|
||||||
console.log(`Update BDD (${ name })`);
|
console.log(`Update BDD (${ name })`);
|
||||||
|
|
||||||
self.http.getSpecific(name)
|
self.http.getSpecific(name)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
console.log(`end download DB: ==> ${ name } ${ response.length}`);
|
console.log(`end download DB: ==> ${ name } ${ response.length}`);
|
||||||
|
@ -6,14 +6,11 @@
|
|||||||
|
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
|
|
||||||
import { HttpWrapperService } from './http-wrapper';
|
import { HTTPMimeType, HTTPRequestModel, HttpWrapperService, ModelResponseHttp } from './http-wrapper';
|
||||||
import { DataInterface } from './dataInterface';
|
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class DataService {
|
export class DataService {
|
||||||
// 0: Not hide password; 1 hide password;
|
// 0: Not hide password; 1 hide password;
|
||||||
private identificationVersion: number = 1;
|
|
||||||
private bdd: DataInterface = null;
|
|
||||||
private serviceName:string = 'data';
|
private serviceName:string = 'data';
|
||||||
|
|
||||||
constructor(private http: HttpWrapperService) {
|
constructor(private http: HttpWrapperService) {
|
||||||
@ -37,5 +34,23 @@ export class DataService {
|
|||||||
// return this.http.uploadFileMultipart(this.serviceName, null, _file);
|
// return this.http.uploadFileMultipart(this.serviceName, null, _file);
|
||||||
return this.http.uploadMultipart(`${this.serviceName }/upload/`, _form, _progress);
|
return this.http.uploadMultipart(`${this.serviceName }/upload/`, _form, _progress);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getImage(_id:number) : Promise<ModelResponseHttp> {
|
||||||
|
return this.http.requestImage({
|
||||||
|
endPoint: this.serviceName,
|
||||||
|
requestType: HTTPRequestModel.GET,
|
||||||
|
accept: HTTPMimeType.IMAGE,
|
||||||
|
contentType: HTTPMimeType.JSON,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
getImageThumbnail(_id:number) : Promise<ModelResponseHttp> {
|
||||||
|
return this.http.requestImage({
|
||||||
|
endPoint: this.serviceName + "/thumbnail/" + _id,
|
||||||
|
requestType: HTTPRequestModel.GET,
|
||||||
|
accept: HTTPMimeType.IMAGE,
|
||||||
|
contentType: HTTPMimeType.JSON,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,430 +0,0 @@
|
|||||||
/** @file
|
|
||||||
* @author Edouard DUPIN
|
|
||||||
* @copyright 2018, Edouard DUPIN, all right reserved
|
|
||||||
* @license PROPRIETARY (see license file)
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { Injectable } from '@angular/core';
|
|
||||||
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
||||||
|
|
||||||
import { environment } from '../../environments/environment';
|
|
||||||
|
|
||||||
@Injectable()
|
|
||||||
export class HttpOAuthWrapperService {
|
|
||||||
private displayReturn:boolean = false;
|
|
||||||
constructor(private http: HttpClient) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
createRESTCall(api:string, inputOptions?: any) {
|
|
||||||
let basePage = environment.apiOAuthUrl;
|
|
||||||
let addressServerRest = `${basePage }/`;
|
|
||||||
let options = inputOptions;
|
|
||||||
if(typeof options === 'undefined') {
|
|
||||||
options = [];
|
|
||||||
}
|
|
||||||
let out = addressServerRest + api;
|
|
||||||
let first = true;
|
|
||||||
for(let iii = 0; iii < options.length; iii++) {
|
|
||||||
if(first === false) {
|
|
||||||
out = `${out }&`;
|
|
||||||
} else {
|
|
||||||
out = `${out }?`;
|
|
||||||
first = false;
|
|
||||||
}
|
|
||||||
out = out + options[iii];
|
|
||||||
}
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
|
|
||||||
get(uriRest:string, headerOption:any, params:any) {
|
|
||||||
let connectionAdresse = this.createRESTCall(uriRest, {});
|
|
||||||
let config = {
|
|
||||||
params: params,
|
|
||||||
headers: new HttpHeaders(headerOption)
|
|
||||||
};
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
if(this.displayReturn === true) {
|
|
||||||
console.log(`call GET ${ connectionAdresse } params=${ JSON.stringify(params, null, 2)}`);
|
|
||||||
}
|
|
||||||
let request = this.http.get<any>(connectionAdresse, config);
|
|
||||||
let self = this;
|
|
||||||
request.subscribe((res: any) => {
|
|
||||||
if(self.displayReturn === true) {
|
|
||||||
console.log(`!! data ${ JSON.stringify(res, null, 2)}`);
|
|
||||||
}
|
|
||||||
if(res) {
|
|
||||||
if(res.httpCode) {
|
|
||||||
resolve({ status:res.httpCode, data:res });
|
|
||||||
} else {
|
|
||||||
resolve({ status:200, data:res });
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
resolve({ status:200, data:'' });
|
|
||||||
}
|
|
||||||
},
|
|
||||||
(error) => {
|
|
||||||
if(self.displayReturn === true) {
|
|
||||||
console.log(`an error occured status: ${ error.status}`);
|
|
||||||
console.log(`answer: ${ JSON.stringify(error, null, 2)}`);
|
|
||||||
}
|
|
||||||
reject({ status:error.status, data:error.error });
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
post(uriRest:string, headerOption:any, data:any) {
|
|
||||||
let connectionAdresse = this.createRESTCall(uriRest, {});
|
|
||||||
const httpOption = {
|
|
||||||
headers: new HttpHeaders(headerOption)
|
|
||||||
};
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
if(this.displayReturn === true) {
|
|
||||||
console.log(`call POST ${ connectionAdresse } data=${ JSON.stringify(data, null, 2)}`);
|
|
||||||
}
|
|
||||||
let request = this.http.post<any>(connectionAdresse, data, httpOption);
|
|
||||||
let self = this;
|
|
||||||
request.subscribe((res: any) => {
|
|
||||||
if(self.displayReturn === true) {
|
|
||||||
console.log(`!! data ${ JSON.stringify(res, null, 2)}`);
|
|
||||||
}
|
|
||||||
if(res) {
|
|
||||||
if(res.httpCode) {
|
|
||||||
resolve({ status:res.httpCode, data:res });
|
|
||||||
} else {
|
|
||||||
resolve({ status:200, data:res });
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
resolve({ status:200, data:'' });
|
|
||||||
}
|
|
||||||
},
|
|
||||||
(error) => {
|
|
||||||
if(self.displayReturn === true) {
|
|
||||||
console.log(`an error occured status: ${ error.status}`);
|
|
||||||
console.log(`answer: ${ JSON.stringify(error, null, 2)}`);
|
|
||||||
}
|
|
||||||
reject({ status:error.status, data:error.error });
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
put(uriRest:string, headerOption:any, data:any) {
|
|
||||||
let connectionAdresse = this.createRESTCall(uriRest, {});
|
|
||||||
const httpOption = {
|
|
||||||
headers: new HttpHeaders(headerOption)
|
|
||||||
};
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
if(this.displayReturn === true) {
|
|
||||||
console.log(`call POST ${ connectionAdresse } data=${ JSON.stringify(data, null, 2)}`);
|
|
||||||
}
|
|
||||||
let request = this.http.put<any>(connectionAdresse, data, httpOption);
|
|
||||||
let self = this;
|
|
||||||
request.subscribe((res: any) => {
|
|
||||||
if(self.displayReturn === true) {
|
|
||||||
console.log(`!! data ${ JSON.stringify(res, null, 2)}`);
|
|
||||||
}
|
|
||||||
if(res) {
|
|
||||||
if(res.httpCode) {
|
|
||||||
resolve({ status:res.httpCode, data:res });
|
|
||||||
} else {
|
|
||||||
resolve({ status:200, data:res });
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
resolve({ status:200, data:'' });
|
|
||||||
}
|
|
||||||
},
|
|
||||||
(error) => {
|
|
||||||
if(self.displayReturn === true) {
|
|
||||||
console.log(`an error occured status: ${ error.status}`);
|
|
||||||
console.log(`answer: ${ JSON.stringify(error, null, 2)}`);
|
|
||||||
}
|
|
||||||
reject({ status:error.status, data:error.error });
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
delete(uriRest:string, headerOption:any) {
|
|
||||||
let connectionAdresse = this.createRESTCall(uriRest, {});
|
|
||||||
const httpOption = {
|
|
||||||
headers: new HttpHeaders(headerOption)
|
|
||||||
};
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
if(this.displayReturn === true) {
|
|
||||||
console.log(`call POST ${ connectionAdresse}`);
|
|
||||||
}
|
|
||||||
let request = this.http.delete<any>(connectionAdresse, httpOption);
|
|
||||||
let self = this;
|
|
||||||
request.subscribe((res: any) => {
|
|
||||||
if(self.displayReturn === true) {
|
|
||||||
console.log(`!! data ${ JSON.stringify(res, null, 2)}`);
|
|
||||||
}
|
|
||||||
if(res) {
|
|
||||||
if(res.httpCode) {
|
|
||||||
resolve({ status:res.httpCode, data:res });
|
|
||||||
} else {
|
|
||||||
resolve({ status:200, data:res });
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
resolve({ status:200, data:'' });
|
|
||||||
}
|
|
||||||
},
|
|
||||||
(error) => {
|
|
||||||
if(self.displayReturn === true) {
|
|
||||||
console.log(`an error occured status: ${ error.status}`);
|
|
||||||
console.log(`answer: ${ JSON.stringify(error, null, 2)}`);
|
|
||||||
}
|
|
||||||
reject({ status:error.status, data:error.error });
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
uploadFileMultipart(base:string, id:number, file:File): any {
|
|
||||||
console.log(`Upload file to ${ base}`);
|
|
||||||
|
|
||||||
let url = base;
|
|
||||||
if(id !== null) {
|
|
||||||
url = `${url }/${ id}`;
|
|
||||||
}
|
|
||||||
let formData = new FormData();
|
|
||||||
formData.append('upload', file);
|
|
||||||
let headers = new Headers();
|
|
||||||
console.log(`upload filename : ${ file.name}`);
|
|
||||||
let extention = file.name.split('.').pop();
|
|
||||||
if(extention === 'jpg') {
|
|
||||||
headers.append('Content-Type', 'image/jpeg');
|
|
||||||
} else if(extention === 'png') {
|
|
||||||
headers.append('Content-Type', 'image/png');
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
headers.append('filename', file.name);
|
|
||||||
|
|
||||||
const httpOption = {
|
|
||||||
headers: headers,
|
|
||||||
reportProgress: true,
|
|
||||||
};
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
this.post(url, httpOption, formData)
|
|
||||||
.then((response: any) => {
|
|
||||||
console.log(`URL: ${ url }\nRespond(${ response.status }): ${ JSON.stringify(response.data, null, 2)}`);
|
|
||||||
if(response.status === 200) {
|
|
||||||
resolve(response.data);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
reject('An error occured');
|
|
||||||
}, (response: any) => {
|
|
||||||
if(typeof response.data === 'undefined') {
|
|
||||||
reject('return ERROR undefined');
|
|
||||||
} else {
|
|
||||||
reject(`return ERROR ${ JSON.stringify(response.data, null, 2)}`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
uploadFileBase64(base:string, id:number, file:File): any {
|
|
||||||
console.log(`Upload file to ${ base}`);
|
|
||||||
|
|
||||||
let url = base;
|
|
||||||
if(id !== null) {
|
|
||||||
url = `${url }/${ id}`;
|
|
||||||
}
|
|
||||||
let self = this;
|
|
||||||
let reader = new FileReader();
|
|
||||||
reader.readAsArrayBuffer(file);
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
reader.onload = () => {
|
|
||||||
let headers = {};// new Headers();
|
|
||||||
console.log(`upload filename : ${ file.name}`);
|
|
||||||
let extention = file.name.split('.').pop();
|
|
||||||
if(extention === 'jpg') {
|
|
||||||
// headers.append('Content-Type', "image/jpeg");
|
|
||||||
headers['Content-Type'] = 'image/jpeg';
|
|
||||||
headers['mime-type'] = 'image/jpeg';
|
|
||||||
} else if(extention === 'jpeg') {
|
|
||||||
// headers.append('Content-Type', "image/jpeg");
|
|
||||||
headers['Content-Type'] = 'image/jpeg';
|
|
||||||
headers['mime-type'] = 'image/jpeg';
|
|
||||||
} else if(extention === 'webp') {
|
|
||||||
// headers.append('Content-Type', "image/webp");
|
|
||||||
headers['Content-Type'] = 'image/webp';
|
|
||||||
headers['mime-type'] = 'image/webp';
|
|
||||||
} else if(extention === 'png') {
|
|
||||||
// headers.append('Content-Type', "image/png");
|
|
||||||
headers['Content-Type'] = 'image/png';
|
|
||||||
headers['mime-type'] = 'image/png';
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
// headers.append('filename', _file.name);
|
|
||||||
headers.filename = file.name;
|
|
||||||
|
|
||||||
self.post(url, headers, reader.result)
|
|
||||||
.then((response: any) => {
|
|
||||||
console.log(`URL: ${ url }\nRespond(${ response.status }): ${ JSON.stringify(response.data, null, 2)}`);
|
|
||||||
if(response.status === 200) {
|
|
||||||
resolve(response.data);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
reject('An error occured');
|
|
||||||
}, (response: any) => {
|
|
||||||
if(typeof response.data === 'undefined') {
|
|
||||||
reject('return ERROR undefined');
|
|
||||||
} else {
|
|
||||||
reject('return ERROR ...');// + JSON.stringify(response, null, 2));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Complex wrapper to simplify interaction:
|
|
||||||
getSpecific(base:string, id:number = null, subElement:string = '', select:Array<string> = []):any {
|
|
||||||
console.log(`Get All data from ${ base}`);
|
|
||||||
const httpOption = { 'Content-Type': 'application/json' };
|
|
||||||
let url = base;
|
|
||||||
if(id !== null) {
|
|
||||||
url = `${url }/${ id}`;
|
|
||||||
}
|
|
||||||
if(subElement !== '') {
|
|
||||||
url = `${url }/${ subElement}`;
|
|
||||||
}
|
|
||||||
if(select.length !== 0) {
|
|
||||||
let out = '';
|
|
||||||
for(let iii = 0; iii < select.length; iii++) {
|
|
||||||
if(select.length !== 0) {
|
|
||||||
out = `${out }&`;
|
|
||||||
}
|
|
||||||
out = `${out }select=${ select[iii]}`;
|
|
||||||
}
|
|
||||||
url = `${url }?${ out}`;
|
|
||||||
}
|
|
||||||
// console.log("call GET " + url);
|
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
this.get(url, httpOption, {})
|
|
||||||
.then((response: any) => {
|
|
||||||
// console.log("URL: " + url + "\nRespond(" + response.status + "): " + JSON.stringify(response.data, null, 2));
|
|
||||||
if(response.status === 200) {
|
|
||||||
resolve(response.data);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
reject('An error occured');
|
|
||||||
}, (response: any) => {
|
|
||||||
if(typeof response.data === 'undefined') {
|
|
||||||
reject('return ERROR undefined');
|
|
||||||
} else {
|
|
||||||
reject(`return ERROR ${ JSON.stringify(response.data, null, 2)}`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Complex wrapper to simplify interaction:
|
|
||||||
deleteSpecific(base:string, id:number, subElement:string = ''):any {
|
|
||||||
// console.log("delete data to " + _base);
|
|
||||||
const httpOption = { 'Content-Type': 'application/json' };
|
|
||||||
let url = base;
|
|
||||||
if(id !== null) {
|
|
||||||
url = `${url }/${ id}`;
|
|
||||||
}
|
|
||||||
if(subElement !== '') {
|
|
||||||
url = `${url }/${ subElement}`;
|
|
||||||
}
|
|
||||||
// console.log("call DELETE: " + url);
|
|
||||||
// console.log(" data: " + JSON.stringify(_data, null, 2));
|
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
this.delete(url, httpOption)
|
|
||||||
.then((response: any) => {
|
|
||||||
// console.log("URL: " + url + "\nRespond(" + response.status + "): " + JSON.stringify(response.data, null, 2));
|
|
||||||
if(response.status === 200) {
|
|
||||||
resolve(response.data);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(response.status === 201) {
|
|
||||||
resolve(response.data);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
reject('An error occured');
|
|
||||||
}, (response: any) => {
|
|
||||||
if(typeof response.data === 'undefined') {
|
|
||||||
reject('return ERROR undefined');
|
|
||||||
} else {
|
|
||||||
reject(`return ERROR ${ JSON.stringify(response.data, null, 2)}`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// Complex wrapper to simplify interaction:
|
|
||||||
putSpecific(base:string, id:number, data:any, subElement:string = ''):any {
|
|
||||||
// console.log("put data to " + _base);
|
|
||||||
const httpOption = { 'Content-Type': 'application/json' };
|
|
||||||
let url = base;
|
|
||||||
if(id !== null) {
|
|
||||||
url = `${url }/${ id}`;
|
|
||||||
}
|
|
||||||
if(subElement !== '') {
|
|
||||||
url = `${url }/${ subElement}`;
|
|
||||||
}
|
|
||||||
// console.log("call PUT: " + url);
|
|
||||||
// console.log(" data: " + JSON.stringify(_data, null, 2));
|
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
this.put(url, httpOption, data)
|
|
||||||
.then((response: any) => {
|
|
||||||
// console.log("URL: " + url + "\nRespond(" + response.status + "): " + JSON.stringify(response.data, null, 2));
|
|
||||||
if(response.status === 200) {
|
|
||||||
resolve(response.data);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(response.status === 201) {
|
|
||||||
resolve(response.data);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
reject('An error occured');
|
|
||||||
}, (response: any) => {
|
|
||||||
if(typeof response.data === 'undefined') {
|
|
||||||
reject('return ERROR undefined');
|
|
||||||
} else {
|
|
||||||
reject(`return ERROR ${ JSON.stringify(response.data, null, 2)}`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// Complex wrapper to simplify interaction:
|
|
||||||
postSpecific(base:string, id:number, data:any, subElement:string = ''):any {
|
|
||||||
// console.log("put data to " + _base);
|
|
||||||
const httpOption = { 'Content-Type': 'application/json' };
|
|
||||||
let url = base;
|
|
||||||
if(id !== null) {
|
|
||||||
url = `${url }/${ id}`;
|
|
||||||
}
|
|
||||||
if(subElement !== '') {
|
|
||||||
url = `${url }/${ subElement}`;
|
|
||||||
}
|
|
||||||
// console.log("call PUT: " + url);
|
|
||||||
// console.log(" data: " + JSON.stringify(_data, null, 2));
|
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
this.post(url, httpOption, data)
|
|
||||||
.then((response: any) => {
|
|
||||||
// console.log("URL: " + url + "\nRespond(" + response.status + "): " + JSON.stringify(response.data, null, 2));
|
|
||||||
if(response.status === 200) {
|
|
||||||
resolve(response.data);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(response.status === 201) {
|
|
||||||
resolve(response.data);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
reject('An error occured');
|
|
||||||
}, (response: any) => {
|
|
||||||
if(typeof response.data === 'undefined') {
|
|
||||||
reject('return ERROR undefined');
|
|
||||||
} else {
|
|
||||||
reject(`return ERROR ${ JSON.stringify(response.data, null, 2)}`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
@ -11,6 +11,51 @@ import { environment } from '../../environments/environment';
|
|||||||
|
|
||||||
import { SessionService } from './session';
|
import { SessionService } from './session';
|
||||||
|
|
||||||
|
export enum HTTPRequestModel {
|
||||||
|
POST = "POST",
|
||||||
|
GET = "GET",
|
||||||
|
PUT = "PUT",
|
||||||
|
DELETE = "DELETE",
|
||||||
|
PATCH = "PATCH",
|
||||||
|
}
|
||||||
|
export enum HTTPMimeType {
|
||||||
|
ALL = "*/*",
|
||||||
|
JSON = "application/json",
|
||||||
|
OCTET_STREAM = "application/octet-stream",
|
||||||
|
IMAGE = "image/*",
|
||||||
|
IMAGE_JPEG = "image/jpeg",
|
||||||
|
IMAGE_PNG = "image/png",
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface HTTPRequest {
|
||||||
|
server?: string;
|
||||||
|
endPoint: string;
|
||||||
|
requestType: HTTPRequestModel ;
|
||||||
|
accept: HTTPMimeType;
|
||||||
|
contentType: HTTPMimeType;
|
||||||
|
params?: any;
|
||||||
|
body?: any;
|
||||||
|
authorization?: string; // c'est un hook de merde ...
|
||||||
|
disableTocken?:boolean;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
{
|
||||||
|
endPoint: ,
|
||||||
|
requestType: HTTPRequestModel.GET,
|
||||||
|
accept: HTTPMimeType.ALL,
|
||||||
|
contentType: HTTPMimeType.JSON,
|
||||||
|
params?: ,
|
||||||
|
body?: ,
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
export interface ModelResponseHttp{
|
||||||
|
status: number,
|
||||||
|
data: any,
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This service permit to add some data like tocken and authorisation.. ir automatically get the token if needed and retake it if expired...
|
||||||
|
*/
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class HttpWrapperService {
|
export class HttpWrapperService {
|
||||||
private displayReturn:boolean = false;
|
private displayReturn:boolean = false;
|
||||||
@ -19,6 +64,125 @@ export class HttpWrapperService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addTokenIfNeeded(headerOption:any): any {
|
||||||
|
if(this.session.sessionData !== null) {
|
||||||
|
if(headerOption.authorization === undefined) {
|
||||||
|
headerOption.authorization = `Yota ${ this.session.sessionData.userId }:${ this.session.sessionData.token}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return headerOption;
|
||||||
|
}
|
||||||
|
|
||||||
|
request(properties: HTTPRequest) : Promise<Response> {
|
||||||
|
//uriRest:string, headerOption:any, params:any): Promise<{status:number, data:any}> {
|
||||||
|
console.log(`-------------------------------------------------------\nHTTP-wrapper GET '${ properties.endPoint }'\n\t\tparams=${ JSON.stringify(properties, null, 2)}`);
|
||||||
|
|
||||||
|
let connectionAdresse = this.createRESTCall2({
|
||||||
|
server: properties.server,
|
||||||
|
api: properties.endPoint
|
||||||
|
});
|
||||||
|
let headers: any = {
|
||||||
|
'Accept': properties.accept,
|
||||||
|
'Content-Type': properties.contentType,
|
||||||
|
'authorization': properties.authorization,
|
||||||
|
}
|
||||||
|
console.log(`disble tocken : ${JSON.stringify(properties)} properties.disableTocken=${properties.disableTocken}`);
|
||||||
|
if (properties.disableTocken === undefined || properties.disableTocken === null || properties.disableTocken === true) {
|
||||||
|
headers = this.addTokenIfNeeded(headers);
|
||||||
|
}
|
||||||
|
console.log(`header: ${JSON.stringify(headers)}`);
|
||||||
|
let body = properties.body;
|
||||||
|
if (properties.contentType === HTTPMimeType.JSON) {
|
||||||
|
body = JSON.stringify(properties.body);
|
||||||
|
}
|
||||||
|
const result = fetch(connectionAdresse, {
|
||||||
|
method: properties.requestType,
|
||||||
|
headers,
|
||||||
|
body
|
||||||
|
})
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
requestJson(properties: HTTPRequest) : Promise<ModelResponseHttp> {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
this.request(properties).then((response: Response) => {
|
||||||
|
if(response.status >= 200 && response.status <= 299) {
|
||||||
|
const contentType = response.headers.get('Content-Type');
|
||||||
|
if (contentType === HTTPMimeType.JSON) {
|
||||||
|
response.json().then((value:any) => {
|
||||||
|
//console.log(`REICEIVE ==> ${response.status}=${ JSON.stringify(value, null, 2)}`);
|
||||||
|
resolve({ status:response.status, data:value });
|
||||||
|
}).catch((reason:any)=> {
|
||||||
|
reject({ status:999, data:reason });
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.error(`content Type is not Json: ${contentType}`)
|
||||||
|
reject({ status:999, data:`content Type is not Json: ${contentType}` });
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.error(`wring correct status: ${response.status}`)
|
||||||
|
reject({ status:900, data: response });
|
||||||
|
}
|
||||||
|
}).catch((error: any) => {
|
||||||
|
reject({ status:error.status, data:error.error });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
requestImage(properties: HTTPRequest) : Promise<ModelResponseHttp> {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
this.request(properties).then((response: Response) => {
|
||||||
|
if(response.status >= 200 && response.status <= 299) {
|
||||||
|
const contentType = response.headers.get('Content-Type');
|
||||||
|
//console.log(`REICEIVE ==> ${response.status}`);
|
||||||
|
resolve({ status:900, data: response });
|
||||||
|
/*
|
||||||
|
resolve({ status:response.status, data:value });
|
||||||
|
}).catch((reason:any)=> {
|
||||||
|
reject({ status:999, data:reason });
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.error(`content Type is not Json: ${contentType}`)
|
||||||
|
reject({ status:999, data:`content Type is not Json: ${contentType}` });
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
} else {
|
||||||
|
console.error(`wring correct status: ${response.status}`)
|
||||||
|
resolve({ status:900, data: response });
|
||||||
|
}
|
||||||
|
}).catch((error: any) => {
|
||||||
|
reject({ status:error.status, data:error.error });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
createRESTCall2({ api, server, inputOptions }: { server?: string; api: string; inputOptions?: any[]; }) {
|
||||||
|
let basePage = environment.apiUrl;
|
||||||
|
if (server === "karauth") {
|
||||||
|
basePage = environment.apiOAuthUrl;
|
||||||
|
}
|
||||||
|
let addressServerRest = `${basePage }/`;
|
||||||
|
let options = inputOptions;
|
||||||
|
if(options === undefined) {
|
||||||
|
options = [];
|
||||||
|
}
|
||||||
|
let out = addressServerRest + api;
|
||||||
|
let first = true;
|
||||||
|
for(let iii = 0; iii < options.length; iii++) {
|
||||||
|
if(first === false) {
|
||||||
|
out = `${out }&`;
|
||||||
|
} else {
|
||||||
|
out = `${out }?`;
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
|
out = out + options[iii];
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
createRESTCall(api: string, inputOptions?: any) {
|
createRESTCall(api: string, inputOptions?: any) {
|
||||||
let basePage = environment.apiUrl;
|
let basePage = environment.apiUrl;
|
||||||
let addressServerRest = `${basePage }/`;
|
let addressServerRest = `${basePage }/`;
|
||||||
@ -40,53 +204,35 @@ export class HttpWrapperService {
|
|||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
addTokenIfNeeded(headerOption:any): any {
|
|
||||||
if(this.session.sessionData !== null) {
|
|
||||||
if(headerOption.authorization === undefined) {
|
|
||||||
headerOption.authorization = `Yota ${ this.session.sessionData.userId }:${ this.session.sessionData.token}`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return headerOption;
|
|
||||||
}
|
|
||||||
|
|
||||||
get(uriRest:string, headerOption:any, params:any) {
|
get(uriRest:string, headerOption:any, params:any): Promise<{status:number, data:any}> {
|
||||||
this.addTokenIfNeeded(headerOption);
|
console.log(`-------------------------------------------------------\nHTTP-wrapper GET '${ uriRest }'\n\t\theaderOption=${ JSON.stringify(headerOption, null, 2)}\n\t\tparams=${ JSON.stringify(params, null, 2)}`);
|
||||||
let connectionAdresse = this.createRESTCall(uriRest, {});
|
let connectionAdresse = this.createRESTCall(uriRest, {});
|
||||||
let config = {
|
const headers = this.addTokenIfNeeded(headerOption);
|
||||||
params: params,
|
let self = this;
|
||||||
headers: new HttpHeaders(headerOption)
|
|
||||||
};
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
if(this.displayReturn === true) {
|
fetch(connectionAdresse, {
|
||||||
console.log(`call GET ${ connectionAdresse } params=${ JSON.stringify(params, null, 2)}`);
|
method: "GET",
|
||||||
}
|
headers,
|
||||||
let request = this.http.get<any>(connectionAdresse, config);
|
}).then((response: Response) => {
|
||||||
let self = this;
|
if(response.status === 200) {
|
||||||
request.subscribe((res: any) => {
|
response.json().then((value:any) => {
|
||||||
if(self.displayReturn === true) {
|
//console.log(`REICEIVE ==> ${response.status}=${ JSON.stringify(value, null, 2)}`);
|
||||||
console.log(`!! data ${ JSON.stringify(res, null, 2)}`);
|
resolve({ status:response.status, data:response.body });
|
||||||
}
|
}).catch((reason:any)=> {
|
||||||
if(res) {
|
reject({ status:999, data:reason });
|
||||||
if(res.httpCode) {
|
});
|
||||||
resolve({ status:res.httpCode, data:res });
|
|
||||||
} else {
|
|
||||||
resolve({ status:200, data:res });
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
resolve({ status:200, data:'' });
|
resolve({ status:900, data:'' });
|
||||||
}
|
|
||||||
},
|
|
||||||
(error) => {
|
|
||||||
if(self.displayReturn === true) {
|
|
||||||
console.log(`an error occured status: ${ error.status}`);
|
|
||||||
console.log(`answer: ${ JSON.stringify(error, null, 2)}`);
|
|
||||||
}
|
}
|
||||||
|
}).catch((error: any) => {
|
||||||
reject({ status:error.status, data:error.error });
|
reject({ status:error.status, data:error.error });
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
post(uriRest:string, headerOption:any, data:any, progress:any = null) {
|
post(uriRest:string, headerOption:any, data:any, progress:any = null) {
|
||||||
|
console.log(`-------------------------------------------------------\nHTTP-wrapper POST '${ uriRest }'\n\t\theaderOption=${ JSON.stringify(headerOption, null, 2)}\n\t\tdata=${ JSON.stringify(data, null, 2)}`);
|
||||||
this.addTokenIfNeeded(headerOption);
|
this.addTokenIfNeeded(headerOption);
|
||||||
let connectionAdresse = this.createRESTCall(uriRest, {});
|
let connectionAdresse = this.createRESTCall(uriRest, {});
|
||||||
|
|
||||||
@ -160,6 +306,7 @@ export class HttpWrapperService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
put(uriRest:string, headerOption:any, data:any) {
|
put(uriRest:string, headerOption:any, data:any) {
|
||||||
|
console.log(`-------------------------------------------------------\nHTTP-wrapper PUT '${ uriRest }'\n\t\theaderOption=${ JSON.stringify(headerOption, null, 2)}\n\t\tdata=${ JSON.stringify(data, null, 2)}`);
|
||||||
this.addTokenIfNeeded(headerOption);
|
this.addTokenIfNeeded(headerOption);
|
||||||
let connectionAdresse = this.createRESTCall(uriRest, {});
|
let connectionAdresse = this.createRESTCall(uriRest, {});
|
||||||
const httpOption = {
|
const httpOption = {
|
||||||
@ -424,42 +571,15 @@ export class HttpWrapperService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
public upload(base:string, id:number, file:File): any {
|
|
||||||
data, userId) {
|
|
||||||
}
|
|
||||||
let uploadURL = `${this.SERVER_URL}/auth/${userId}/avatar`;
|
|
||||||
|
|
||||||
return this.http.post<any>(uploadURL, data, {
|
|
||||||
reportProgress: true,
|
|
||||||
observe: 'events'
|
|
||||||
}).pipe(map((event) => {
|
|
||||||
|
|
||||||
switch (event.type) {
|
|
||||||
|
|
||||||
case HttpEventType.UploadProgress:
|
|
||||||
const progress = Math.round(100 * event.loaded / event.total);
|
|
||||||
return { status: 'progress', message: progress };
|
|
||||||
|
|
||||||
case HttpEventType.Response:
|
|
||||||
return event.body;
|
|
||||||
default:
|
|
||||||
return `Unhandled event: ${event.type}`;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
// Complex wrapper to simplify interaction:
|
// Complex wrapper to simplify interaction:
|
||||||
getSpecific(base:string, id:number = null, subElement:string = '', select:string[] = []):any {
|
getSpecific(base:string, id:number = null, subElement:string = '', select:string[] = []):any {
|
||||||
console.log(`Get All data from ${ base}`);
|
//console.log(`Get All data from ${ base}`);
|
||||||
const httpOption = { 'Content-Type': 'application/json' };
|
|
||||||
let url = base;
|
let url = base;
|
||||||
if(id !== null) {
|
if(id !== null) {
|
||||||
url = `${url }/${ id}`;
|
url = `${url}/${id}`;
|
||||||
}
|
}
|
||||||
if(subElement !== '') {
|
if(subElement !== '') {
|
||||||
url = `${url }/${ subElement}`;
|
url = `${url}/${subElement}`;
|
||||||
}
|
}
|
||||||
if(select.length !== 0) {
|
if(select.length !== 0) {
|
||||||
let newValue = '';
|
let newValue = '';
|
||||||
@ -471,18 +591,23 @@ export class HttpWrapperService {
|
|||||||
}
|
}
|
||||||
url = `${url}?${newValue}`;
|
url = `${url}?${newValue}`;
|
||||||
}
|
}
|
||||||
// console.log("call GET " + url);
|
//console.log("call GET " + url);
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.get(url, httpOption, {})
|
this.requestJson({
|
||||||
.then((response: any) => {
|
endPoint: url,
|
||||||
// console.log("URL: " + url + "\nRespond(" + response.status + "): " + JSON.stringify(response.data, null, 2));
|
requestType: HTTPRequestModel.GET,
|
||||||
|
accept: HTTPMimeType.JSON,
|
||||||
|
contentType: HTTPMimeType.JSON,
|
||||||
|
})
|
||||||
|
.then((response: ModelResponseHttp) => {
|
||||||
|
//console.log("URL: " + url + "\nRespond(" + response.status + "): " + JSON.stringify(response.data, null, 2));
|
||||||
if(response.status === 200) {
|
if(response.status === 200) {
|
||||||
resolve(response.data);
|
resolve(response.data);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
reject('An error occured');
|
reject('An error occured');
|
||||||
}, (response: any) => {
|
}, (response: ModelResponseHttp) => {
|
||||||
if(typeof response.data === 'undefined') {
|
if(typeof response.data === 'undefined') {
|
||||||
reject('return ERROR undefined');
|
reject('return ERROR undefined');
|
||||||
} else {
|
} else {
|
||||||
|
@ -6,8 +6,7 @@
|
|||||||
|
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
|
|
||||||
import { HttpOAuthWrapperService } from './http-oauth-wrapper';
|
import { HTTPMimeType, HTTPRequestModel, HttpWrapperService, ModelResponseHttp } from './http-wrapper';
|
||||||
import { HttpWrapperService } from './http-wrapper';
|
|
||||||
|
|
||||||
interface MessageLogIn {
|
interface MessageLogIn {
|
||||||
login: string;
|
login: string;
|
||||||
@ -32,8 +31,7 @@ export class UserService {
|
|||||||
// 0: Not hide password; 1 hide password;
|
// 0: Not hide password; 1 hide password;
|
||||||
private identificationVersion: number = 1;
|
private identificationVersion: number = 1;
|
||||||
|
|
||||||
constructor(private httpOAuth: HttpOAuthWrapperService,
|
constructor(private http: HttpWrapperService) {
|
||||||
private http: HttpWrapperService) {
|
|
||||||
console.log('Start UserService');
|
console.log('Start UserService');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,7 +63,7 @@ export class UserService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getTocken(login : string, password : string) {
|
getTocken(login : string, password : string) : Promise<any> {
|
||||||
console.log(`AuthService.getToken ... '${ login }':'${ password }'`);
|
console.log(`AuthService.getToken ... '${ login }':'${ password }'`);
|
||||||
let currentDate:number = dateFormat(new Date(), 'm-d-Y h:i:s ms');
|
let currentDate:number = dateFormat(new Date(), 'm-d-Y h:i:s ms');
|
||||||
let data:MessageLogIn;
|
let data:MessageLogIn;
|
||||||
@ -82,53 +80,47 @@ export class UserService {
|
|||||||
console.log('AuthService.login ... Wrong method ...');
|
console.log('AuthService.login ... Wrong method ...');
|
||||||
}
|
}
|
||||||
|
|
||||||
const httpOption = { 'Content-Type': 'application/json' };
|
|
||||||
console.log(`call users/connect data=${ JSON.stringify(data, null, 2)}`);
|
console.log(`call users/connect data=${ JSON.stringify(data, null, 2)}`);
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.httpOAuth.post('users/get_token', httpOption, data)
|
this.http.requestJson({
|
||||||
.then((response: any) => {
|
server: 'karauth',
|
||||||
console.log(`response status=${ response.status}`);
|
endPoint: 'users/get_token',
|
||||||
if(response.status >= 200 && response.status <= 299) {
|
requestType: HTTPRequestModel.POST,
|
||||||
console.log(`Data token: id=${ response.data.id}`);
|
accept: HTTPMimeType.JSON,
|
||||||
console.log(`Data token: userId=${ response.data.userId}`);
|
contentType: HTTPMimeType.JSON,
|
||||||
console.log(`Data token: token=${ response.data.token}`);
|
body: data,
|
||||||
console.log(`Data token: createTime=${ response.data.createTime}`);
|
disableTocken: true,
|
||||||
console.log(`Data token: endValidityTime=${ response.data.endValidityTime}`);
|
}).then((response: ModelResponseHttp) =>{
|
||||||
resolve(response.data);
|
console.log(`Data token: id=${ response.data.id}`);
|
||||||
return;
|
console.log(`Data token: userId=${ response.data.userId}`);
|
||||||
}
|
console.log(`Data token: token=${ response.data.token}`);
|
||||||
reject('An error occured');
|
console.log(`Data token: createTime=${ response.data.createTime}`);
|
||||||
}, (response: any) => {
|
console.log(`Data token: endValidityTime=${ response.data.endValidityTime}`);
|
||||||
if(typeof response.data === 'undefined') {
|
resolve(response.data);
|
||||||
reject('return ERROR undefined');
|
}).catch((error:any) => {
|
||||||
} else {
|
reject(`return ERROR ${ JSON.stringify(error, null, 2)}`);
|
||||||
reject(`return ERROR ${ JSON.stringify(response.data, null, 2)}`);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
loginWithToken(userId : string, token : string) {
|
loginWithToken(userId : string, token : string) {
|
||||||
console.log(`AuthService.loginWithToken ... '${ userId }':'${ token }'`);
|
console.log(`AuthService.loginWithToken ... '${ userId }':'${ token }'`);
|
||||||
let headers = {
|
|
||||||
authorization: `Yota ${userId}:${token}`
|
|
||||||
};
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.http.get('users/me', headers, {})
|
this.http.requestJson({
|
||||||
.then((response: any) => {
|
//server: 'karauth',
|
||||||
if(response.status === 200) {
|
endPoint: 'users/me',
|
||||||
resolve(response.data);
|
requestType: HTTPRequestModel.GET,
|
||||||
return;
|
accept: HTTPMimeType.JSON,
|
||||||
}
|
contentType: HTTPMimeType.JSON,
|
||||||
reject('An error occured');
|
authorization: `Yota ${userId}:${token}`, // special case, the token is set after this request...
|
||||||
}, (response: any) => {
|
}).then((response: ModelResponseHttp) =>{
|
||||||
if(response.data === undefined) {
|
// TODO: check type ...
|
||||||
reject('return ERROR undefined');
|
console.log(`loginWithToken : get some data to check: ${JSON.stringify(response.data)}`)
|
||||||
} else {
|
resolve(response.data);
|
||||||
reject(`return ERROR ${ JSON.stringify(response.data, null, 2)}`);
|
}).catch((error:any) => {
|
||||||
}
|
reject(`return ERROR ${ JSON.stringify(error, null, 2)}`);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
console.log("AuthService.login ... '" + _login + "':'" + _password + "'");
|
console.log("AuthService.login ... '" + _login + "':'" + _password + "'");
|
||||||
@ -179,7 +171,6 @@ export class UserService {
|
|||||||
email: email,
|
email: email,
|
||||||
password: password
|
password: password
|
||||||
};
|
};
|
||||||
const httpOption = { 'Content-Type': 'application/json' };
|
|
||||||
console.log(`call users data=${ JSON.stringify(data, null, 2)}`);
|
console.log(`call users data=${ JSON.stringify(data, null, 2)}`);
|
||||||
|
|
||||||
if(this.identificationVersion === 1) {
|
if(this.identificationVersion === 1) {
|
||||||
@ -187,20 +178,21 @@ export class UserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.httpOAuth.post('users', httpOption, data)
|
this.http.requestJson({
|
||||||
.then((response: any) => {
|
server: 'karauth',
|
||||||
if(response.status === 200) {
|
endPoint: 'users',
|
||||||
resolve(response.data);
|
requestType: HTTPRequestModel.POST,
|
||||||
}
|
accept: HTTPMimeType.JSON,
|
||||||
reject('An error occured');
|
contentType: HTTPMimeType.JSON,
|
||||||
}, (response: any) => {
|
body: data,
|
||||||
if(response.data === undefined) {
|
}).then((response: ModelResponseHttp) =>{
|
||||||
reject('return ERROR undefined');
|
// TODO: check type ...
|
||||||
} else {
|
console.log(`createSha : get some data to check: ${JSON.stringify(response.data)}`)
|
||||||
reject(`return ERROR ${ JSON.stringify(response.data, null, 2)}`);
|
resolve(response.data);
|
||||||
}
|
}).catch((error:any) => {
|
||||||
|
reject(`return ERROR ${ JSON.stringify(error, null, 2)}`);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
isAuthenticated():boolean {
|
isAuthenticated():boolean {
|
||||||
@ -224,14 +216,22 @@ export class UserService {
|
|||||||
login: login
|
login: login
|
||||||
};
|
};
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.httpOAuth.get('users/check_login', {}, params).then(
|
this.http.requestJson({
|
||||||
(res: Response) => {
|
server: 'karauth',
|
||||||
resolve('valid');
|
endPoint: 'users/check_login',
|
||||||
},
|
requestType: HTTPRequestModel.GET,
|
||||||
(error) => {
|
accept: HTTPMimeType.JSON,
|
||||||
reject(error.status);
|
contentType: HTTPMimeType.JSON,
|
||||||
|
params,
|
||||||
|
}).then((response: ModelResponseHttp) =>{
|
||||||
|
// TODO: check type ...
|
||||||
|
console.log(`createSha : get some data to check: ${JSON.stringify(response.data)}`)
|
||||||
|
resolve(response.data);
|
||||||
|
}).catch((error:any) => {
|
||||||
|
reject(`return ERROR ${ JSON.stringify(error, null, 2)}`);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
checkEMail(email: string) {
|
checkEMail(email: string) {
|
||||||
@ -239,14 +239,21 @@ export class UserService {
|
|||||||
email: email
|
email: email
|
||||||
};
|
};
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.httpOAuth.get('users/check_email', {}, params).then(
|
this.http.requestJson({
|
||||||
(res: Response) => {
|
server: 'karauth',
|
||||||
resolve('valid');
|
endPoint: 'users/check_email',
|
||||||
},
|
requestType: HTTPRequestModel.GET,
|
||||||
(error) => {
|
accept: HTTPMimeType.JSON,
|
||||||
reject(error.status);
|
contentType: HTTPMimeType.JSON,
|
||||||
|
params,
|
||||||
|
}).then((response: ModelResponseHttp) =>{
|
||||||
|
// TODO: check type ...
|
||||||
|
console.log(`createSha : get some data to check: ${JSON.stringify(response.data)}`)
|
||||||
|
resolve(response.data);
|
||||||
|
}).catch((error:any) => {
|
||||||
|
reject(`return ERROR ${ JSON.stringify(error, null, 2)}`);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user