import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { map, retry, tap } from 'rxjs/operators';


@Injectable()
export class GoogleApisService {


    headers: any

    constructor(
        private _http: HttpClient
    ) {
    }

    getSheet(sheetId: string) {
    
        return this._http.get(`https://docs.google.com/spreadsheets/d/e/${sheetId}/pub?output=tsv`, {responseType: 'text'})
        .pipe(
            retry(10),
            map((data: any) => {


                let headers = []
                let result = []                
                data = data.split('\n')
                headers = data.shift().replace(/ /g, '').toLowerCase().replace('\r', '').split('\t')

                for(let value of data) {
                    
                    let element = {}
                    
                    value.replace('\r', '').split('\t').forEach((v, k) => {

                        let header = headers[k].replace(/-/g, '')
                        element[header] = header == 'outofstock' || header == 'discontinued' ? (v == 'yes' ? true : false) : v
                    })

                    result.push(element)
                }

                return result
            })
    
        )
    }
}