Skip to content
This repository was archived by the owner on Nov 10, 2021. It is now read-only.

Commit e44324e

Browse files
Merge branch 'master' into master
2 parents 1afcee0 + 41fe20f commit e44324e

File tree

6 files changed

+107
-65
lines changed

6 files changed

+107
-65
lines changed

.serverless/cloudformation-template-update-stack.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@
146146
"S3Bucket": {
147147
"Ref": "ServerlessDeploymentBucket"
148148
},
149-
"S3Key": "serverless/hicetnunc-apiv2/dev/1616132797292-2021-03-19T05:46:37.292Z/hicetnunc-apiv2.zip"
149+
"S3Key": "serverless/hicetnunc-apiv2/dev/1616180496084-2021-03-19T19:01:36.084Z/hicetnunc-apiv2.zip"
150150
},
151151
"FunctionName": "hicetnunc-apiv2-dev-handler",
152152
"Handler": "index.handler",
@@ -170,14 +170,14 @@
170170
"HandlerLogGroup"
171171
]
172172
},
173-
"HandlerLambdaVersionl43NXxTCsqpysRMWyXSvU0lsarIv6k41EVMGBVAAAI": {
173+
"HandlerLambdaVersionxKXiD47XxbV8a0CrQwjITk3MONXyb5JqjEgIyp7EM": {
174174
"Type": "AWS::Lambda::Version",
175175
"DeletionPolicy": "Retain",
176176
"Properties": {
177177
"FunctionName": {
178178
"Ref": "HandlerLambdaFunction"
179179
},
180-
"CodeSha256": "yP30UhwdABdpM1UtDvnZ21GW5zg9jII05figW7uS74k="
180+
"CodeSha256": "nF8jqb9R6Jwn5BvBH8TIt8EhoKsJFfZyPkF8eSd4WH4="
181181
}
182182
},
183183
"ApiGatewayRestApi": {
@@ -389,7 +389,7 @@
389389
"MethodResponses": []
390390
}
391391
},
392-
"ApiGatewayDeployment1616132791720": {
392+
"ApiGatewayDeployment1616180485677": {
393393
"Type": "AWS::ApiGateway::Deployment",
394394
"Properties": {
395395
"RestApiId": {
@@ -451,7 +451,7 @@
451451
"HandlerLambdaFunctionQualifiedArn": {
452452
"Description": "Current Lambda function version",
453453
"Value": {
454-
"Ref": "HandlerLambdaVersionl43NXxTCsqpysRMWyXSvU0lsarIv6k41EVMGBVAAAI"
454+
"Ref": "HandlerLambdaVersionxKXiD47XxbV8a0CrQwjITk3MONXyb5JqjEgIyp7EM"
455455
}
456456
},
457457
"ServiceEndpoint": {

.serverless/hicetnunc-apiv2.zip

93 Bytes
Binary file not shown.

.serverless/serverless-state.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@
163163
"S3Bucket": {
164164
"Ref": "ServerlessDeploymentBucket"
165165
},
166-
"S3Key": "serverless/hicetnunc-apiv2/dev/1616132797292-2021-03-19T05:46:37.292Z/hicetnunc-apiv2.zip"
166+
"S3Key": "serverless/hicetnunc-apiv2/dev/1616180496084-2021-03-19T19:01:36.084Z/hicetnunc-apiv2.zip"
167167
},
168168
"FunctionName": "hicetnunc-apiv2-dev-handler",
169169
"Handler": "index.handler",
@@ -187,14 +187,14 @@
187187
"HandlerLogGroup"
188188
]
189189
},
190-
"HandlerLambdaVersionl43NXxTCsqpysRMWyXSvU0lsarIv6k41EVMGBVAAAI": {
190+
"HandlerLambdaVersionxKXiD47XxbV8a0CrQwjITk3MONXyb5JqjEgIyp7EM": {
191191
"Type": "AWS::Lambda::Version",
192192
"DeletionPolicy": "Retain",
193193
"Properties": {
194194
"FunctionName": {
195195
"Ref": "HandlerLambdaFunction"
196196
},
197-
"CodeSha256": "yP30UhwdABdpM1UtDvnZ21GW5zg9jII05figW7uS74k="
197+
"CodeSha256": "nF8jqb9R6Jwn5BvBH8TIt8EhoKsJFfZyPkF8eSd4WH4="
198198
}
199199
},
200200
"ApiGatewayRestApi": {
@@ -406,7 +406,7 @@
406406
"MethodResponses": []
407407
}
408408
},
409-
"ApiGatewayDeployment1616132791720": {
409+
"ApiGatewayDeployment1616180485677": {
410410
"Type": "AWS::ApiGateway::Deployment",
411411
"Properties": {
412412
"RestApiId": {
@@ -468,7 +468,7 @@
468468
"HandlerLambdaFunctionQualifiedArn": {
469469
"Description": "Current Lambda function version",
470470
"Value": {
471-
"Ref": "HandlerLambdaVersionl43NXxTCsqpysRMWyXSvU0lsarIv6k41EVMGBVAAAI"
471+
"Ref": "HandlerLambdaVersionxKXiD47XxbV8a0CrQwjITk3MONXyb5JqjEgIyp7EM"
472472
}
473473
},
474474
"ServiceEndpoint": {
@@ -627,7 +627,7 @@
627627
"memory": 1024,
628628
"runtime": "nodejs12.x",
629629
"vpc": {},
630-
"versionLogicalId": "HandlerLambdaVersionl43NXxTCsqpysRMWyXSvU0lsarIv6k41EVMGBVAAAI"
630+
"versionLogicalId": "HandlerLambdaVersionxKXiD47XxbV8a0CrQwjITk3MONXyb5JqjEgIyp7EM"
631631
}
632632
},
633633
"configValidationMode": "warn",
@@ -2557,7 +2557,7 @@
25572557
"node_modules/@types/aws-lambda/trigger/sqs.d.ts"
25582558
],
25592559
"artifact": "/home/crzy/Desktop/programs/lambdas-aws/api-final/new2/hicetnunc-api/.serverless/hicetnunc-apiv2.zip",
2560-
"artifactDirectoryName": "serverless/hicetnunc-apiv2/dev/1616132797292-2021-03-19T05:46:37.292Z"
2560+
"artifactDirectoryName": "serverless/hicetnunc-apiv2/dev/1616180496084-2021-03-19T19:01:36.084Z"
25612561
},
25622562
"plugins": {
25632563
"$ref": "$[\"service\"][\"plugins\"]"
@@ -2574,7 +2574,7 @@
25742574
"artifact": "/home/crzy/Desktop/programs/lambdas-aws/api-final/new2/hicetnunc-api/.serverless/hicetnunc-apiv2.zip"
25752575
},
25762576
"package": {
2577-
"artifactDirectoryName": "serverless/hicetnunc-apiv2/dev/1616132797292-2021-03-19T05:46:37.292Z",
2577+
"artifactDirectoryName": "serverless/hicetnunc-apiv2/dev/1616180496084-2021-03-19T19:01:36.084Z",
25782578
"artifact": "hicetnunc-apiv2.zip"
25792579
}
25802580
}

conseilUtil.js

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,22 @@ const tezosNode = ''
1313

1414
const mainnet = require('./config').networkConfig
1515

16+
17+
const hDAOFeed = async () => {
18+
19+
let hDAOQuery = conseiljs.ConseilQueryBuilder.blankQuery();
20+
hDAOQuery = conseiljs.ConseilQueryBuilder.addFields(hDAOQuery, 'key', 'value');
21+
hDAOQuery = conseiljs.ConseilQueryBuilder.addPredicate(hDAOQuery, 'big_map_id', conseiljs.ConseilOperator.EQ, [mainnet.curationsPtr])
22+
hDAOQuery = conseiljs.ConseilQueryBuilder.setLimit(hDAOQuery, 10_000)
23+
24+
let hDAOResult = await conseiljs.TezosConseilClient.getTezosEntityData({ url: conseilServer, apiKey: conseilApiKey, network: 'mainnet' }, 'mainnet', 'big_map_contents', hDAOQuery);
25+
return hDAOResult.map(e => {
26+
return {
27+
token_id : parseInt(e.key),
28+
hDAO_balance : parseInt((e.value).split(' ')[1])
29+
}
30+
})
31+
}
1632
/**
1733
* Returns a list of nft token ids and amounts that a given address owns.
1834
*
@@ -212,11 +228,11 @@ const getArtisticUniverse = async (max_time) => {
212228
let mintOperationQuery = conseiljs.ConseilQueryBuilder.blankQuery();
213229
mintOperationQuery = conseiljs.ConseilQueryBuilder.addFields(mintOperationQuery, 'operation_group_hash');
214230
mintOperationQuery = conseiljs.ConseilQueryBuilder.addPredicate(mintOperationQuery, 'kind', conseiljs.ConseilOperator.EQ, ['transaction'])
215-
mintOperationQuery = conseiljs.ConseilQueryBuilder.addPredicate(mintOperationQuery, 'timestamp', conseiljs.ConseilOperator.BETWEEN, [1612240919000, max_time]) // after 2021 Feb 1
231+
mintOperationQuery = conseiljs.ConseilQueryBuilder.addPredicate(mintOperationQuery, 'timestamp', conseiljs.ConseilOperator.AFTER, [1612240919000]) // 2021 Feb 1
216232
mintOperationQuery = conseiljs.ConseilQueryBuilder.addPredicate(mintOperationQuery, 'status', conseiljs.ConseilOperator.EQ, ['applied'])
217233
mintOperationQuery = conseiljs.ConseilQueryBuilder.addPredicate(mintOperationQuery, 'destination', conseiljs.ConseilOperator.EQ, [mainnet.protocol])
218234
mintOperationQuery = conseiljs.ConseilQueryBuilder.addPredicate(mintOperationQuery, 'parameters_entrypoints', conseiljs.ConseilOperator.EQ, ['mint_OBJKT'])
219-
mintOperationQuery = conseiljs.ConseilQueryBuilder.setLimit(mintOperationQuery, 20_000)
235+
mintOperationQuery = conseiljs.ConseilQueryBuilder.setLimit(mintOperationQuery, 30_000)
220236

221237
const mintOperationResult = await conseiljs.TezosConseilClient.getTezosEntityData(
222238
{ url: conseilServer, apiKey: conseilApiKey, network: 'mainnet' },
@@ -358,5 +374,6 @@ module.exports = {
358374
gethDaoBalanceForAddress,
359375
getArtisticOutputForAddress,
360376
getObjectById,
361-
getArtisticUniverse
377+
getArtisticUniverse,
378+
hDAOFeed
362379
}

index.js

Lines changed: 70 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ const express = require('express')
44
const cors = require('cors')
55
const _ = require('lodash')
66
const conseilUtil = require('./conseilUtil')
7-
const cls = require('cloud-local-storage')
7+
const { random } = require('lodash')
88
require('dotenv').config()
99

10-
const reducer = (accumulator, currentValue) => accumulator + currentValue;
10+
const reducer = (accumulator, currentValue) => parseInt(accumulator) + parseInt(currentValue)
1111

1212
const getIpfsHash = async (ipfsHash) => {
1313

@@ -35,16 +35,16 @@ const getTokenHoldersArr = async (arr) => {
3535
return await arr.map(async e => await axios.get('https://api.better-call.dev/v1/contract/mainnet/KT1RJ6PbjHpwc3M5rw5s2Nbmefwbuwbdxton/tokens/holders?token_id=' + e).then(res => res.data))
3636
/* await axios.get('https://api.better-call.dev/v1/contract/mainnet/KT1RJ6PbjHpwc3M5rw5s2Nbmefwbuwbdxton/tokens/holders?token_id=' + arr[0]).then(res => console.log(res.data))
3737
*//* var result = arr.map(async e => {
38-
return await axios.get('https://api.better-call.dev/v1/contract/mainnet/KT1RJ6PbjHpwc3M5rw5s2Nbmefwbuwbdxton/tokens/holders?token_id=' + e).then(res => res.data)
39-
})
38+
return await axios.get('https://api.better-call.dev/v1/contract/mainnet/KT1RJ6PbjHpwc3M5rw5s2Nbmefwbuwbdxton/tokens/holders?token_id=' + e).then(res => res.data)
39+
})
4040
41-
console.log(result) */
41+
console.log(result) */
4242
}
4343

4444
const owners = async (obj) => {
4545
var owners = await axios.get('https://api.better-call.dev/v1/contract/mainnet/KT1RJ6PbjHpwc3M5rw5s2Nbmefwbuwbdxton/tokens/holders?token_id=' + obj.token_id).then(res => res.data)
4646
var values_arr = (_.values(owners))
47-
console.log(owners)
47+
obj.total_amount = (values_arr.map(e => parseInt(e))).length > 0 ? values_arr.filter(e => parseInt(e) > 0).reduce(reducer) : 0
4848
obj.owners = owners
4949
console.log(obj)
5050
//obj.total_amount = (values_arr.map(e => parseInt(e))).reduce(reducer)
@@ -55,7 +55,8 @@ const totalAmountIntegral = async (obj) => {
5555
var owners = await axios.get('https://api.better-call.dev/v1/contract/mainnet/KT1RJ6PbjHpwc3M5rw5s2Nbmefwbuwbdxton/tokens/holders?token_id=' + obj.token_id).then(res => res.data)
5656
console.log(owners)
5757
var values_arr = (_.values(owners))
58-
obj.total_amount = (values_arr.map(e => parseInt(e))).reduce(reducer)
58+
obj.total_amount = (values_arr.map(e => parseInt(e))).length > 0 ? (values_arr.filter(e => parseInt(e))) : 0
59+
5960
obj.owners = owners
6061
return obj
6162
}
@@ -71,7 +72,7 @@ const objktOwners = async (arr) => {
7172

7273

7374
const getObjktLedger = async () => await axios.get('https://better-call.dev/v1/bigmap/mainnet/511/keys?size=6500').then(res => res.data.map(e => ({ amount: parseInt(e.data.value.value), tz: e.data.key.children[0].value, tk_id: parseInt(e.data.key.children[1].value) })))
74-
const gethDAOLedger = async () => await axios.get('https://api.better-call.dev/v1/bigmap/mainnet/519/keys?size=4000').then(res => res.data.map(e => {
75+
const gethDAOLedger = async (counter) => await axios.get('https://api.better-call.dev/v1/bigmap/mainnet/519/keys?size=10&offset=' + counter * 10).then(res => res.data.map(e => {
7576
return { token_id: parseInt(e.data.key.value), hDAO_balance: parseInt(e.data.value.children[0].value) }
7677
}))
7778

@@ -134,14 +135,31 @@ const customFloor = function (value, roundTo) {
134135

135136
const ONE_MINUTE_MILLIS = 60 * 1000
136137

138+
const randomFeed = async (counter, res) => {
139+
var feed = await conseilUtil.getArtisticUniverse(0)
140+
feed = offset(_.shuffle(feed), counter)
141+
feed = await feed.map(async e => {
142+
e.token_info = await getIpfsHash(e.ipfsHash)
143+
e.token_id = parseInt(e.objectId)
144+
console.log(e)
145+
return e
146+
})
147+
var promise = Promise.all(feed.map(e => e))
148+
promise.then(async (results) => {
149+
var aux_arr = results.map(e => e)
150+
//res.set('Cache-Control', `public, max-age=${cache_time}`)
151+
console.log(aux_arr)
152+
res.json({ result: aux_arr })
153+
})
154+
}
137155

138-
const getFeed = async (counter, max_time, res) => {
139-
140-
const now_time = Date.now()
141-
const immutable = (typeof max_time !== 'undefined') && (max_time < now_time)
142-
max_time = (typeof max_time !== 'undefined') ? max_time : customFloor(now_time, ONE_MINUTE_MILLIS)
156+
const getFeed = async (counter, res) => {
143157

144-
var arr = await conseilUtil.getArtisticUniverse(max_time)
158+
/* const now_time = Date.now()
159+
const immutable = (typeof max_time !== 'undefined') && (max_time < now_time)
160+
max_time = (typeof max_time !== 'undefined') ? max_time : customFloor(now_time, ONE_MINUTE_MILLIS)
161+
*/
162+
var arr = await conseilUtil.getArtisticUniverse(0)
145163

146164
var feed = offset(desc(arr), counter)
147165
console.log(feed)
@@ -152,26 +170,25 @@ const getFeed = async (counter, max_time, res) => {
152170
return e
153171
})
154172
//console.log(feed)
155-
var cache_time
156-
if (immutable) {
157-
cache_time = 60 * 10
158-
}
159-
else {
160-
cache_time = (int)(((max_time + ONE_MINUTE_MILLIS) - now_time) / 1000)
161-
}
173+
/* var cache_time
174+
if (immutable) {
175+
cache_time = 60 * 10
176+
}
177+
else {
178+
cache_time = (int)(((max_time + ONE_MINUTE_MILLIS) - now_time) / 1000)
179+
} */
162180
var promise = Promise.all(feed.map(e => e))
163181
promise.then(async (results) => {
164182
var aux_arr = results.map(e => e)
165183

166-
res.set('Cache-Control', `public, max-age=${cache_time}`)
184+
//res.set('Cache-Control', `public, max-age=${cache_time}`)
167185

168186
console.log(aux_arr)
169187
res.json({ result: aux_arr })
170188
})
171189
}
172-
//getFeed(1)
190+
173191
const filterObjkts = (arr, id_arr) => _.filter(arr, { token_id: tk.id })
174-
//console.log(_.find(ledger, { tz : 'KT1Hkg5qeNhfwpKW4fXvq7HGZB9z2EnmCCA9'}))
175192

176193
const getTzLedger = async (tz, res) => {
177194
/* var ledger = desc(await getObjktLedger())
@@ -247,13 +264,16 @@ const mergehDAO = async (obj) => {
247264
}
248265

249266
const hDAOFeed = async (counter, res) => {
250-
var hDAO = await gethDAOLedger()
251-
var arr = _.orderBy(hDAO, ['hDAO_balance'], ['desc'])
252-
var objkts = await arr.map(async e => await mergehDAO(e))
267+
268+
var hDAO = await conseilUtil.hDAOFeed()
269+
var set = _.orderBy(hDAO, ['hDAO_balance'], ['desc'])
270+
var objkts = await (offset(set, 0)).map(async e => await mergehDAO(e))
271+
253272
var promise = Promise.all(objkts.map(e => e))
254273
promise.then(results => {
255274
var result = results.map(e => e)
256-
res.json({ result: offset(result, counter) })
275+
console.log(result)
276+
res.json({ result: result })
257277
}).catch(e => {
258278
res.status(500).json({ error: 'downstream API failure' })
259279
})
@@ -263,7 +283,7 @@ const hDAOFeed = async (counter, res) => {
263283
//testSwaps()
264284
//getFeed(0)
265285
//getTzLedger('tz1UBZUkXpKGhYsP5KtzDNqLLchwF4uHrGjw')
266-
//getObjktById(6246)
286+
//getObjktById(5965)
267287
//const test2 = async () => console.log(await getObjktLedger())
268288
//test2()
269289

@@ -272,18 +292,25 @@ const app = express()
272292
app.use(express.json())
273293
app.use(cors({ origin: '*' }))
274294

275-
app.get('/feed', async (req, res) => {
276-
var counter = req.query.counter
277-
var max_time = req.query.hasOwnProperty('time') ? customFloor(req.query.time, ONE_MINUTE_MILLIS) : null
278-
const now_time_qt = customFloor(Date.now(), ONE_MINUTE_MILLIS)
279-
if (max_time != null & max_time > now_time_qt) {
280-
max_time = null
281-
}
282-
await getFeed(counter, max_time, res)
295+
app.post('/feed', async (req, res) => {
296+
/*
297+
var counter = req.query.counter
298+
var max_time = req.query.hasOwnProperty('time') ? customFloor(req.query.time, ONE_MINUTE_MILLIS) : null
299+
const now_time_qt = customFloor(Date.now(), ONE_MINUTE_MILLIS)
300+
if (max_time != null & max_time > now_time_qt) {
301+
max_time = null
302+
}
303+
*/
304+
await getFeed(req.body.counter, res)
305+
})
306+
307+
app.post('/random', async (req, res) => {
308+
await randomFeed(parseInt(req.body.counter), res)
283309
})
284310

285311
app.post('/tz', async (req, res) => {
286-
console.log(req.body.tz)
312+
313+
// list of restricted addresses
287314
var list = await axios.get('https://raw.githubusercontent.com/hicetnunc2000/hicetnunc/main/filters/w.json').then(res => res.data)
288315

289316
list.includes(req.body.tz)
@@ -295,6 +322,8 @@ app.post('/tz', async (req, res) => {
295322
})
296323

297324
app.post('/objkt', async (req, res) => {
325+
326+
// list of restricted objkts
298327
var list = await axios.get('https://raw.githubusercontent.com/hicetnunc2000/hicetnunc/main/filters/o.json').then(res => res.data)
299328

300329
list.includes(parseInt(req.body.objkt_id))
@@ -308,13 +337,9 @@ app.post('/hdao', async (req, res) => {
308337
await hDAOFeed(parseInt(req.body.counter), res)
309338
})
310339

340+
const testhdao = async () => await hDAOFeed(parseInt(0))
341+
//testhdao()
342+
311343
app.listen(3001)
312344
//module.exports.handler = serverless(app)
313345

314-
/* const test2 = async () => {
315-
await axios.get('https://raw.githubusercontent.com/hicetnunc2000/hicetnunc/main/filters/o.json').then(res => console.log(res.data))
316-
}
317-
test2() */
318-
//testTkHolder([{'kt' : 2020}, {'kt' : 2021}])
319-
//getFeed(1)
320-
//getObjktById(2000)

0 commit comments

Comments
 (0)