degiro-api
Version:
Unofficial DeGiro API for Javascript. Buy and sell in the stock market. See your portfolio and much more
77 lines (66 loc) • 2.25 kB
text/typescript
// Import types
import { AccountConfigType, AccountDataType, i18nMessagesType, GetNewsOptionsType, NewsType } from '../types'
// Import debug console log
import { debug, fetch } from '../utils'
// Import paths
import { DEGIRO_API_PATHS } from '../enums'
const { GET_LATESTS_NEWS_PATH, GET_TOP_NEWS_PATH } = DEGIRO_API_PATHS
export function getNewsRequest(options: GetNewsOptionsType, accountData: AccountDataType, accountConfig: AccountConfigType): Promise<NewsType> {
return new Promise(async (resolve, reject) => {
// Generate params
const { latest, top, latestOffset = 0, latestLimit = 20, languages = 'es' } = options
let params = ''
params += `offset=${latestOffset}&`
params += `limit=${latestLimit}&`
params += `languages=${languages}&`
params += `intAccount=${accountData.data.intAccount}&`
params += `sessionId=${accountConfig.data.sessionId}`
// Generate Request options
const requestOptions: {
method?: string,
body?: string,
headers: {
[key: string]: string,
},
credentials: 'include',
referer: string,
} = {
headers: {
Cookie: `JSESSIONID=${accountConfig.data.sessionId};`,
},
credentials: 'include',
referer: 'https://trader.degiro.nl/trader/',
}
// Generate de request URIs
const latestNewsURI = `${accountConfig.data.companiesServiceUrl}${GET_LATESTS_NEWS_PATH}?${params}`
const topNewsURI = `${accountConfig.data.companiesServiceUrl}${GET_TOP_NEWS_PATH}?${params}`
// Create de default value
const result: NewsType = {
latest: {
items: [],
},
top: {
items: [],
},
}
// Fetch the requested news
try {
// Check if latest requested
if (latest) {
const latestFetch = await fetch(latestNewsURI, requestOptions)
const { data } = await latestFetch.json()
result.latest = data
}
// Check if top requested
if (top) {
const latestFetch = await fetch(topNewsURI, requestOptions)
const { data } = await latestFetch.json()
result.top = data
}
} catch (error) {
return reject(error)
}
// Return te result
resolve(result)
})
}