zeg1jeux/lib/js/farfetched.js

314 lines
6.0 KiB
JavaScript

const nodes = {
gchange: [
'http://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)
})