libtad 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d0199d049a73b8fd060defe6dc08ab230bc3718e4b2ba9f38ade44babcfdf3d8
4
- data.tar.gz: 714efc2a4105145b43b440bdb0eea3d21fbf341a269918a29d725df4eaa4a1ee
3
+ metadata.gz: 977d138cf0263513fe4fc2277d3b96b4523b81df1c6983627e34fbaf59279237
4
+ data.tar.gz: 9de6d875879d0e2c53fa042252cc3313e837bba78321733059a351a841a85ac4
5
5
  SHA512:
6
- metadata.gz: 7c95e56ed533e92252e67250f637d48fb7fd938933a71476c0653722e7a3962c125c8ca0b756c0da3de8aa254fafbbf819de7fa18547e48804418f3b7374e6e8
7
- data.tar.gz: ab7994a5b52a3fab73f0d00748fbae874b3e8c7d51b0b67bb4a2b6a0b2949700e6672792f71f46fdf525b171a3ca1c46d14040d28a197897d35730a55af494df
6
+ metadata.gz: ad223d7da22ac8dc49bdad384b37aa7234654b640391de8c77f209d8b412b05b63b0e6aa32b05d6f614288ab50400ef2ec17178a5017d37684a5c86414e84702
7
+ data.tar.gz: ec0317e7e358248d95540913361bb49e03e7390e2667449d8ab22dbff95c07693162448cd5e803fc0e4d3ee6773d87ff5162fccbbb04e04cb719b6f70bcd5821
data/lib/libtad.rb CHANGED
@@ -3,6 +3,7 @@ require 'services/date_calculator'
3
3
  require 'services/holidays'
4
4
  require 'services/onthisday'
5
5
  require 'services/places'
6
+ require 'services/tides'
6
7
  require 'services/time'
7
8
 
8
9
  require 'types/astronomy/astronomy_current'
@@ -37,6 +38,10 @@ require 'types/places/location_ref'
37
38
  require 'types/places/place'
38
39
  require 'types/places/region'
39
40
 
41
+ require 'types/tides/station'
42
+ require 'types/tides/station_info'
43
+ require 'types/tides/tide'
44
+
40
45
  require 'types/time/datetime'
41
46
  require 'types/time/dst_entry'
42
47
  require 'types/time/time'
@@ -57,6 +62,7 @@ module LibTAD
57
62
  include LibTAD::Client::HolidaysService
58
63
  include LibTAD::Client::OnThisDayService
59
64
  include LibTAD::Client::PlacesService
65
+ include LibTAD::Client::TidesService
60
66
  include LibTAD::Client::TimeService
61
67
 
62
68
  # The endpoint the client connects to.
@@ -0,0 +1,46 @@
1
+ module LibTAD
2
+ class Client
3
+ # Tides API.
4
+ module TidesService
5
+ # @return [Array<::LibTAD::Tides::Station>]
6
+ # @param placeid [String] Specify the ID or a list of ID's for a location which you would like to get tidal data for.
7
+ # @param onlyhighlow [Boolean] Whether to return every point per interval, or just the highest and lowest points.
8
+ # @param start_date [String] Start of the requested time interval.
9
+ # @param end_date [String] End of the requested time interval.
10
+ # @param radius [Float] Search for tidal stations within the radius from the requested place.
11
+ # @param subordinate [Boolean] Whether or not to resolve subordinate or just reference stations.
12
+ # @param interval [Integer] How many minutes between each data point. Supported values: 5 min, 15 min, 30 min, 60 min.
13
+ # @param localtime [Boolean] Whether input and output timestamps should be resolved to local time or not.
14
+ #
15
+ # The Tides service can be used to retrieve predicted tidal data over a given time interval for one or multiple places.
16
+ def get_tidal_data(
17
+ placeid:,
18
+ onlyhighlow: nil,
19
+ start_date: nil,
20
+ end_date: nil,
21
+ radius: nil,
22
+ subordinate: nil,
23
+ interval: nil,
24
+ localtime: nil
25
+ )
26
+ args = {
27
+ placeid: placeid,
28
+ onlyhighlow: onlyhighlow,
29
+ startdt: start_date,
30
+ enddt: end_date,
31
+ radius: radius,
32
+ subordinate: subordinate,
33
+ interval: interval,
34
+ localtime: localtime
35
+ }.compact
36
+
37
+ response = get('tides', args)
38
+ stations = response.fetch('stations', [])
39
+
40
+ return stations.collect do |e|
41
+ ::LibTAD::Tides::Station.new(e)
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,27 @@
1
+ module LibTAD
2
+ module Tides
3
+ # Predicted data for a given station.
4
+ class Station
5
+ # @return [StationInfo]
6
+ # The source station for the predicted tidal data.
7
+ attr_reader :source
8
+
9
+ # @return [String]
10
+ # The part of the queried placeid that this location matches.
11
+ attr_reader :matchparam
12
+
13
+ # @return [Array<Tide>]
14
+ # Requested tidal information.
15
+ attr_reader :result
16
+
17
+
18
+ def initialize(hash)
19
+ @source = StationInfo.new hash.fetch('source', nil)
20
+
21
+ @matchparam = hash.fetch('matchparam', nil)
22
+ @result = hash.fetch('result', nil)
23
+ &.map { |e| Tide.new(e) }
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,34 @@
1
+ module LibTAD
2
+ module Tides
3
+ # Information about a station.
4
+ class StationInfo
5
+ # @return [String]
6
+ # Station name.
7
+ attr_reader :name
8
+
9
+ # @return [Float]
10
+ # Latitude coordinates of the station.
11
+ attr_reader :latitude
12
+
13
+ # @return [Float]
14
+ # Longitude coordinates of the station.
15
+ attr_reader :longitude
16
+
17
+ # @return [String]
18
+ # Station type. Either reference or subordinate station.
19
+ attr_reader :type
20
+
21
+ # @return [Float]
22
+ # Distance between request place and this station.
23
+ attr_reader :distance
24
+
25
+ def initialize(hash)
26
+ @name = hash.fetch('name', nil)
27
+ @latitude = hash.fetch('latitude', nil)
28
+ @longitude = hash.fetch('longitude', nil)
29
+ @type = hash.fetch('type', nil)
30
+ @distance = hash.fetch('distance', nil)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,25 @@
1
+
2
+ module LibTAD
3
+ module Tides
4
+ # Information about the tide at a specific point in time.
5
+ class Tide
6
+ # @return [::LibTAD::TADTime::TADTime]
7
+ # Date/time of the specific tidal data point.
8
+ attr_reader :time
9
+
10
+ # @return [Float]
11
+ # The elevation of tidal water above or below mean sea level.
12
+ attr_reader :amplitude
13
+
14
+ # @return [TidalPhase]
15
+ # The current tidal phase.
16
+ attr_reader :phase
17
+
18
+ def initialize(hash)
19
+ @time = ::LibTAD::TADTime::TADTime.new hash.fetch('time', nil)
20
+ @amplitude = hash.fetch('amplitude', nil)
21
+ @phase = hash.fetch('phase', nil)
22
+ end
23
+ end
24
+ end
25
+ end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libtad
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Alvsåker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-08 00:00:00.000000000 Z
11
+ date: 2021-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.17'
19
+ version: 2.2.10
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.17'
26
+ version: 2.2.10
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -78,6 +78,7 @@ files:
78
78
  - lib/services/holidays.rb
79
79
  - lib/services/onthisday.rb
80
80
  - lib/services/places.rb
81
+ - lib/services/tides.rb
81
82
  - lib/services/time.rb
82
83
  - lib/types/astronomy/astronomy_current.rb
83
84
  - lib/types/astronomy/astronomy_day.rb
@@ -106,6 +107,9 @@ files:
106
107
  - lib/types/places/location_ref.rb
107
108
  - lib/types/places/place.rb
108
109
  - lib/types/places/region.rb
110
+ - lib/types/tides/station.rb
111
+ - lib/types/tides/station_info.rb
112
+ - lib/types/tides/tide.rb
109
113
  - lib/types/time/datetime.rb
110
114
  - lib/types/time/dst_entry.rb
111
115
  - lib/types/time/time.rb