started work on a library for pulling project insight data
parent
695eab1276
commit
c776278913
@ -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)
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue