removeddit/src/api/pushshift/index.js

58 lines
1.6 KiB
JavaScript
Raw Normal View History

import { toBase10, toBase36 } from '../../utils'
2018-01-14 13:41:00 +00:00
const postURL = 'https://elastic.pushshift.io/rs/submissions/_search?source='
const commentURL = 'https://elastic.pushshift.io/rc/comments/_search?source='
2018-01-13 17:20:08 +00:00
export const getPost = threadID => {
2018-01-14 19:21:53 +00:00
const elasticQuery = {
query: {
term: {
id: toBase10(threadID)
}
}
2018-01-14 19:21:53 +00:00
}
return window.fetch(postURL + JSON.stringify(elasticQuery))
.then(response => response.json())
.then(response => {
const post = response.hits.hits[0]._source
post.id = toBase36(post.id)
return post
})
.catch(() => { throw new Error('Could not get removed post') })
2018-01-14 19:21:53 +00:00
}
export const getComments = threadID => {
const elasticQuery = {
query: {
match: {
link_id: toBase10(threadID)
}
},
size: 20000,
_source: [
'author', 'body', 'created_utc', 'parent_id', 'score', 'subreddit', 'link_id'
]
}
2018-02-06 03:07:30 +00:00
return window.fetch(commentURL + JSON.stringify(elasticQuery))
.then(response => response.json())
.then(response => {
const comments = response.hits.hits
return comments.map(comment => {
comment._source.id = toBase36(comment._id)
comment._source.link_id = toBase36(comment._source.link_id)
2018-02-06 03:07:30 +00:00
// Missing parent id === direct reply to thread
if (!comment._source.parent_id) {
comment._source.parent_id = threadID
} else {
comment._source.parent_id = toBase36(comment._source.parent_id)
}
2018-02-06 03:07:30 +00:00
return comment._source
})
})
.catch(() => { throw new Error('Could not get removed comments') })
}