speedtest_net 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 787db5a853e47d1ff30c1d19a559d5fa97ac509a04b02cfd5bf40af2480f1c48
4
- data.tar.gz: 5f3d1de9803286980bde19667c43953484e2acaf87ce89efd64fe1d0e396e9a3
3
+ metadata.gz: bcdc8354efb8ccb8f3816bb7c3951211da2e8e2371eaa4790ed7d05061f1eaf3
4
+ data.tar.gz: a02b89411ed31e8e3893266063c2309e03a1fb1abac2a626d2d9fc961b5e25ea
5
5
  SHA512:
6
- metadata.gz: 361732b261cf02801d3507938ae4bc59f533bf2c26d8d3ee66c7267948ede13c1fa9f5e78145455b0b4171bffad15ef9233912ed7a0af690c2a4f74d10577a44
7
- data.tar.gz: 53f5835b6b32905b7f1332595a4ddc02f2d3b5e26258867b6d3d15f5b972b437c5d9ff6d909ffca9e601e6d59d9f8804dd8c536770f9f9088c4ce637af8a6179
6
+ metadata.gz: eb96f0835e8253dbe5c149d9cf921f2bf4840b4cffdde07826b02ded3de13f348e1d896d5f8d636ee5db66182e1a5b8c5ddde49abebfbe2eb1ab8f2fdd804cbd
7
+ data.tar.gz: 8b2478d2d3b4e56ab77a99247f399b4e243f1299f248005be1adc6962259d34ed540344d89be2132674b7b0cc06af1f43653947d2cfd9887614373f818fe6332
data/lib/geo.rb ADDED
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Geo
4
+ RADIUS_PER_DEGREE = Math::PI / 180
5
+ RADIUS_METER = 6_371_000
6
+
7
+ attr_reader :lat, :long
8
+
9
+ def initialize(lat, long)
10
+ @lat = lat
11
+ @long = long
12
+ end
13
+
14
+ def distance(other) # rubocop:disable Metrics/AbcSize
15
+ delta_lat = (@lat - other.lat) * RADIUS_PER_DEGREE
16
+ delta_long = (@long - other.long) * RADIUS_PER_DEGREE
17
+
18
+ lat_radius = @lat * RADIUS_PER_DEGREE
19
+ other_lat_radius = other.lat * RADIUS_PER_DEGREE
20
+
21
+ a = Math.sin(delta_lat / 2)**2 +
22
+ Math.cos(lat_radius) *
23
+ Math.cos(other_lat_radius) *
24
+ Math.sin(delta_long / 2)**2
25
+
26
+ Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)) * 2 * RADIUS_METER
27
+ end
28
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'rexml/document'
4
4
  require 'speedtest_net/error'
5
- require 'speedtest_net/geo'
5
+ require 'geo'
6
6
 
7
7
  module SpeedtestNet
8
8
  class Config
@@ -60,7 +60,7 @@ module SpeedtestNet
60
60
  {
61
61
  ip: elements['ip'],
62
62
  isp: elements['isp'],
63
- geo: SpeedtestNet::Geo.new(elements['lat'].to_f, elements['lon'].to_f)
63
+ geo: Geo.new(elements['lat'].to_f, elements['lon'].to_f)
64
64
  }
65
65
  end
66
66
 
@@ -44,10 +44,11 @@ module SpeedtestNet
44
44
  end
45
45
 
46
46
  def calculate_results(results)
47
- count = results.count
47
+ sorted_results = results.sort
48
+ count = sorted_results.count
48
49
  faster = count - (count * 0.1).round
49
50
  slower = (count * 0.3).round
50
- target_results = results[slower...faster]
51
+ target_results = sorted_results[slower...faster]
51
52
  target_results.sum / target_results.count
52
53
  end
53
54
  end
@@ -4,7 +4,7 @@ require 'rexml/document'
4
4
  require 'speedtest_net/config'
5
5
  require 'speedtest_net/latency'
6
6
  require 'speedtest_net/error'
7
- require 'speedtest_net/geo'
7
+ require 'geo'
8
8
 
9
9
  module SpeedtestNet
10
10
  class Server
@@ -52,7 +52,7 @@ module SpeedtestNet
52
52
  config = SpeedtestNet::Config.fetch
53
53
  url = server['url2'] || server['url']
54
54
 
55
- geo = SpeedtestNet::Geo.new(server['lat'].to_f, server['lon'].to_f)
55
+ geo = Geo.new(server['lat'].to_f, server['lon'].to_f)
56
56
  distance = geo.distance(config.client[:geo])
57
57
 
58
58
  new(server['id'].to_i, url, geo, distance, server)
@@ -42,10 +42,11 @@ module SpeedtestNet
42
42
  end
43
43
 
44
44
  def calculate_results(results)
45
- count = results.count
45
+ sorted_results = results.sort
46
+ count = sorted_results.count
46
47
  faster = count - (count * 0.1).round
47
48
  slower = (count * 0.3).round
48
- target_results = results[slower...faster]
49
+ target_results = sorted_results[slower...faster]
49
50
  target_results.sum / target_results.count
50
51
  end
51
52
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SpeedtestNet
4
- VERSION = '0.1.1'
4
+ VERSION = '0.2.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: speedtest_net
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakano
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-03 00:00:00.000000000 Z
11
+ date: 2019-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -140,11 +140,11 @@ files:
140
140
  - Rakefile
141
141
  - bin/console
142
142
  - bin/setup
143
+ - lib/geo.rb
143
144
  - lib/speedtest_net.rb
144
145
  - lib/speedtest_net/config.rb
145
146
  - lib/speedtest_net/download.rb
146
147
  - lib/speedtest_net/error.rb
147
- - lib/speedtest_net/geo.rb
148
148
  - lib/speedtest_net/latency.rb
149
149
  - lib/speedtest_net/result.rb
150
150
  - lib/speedtest_net/run.rb
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SpeedtestNet
4
- class Geo
5
- RADIUS_PER_DEGREE = Math::PI / 180
6
- RADIUS_METER = 6_371_000
7
-
8
- attr_reader :lat, :long
9
-
10
- def initialize(lat, long)
11
- @lat = lat
12
- @long = long
13
- end
14
-
15
- def distance(other) # rubocop:disable Metrics/AbcSize
16
- delta_lat = (@lat - other.lat) * RADIUS_PER_DEGREE
17
- delta_long = (@long - other.long) * RADIUS_PER_DEGREE
18
-
19
- lat_radius = @lat * RADIUS_PER_DEGREE
20
- other_lat_radius = other.lat * RADIUS_PER_DEGREE
21
-
22
- a = Math.sin(delta_lat / 2)**2 +
23
- Math.cos(lat_radius) *
24
- Math.cos(other_lat_radius) *
25
- Math.sin(delta_long / 2)**2
26
-
27
- Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)) * 2 * RADIUS_METER
28
- end
29
- end
30
- end