Skip to content
Snippets Groups Projects
Select Git revision
  • 1e5611f1e8238213074ed39faa05077b13c0d26f
  • master default protected
  • greenkeeper/webpack-4.10.1
  • greenkeeper/webpack-4.10.0
  • greenkeeper/webpack-4.9.2
  • greenkeeper/promise-polyfill-8.0.0
  • greenkeeper/webpack-4.9.1
  • greenkeeper/webpack-4.9.0
  • greenkeeper/webpack-manifest-plugin-2.0.3
  • greenkeeper/update-to-node-10
  • gh-pages
  • greenkeeper/webpack-4.8.3
  • greenkeeper/webpack-4.8.2
  • greenkeeper/webpack-4.7.0
  • greenkeeper/webpack-manifest-plugin-2.0.2
  • greenkeeper/webpack-manifest-plugin-2.0.1
  • greenkeeper/style-loader-0.21.0
  • greenkeeper/webpack-4.6.0
  • greenkeeper/sass-loader-7.0.1
  • greenkeeper/sass-loader-7.0.0
  • greenkeeper/webpack-manifest-plugin-2.0.0
  • 2.7.3
  • 2.7.2
  • 2.7.1
  • 2.7.0
  • 2.6.6
  • 2.6.5
  • 2.6.4
  • 2.6.3
  • 2.6.2
  • 2.6.1
  • 2.6.0
  • 2.5.5
  • 2.5.4
  • 2.5.3
  • 2.5.2
  • 2.5.1
  • 2.5.0
  • 2.4.0
  • 2.3.0
  • 2.2.6
41 results

application.js

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),
    	}
    }