Skip to content
Snippets Groups Projects
Select Git revision
  • 1b7ee69ed9ef1b471be86a18b37db82bc950a4f6
  • master default
  • method_check
  • custom_prefix
  • package
  • cookies
  • v2.1.1
  • v2.1.0
  • v2.1.0-rc5
  • v2.1.0-rc4
  • v2.1.0-rc3
  • v2.1.0-rc2
  • v2.1.0-rc1
  • v2.0.7
  • v2.0.6
  • v2.0.5
  • v2.0.4
  • v2.0.3
  • v2.0.2
  • v2.0.1
  • v2.0.0
  • v1.2.8
  • v1.2.7
  • v1.2.6
  • v1.2.5
  • v1.2.4
26 results

misc.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,
    		Cycle:            data.Cycle,
    		Pool:             data.Pool,
    		Id:               data.Id,
    		TrainLink:        data.TrainLink,
    		PublishedTime:    parseTime(data.PublishedDate, data.PublishedTime),
    		DepartureStation: data.DepartureStation,
    		DepartureTime:    parseTime(data.DepartureDate, data.DepartureTime),
    		ArrivalStation:   data.ArrivalStation,
    		ArrivalTime:      parseTime(data.ArrivalDate, data.ArrivalTime),
    	}
    }