Skip to content
Snippets Groups Projects
Select Git revision
  • 4e4edf2d23f7092a6b1eecdb776ff58212ffda9b
  • master default protected
2 results

external_suggestion.go

Blame
  • external_suggestion.go 2.18 KiB
    package bahn
    
    import (
    	"encoding/json"
    	"io"
    	"time"
    )
    
    func SuggestionsFromReader(source io.Reader) ([]Suggestion, error) {
    	var raw rawSuggestions
    	if err := json.NewDecoder(source).Decode(&raw); err != nil {
    		return make([]Suggestion, 0), err
    	}
    	return parseSuggestions(raw), nil
    }
    
    func SuggestionsFromBytes(source []byte) ([]Suggestion, error) {
    	var raw rawSuggestions
    	if err := json.Unmarshal(source, &raw); err != nil {
    		return make([]Suggestion, 0), err
    	}
    	return parseSuggestions(raw), nil
    }
    
    type rawSuggestions struct {
    	Suggestions []rawSuggestion
    }
    
    func parseSuggestions(data rawSuggestions) []Suggestion {
    	result := make([]Suggestion, len(data.Suggestions))
    	for i, element := range data.Suggestions {
    		result[i] = parseSuggestion(element)
    	}
    	return result
    }
    
    type rawSuggestion struct {
    	Value            string `json:"value"`
    	Cycle            string `json:"cycle"`
    	Pool             string `json:"pool"`
    	Id               string `json:"id"`
    	TrainLink        string `json:"trainLink"`
    	JourneyParams    string `json:"journParam"`
    	PublishedTime    string `json:"pubTime"`
    	PublishedDate    string `json:"pubDate"`
    	DepartureStation string `json:"dep"`
    	DepartureDate    string `json:"depDate"`
    	DepartureTime    string `json:"depTime"`
    	ArrivalStation   string `json:"arr"`
    	ArrivalTime      string `json:"arrTime"`
    	ArrivalDate      string `json:"arrDate"`
    }
    
    func parseTime(dateStr string, timeStr string) *time.Time {
    	DateFormat := "02.01.2006"
    	DateTimeFormat := "02.01.2006 15:04"
    	if dateStr == "" {
    		dateStr = time.Now().Format(DateFormat)
    	}
    
    	dateTime, err := time.Parse(DateTimeFormat, dateStr+" "+timeStr)
    	if err != nil {
    		return nil
    	}
    	return &dateTime
    }
    
    func parseSuggestion(data rawSuggestion) Suggestion {
    	return Suggestion{
    		Value:            data.Value,