started work on a library for pulling project insight data

master
dtookey 4 years ago
parent 695eab1276
commit c776278913

1
.gitignore vendored

@ -0,0 +1 @@
/tokens/

@ -0,0 +1,86 @@
package insight
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
"net/http"
"os"
"strconv"
)
const (
BaseApiUrl = "https://jds.projectinsight.net/api/"
)
type (
TimeEntry struct {
ActualHours float64
ActualHoursFormattedString string
ActualTimeString string
ActualTotal float64
BillableHours float64
BillableHoursFormattedString string
BillableTimeString string
BillableTotal float64
Date string
Description string
ProjectId string `json:"Project_Id,omitempty"`
RateBill float64
RateBurden float64
TaskId string `json:"Task_Id,omitempty"`
TimeSheetId string `json:"TimeSheet_Id,omitempty"`
UserId string `json:"User_Id,omitempty"`
}
)
func Get(urlEndpoint string) {
client := http.Client{}
reqUrl := BaseApiUrl + urlEndpoint
token := getToken("insight.token")
deserializeContainer := make([]TimeEntry, 0, 20000)
request, err := http.NewRequest("GET", reqUrl, nil)
if err != nil {
log.Fatal(err)
}
request.Header.Add("api-token", token)
resp, err := client.Do(request)
if err != nil {
log.Fatal(err)
}
bodyBytes, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
err = json.Unmarshal(bodyBytes, &deserializeContainer)
if err != nil {
log.Fatal(err)
}
for _, entry := range deserializeContainer {
log.Printf("%#v\n", entry)
}
log.Println("Received Entries (qty): " + strconv.Itoa(len(deserializeContainer)))
}
func getToken(tokenName string) string {
filePath := fmt.Sprintf("./tokens/%s", tokenName)
file, err := os.OpenFile(filePath, os.O_RDONLY, 0755)
if err != nil {
log.Fatal(err)
}
defer file.Close()
rawBytes, err := ioutil.ReadAll(file)
if err != nil {
log.Fatal(err)
}
return string(rawBytes)
}

@ -2,16 +2,26 @@ package main
import (
"log"
"mercury/src/insight"
"mercury/src/mercury"
"os"
)
func main() {
fetchInsightData()
}
func processQbBilling() {
reportBase := os.Getenv("mercury_path")
if len(reportBase) == 0 {
log.Fatalln("please set the mercury_path env var. we don't know where to look otherwise")
}
mercury.ProcessCSVsFromPath(reportBase, "/home/dtookey/work/clarity-reporting/qb_all_bc.csv")
}
func fetchInsightData() {
//jcrouch id = e779e0a9-0e56-4dbe-98dd-e8d0048d109f
//id := "e779e0a9-0e56-4dbe-98dd-e8d0048d109f"
insight.Get("time-entry/search?startDate=2018-01-01&endDate=2022-04-01")
}

Loading…
Cancel
Save