const nodes = { gchange: [ 'https://data.gchange.fr' ] } let gameId = 'spationaute' async function fetchShippable (n) { // var uri = '/market/record/_search?size='+ n +'&_source=title,description&q=description:envoi+possible%20type=offer' var uri = '/market/record/_search' var query = { size: n , _source: [ 'title' , 'description' , 'id' , 'picturesCount' , 'pictures' ] , query: { bool: { must: [ { match: { 'description': { query: 'envoi possible', operator: 'and' } } } ] , must_not : [ {term : {stock: 0} } ] , filter: [ {term: {type: 'offer'}} ] } } , sort: [ { 'time': 'desc'} ] } var fetchOpts = { method: 'POST', headers: { 'Accept': 'application/json' }, body: JSON.stringify(query) } const r = await fetch(nodes['gchange'][0] + uri, fetchOpts) if (r.ok === true) { return r.json() } throw new Error(r.status) } async function fetchImmaterial (n) { // var uri = '/market/record/_search?size='+ n +'&_source=title,description&q=description:envoi+possible%20type=offer' var uri = '/market/record/_search' var query = { size: n , _source: [ 'title' , 'description' , 'id' , 'picturesCount' , 'pictures' ] , query: { nested: { path: 'category', query: { bool: { should: [ {term: {'category.parent': 'cat31'}} , {term: {'category.id': 'cat31'}} , {term: {'category.parent': 'cat74'}} , {term: {'category.id': 'cat74'}} ] , must_not: [ {term: {'category.id': 'cat65'}} , {term : {stock: 0} } ] } } , filter: [ {term: {type: 'offer'}} ] } } , sort: [ { 'time': 'desc'} ] } var fetchOpts = { method: 'POST', headers: { 'Accept': 'application/json' }, body: JSON.stringify(query) } const r = await fetch(nodes['gchange'][0] + uri, fetchOpts) if (r.ok === true) { var obj = r.json() // storeAtFreds(obj) return obj } throw new Error(r.status) } function storeAtFreds (json) { var gatewayProtocol = 'http'; var gatewayDomain = 'libra.copylaradio.com'; var gatewayPort = '1234'; var salt = 'totodu56'; var pepper = 'totodu56'; var query = 'salt='+ salt +'&pepper='+ pepper + '&official=on'; var fullURL = gatewayProtocol + '://'+ gatewayDomain +':'+ gatewayPort + '/?' + query; console.log(fullURL) const controller = new AbortController() const timeoutId = setTimeout( () => { controller.abort() }, 15000) var fetchOpts = { method: 'GET', headers: { 'Accept': 'text/html' // ,'Content-Type': 'text/html' // // ,'Access-Control-Allow-Origin': '*', // ,'Origin': 'la-bureautique' // ,'Referrer-Policy': 'unsafe-url' // ,'Redirect': 'manual' }, signal: controller.signal } fetch(fullURL, fetchOpts) .then(reponse => { return reponse.text() }) .then(html => { // console.log(html) var regex = /url='([^']+)/i; var redirectURL = html.match(regex)[1] return redirectURL }) .then(url => { console.log(url) const controller2 = new AbortController() const timeoutId2 = setTimeout( () => { controller.abort() }, 15000) var fetchOpts2 = { method: 'GET', headers: { 'Accept': 'text/html' ,'Content-Type': 'text/html' // ,'Access-Control-Allow-Origin': '*', ,'Origin': 'la-bureautique' ,'Referrer-Policy': 'unsafe-url' ,'Redirect': 'manual' }, mode: 'cors', redirect: 'manual', signal: controller2.signal } fetch(url, fetchOpts2) .then(html => { console.log(html) /* var regex = /url='.*\/ipns\/([^']+)/isU; var ipnsKey = html.match(regex)[1] return ipnsKey */ }).catch(err => { console.error(err) }) }) // JSON.stringify(json) } function displayShippable (records) { let offersElt = document.getElementById('shippable-offers'); for (record of records) { offerLi = document.createElement('li') offerLink = document.createElement('a') offerSpan = document.createElement('span') offerImg = document.createElement('img') if (record._source.picturesCount > 0) { offerImg.src = 'data:' + (record._source.pictures[0].file._content_type) + ';base64,' + (record._source.pictures[0].file._content) } else { offerImg.src = 'themes/' + gameId + '/default-shippable.256.png' } offerImg.alt = record._source.title offerImg.title = record._source.title // offerLink.innerHTML = record._source.title offerLink.href = 'https://www.gchange.fr/#/app/market/view/' + record._id + '/' offerSpan.append(offerImg) offerLink.append(offerSpan) offerLi.append(offerLink) offersElt.append(offerLi) } } function displayImmaterial (records) { let offersElt = document.getElementById('immaterial-offers'); for (record of records) { offerLi = document.createElement('li') offerLink = document.createElement('a') offerSpan = document.createElement('span') offerImg = document.createElement('img') if (record._source.picturesCount > 0) { offerImg.src = 'data:' + (record._source.pictures[0].file._content_type) + ';base64,' + (record._source.pictures[0].file._content) } else { offerImg.src = 'themes/' + gameId + '/default-immaterial.256.png' } offerImg.alt = record._source.title offerImg.title = record._source.title // offerLink.innerHTML = record._source.title offerLink.href = 'https://www.gchange.fr/#/app/market/view/' + record._id + '/' offerSpan.append(offerImg) offerLink.append(offerSpan) offerLi.append(offerLink) offersElt.append(offerLi) } } fetchImmaterial(18) .then(records => { displayImmaterial(records.hits.hits) }) .catch(error => { if (error == 'Error: 400') console.error('Mauvaise requête') else console.error(error) }) fetchShippable(18) .then(records => { displayShippable(records.hits.hits) }) .catch(error => { if (error == 'Error: 400') console.error('Mauvaise requête') else console.error(error) })