speedtest_net 0.8.0 → 0.8.1

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: 35f79907495fb46041e545a27bf81429cbeb7d4ac8281cc5b3e0dc58cd329b66
4
- data.tar.gz: 0750ba31b2672dc5c9b3b3707dbf80d7a4bdcc3095971f54aa9ea45477f7e39e
3
+ metadata.gz: 39d774cd49d85c30b04b9bb3dfd9743b33858f177ddaaaf9e3e165aef24e31cd
4
+ data.tar.gz: d71d13cca347f15923c8aa1ffa14799554553f5201f41c613a6c4c451cf00bf5
5
5
  SHA512:
6
- metadata.gz: f8801cfc3a1dd4ce6ad90c8d76ed3ffe0196d9d74996f05e624f6c948f71a65c496d73140ca230c2cd84e64ecb191ab6d4d2818fd68f8520ef7133bb1d5d55ea
7
- data.tar.gz: 6e15ea46406b725c5b290312a81230a8caed487118c87fe46a0ff03cd86eb7ad6fca04500d5ac9029af3bd66455c141cdb23feb6ab47bb8fbbc20b770fd93dd9
6
+ metadata.gz: 9a7fc6501f22d46c3ed6e8a999e78042dd71b6f8e1aab714efaea797276bb3fea0727a755b916c9af3fc6bb63c23db5ee7dd82dbc38d9014a68a6d845c6e8e9a
7
+ data.tar.gz: cfeea44e6c008e8fa52223c8add27a7807e9f41a2ded4a3dcdf08ef1651fc1947145f44b64fa7b8a495965136348e29bb78e042895a3e9066a2c194b19bf791c
@@ -19,20 +19,27 @@ jobs:
19
19
  runs-on: ubuntu-latest
20
20
  steps:
21
21
  - uses: actions/checkout@master
22
- - name: Setup Ruby 2.7
22
+ - name: Setup Ruby
23
23
  uses: ruby/setup-ruby@master
24
24
  with:
25
- ruby-version: 2.7
25
+ ruby-version: 3.0
26
+ - name: Run apt-get
27
+ run: |
28
+ sudo apt-get update
29
+ sudo apt-get install libcurl4-openssl-dev
30
+ - name: Bundle install
31
+ run: |
32
+ gem install bundler
33
+ bundle install --jobs 4 --retry 3
26
34
  - name: Run rubocop
27
35
  run: |
28
- gem install rubocop rubocop-rspec
29
36
  rubocop
30
37
 
31
38
  rspec:
32
39
  runs-on: ubuntu-latest
33
40
  strategy:
34
41
  matrix:
35
- ruby: [ 2.5, 2.6, 2.7, 'ruby-head' ]
42
+ ruby: [ 2.6, 2.7, 3.0, 'head' ]
36
43
  steps:
37
44
  - uses: actions/checkout@master
38
45
  - name: Setup Ruby
data/.rubocop.yml CHANGED
@@ -1,12 +1,8 @@
1
1
  require: rubocop-rspec
2
2
 
3
3
  AllCops:
4
- TargetRubyVersion: 2.5
5
- Exclude:
6
- - 'speedtest_net.gemspec'
7
-
8
- Layout/ClassStructure:
9
- Enabled: true
4
+ TargetRubyVersion: 2.6
5
+ NewCops: enable
10
6
 
11
7
  Style/Documentation:
12
8
  Enabled: false
data/Gemfile CHANGED
@@ -9,8 +9,8 @@ gem 'codacy-coverage', '>= 2.1'
9
9
  gem 'factory_bot', '>= 6.0'
10
10
  gem 'rake', '>= 13.0'
11
11
  gem 'rspec', '>= 3.0'
12
- gem 'rubocop', '>= 0.76'
13
- gem 'rubocop-rspec', '>= 1.36'
12
+ gem 'rubocop', '>= 1.0.0'
13
+ gem 'rubocop-rspec', '>= 1.44.1'
14
14
  gem 'simplecov', '>= 0.17'
15
15
  gem 'vcr', '>= 6.0'
16
16
  gem 'webmock', '>= 3.7'
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SpeedtestNet
4
+ class Client
5
+ attr_reader :ip, :isp, :geo
6
+
7
+ def initialize(ip, isp, geo)
8
+ @ip = ip
9
+ @isp = isp
10
+ @geo = geo
11
+ end
12
+ end
13
+ end
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'rexml/document'
4
+ require 'speedtest_net/client'
4
5
  require 'speedtest_net/error'
5
- require 'geo'
6
+ require 'speedtest_net/geo'
6
7
 
7
8
  module SpeedtestNet
8
9
  class Config
@@ -55,11 +56,7 @@ module SpeedtestNet
55
56
  end
56
57
 
57
58
  def client_config(elements)
58
- {
59
- ip: elements['ip'],
60
- isp: elements['isp'],
61
- geo: Geo.new(elements['lat'].to_f, elements['lon'].to_f)
62
- }
59
+ Client.new(elements['ip'], elements['isp'], Geo.new(elements['lat'].to_f, elements['lon'].to_f))
63
60
  end
64
61
 
65
62
  def server_config(elements)
@@ -2,6 +2,8 @@
2
2
 
3
3
  module SpeedtestNet
4
4
  class Error < StandardError; end
5
+
5
6
  class HTTPDownloadError < Error; end
7
+
6
8
  class InvalidServerIdError < Error; end
7
9
  end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SpeedtestNet
4
+ class Geo
5
+ RADIAN_PER_DEGREE = Math::PI / 180
6
+ EARTH_RADIUS = 6_371_000
7
+
8
+ def initialize(lat, long)
9
+ @lat = lat
10
+ @long = long
11
+ end
12
+
13
+ def distance(other) # rubocop:disable Metrics/AbcSize
14
+ a = Math.sin(radian_lat) * Math.sin(other.radian_lat) +
15
+ Math.cos(radian_lat) * Math.cos(other.radian_lat) *
16
+ Math.cos(radian_long - other.radian_long)
17
+
18
+ Math.acos(a) * EARTH_RADIUS
19
+ end
20
+
21
+ def radian_lat
22
+ @lat * RADIAN_PER_DEGREE
23
+ end
24
+
25
+ def radian_long
26
+ @long * RADIAN_PER_DEGREE
27
+ end
28
+ end
29
+ 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 'geo'
7
+ require 'speedtest_net/geo'
8
8
 
9
9
  module SpeedtestNet
10
10
  class Server
@@ -69,7 +69,7 @@ module SpeedtestNet
69
69
  url = server['url2'] || server['url']
70
70
 
71
71
  geo = Geo.new(server['lat'].to_f, server['lon'].to_f)
72
- distance = geo.distance(config.client[:geo])
72
+ distance = geo.distance(config.client.geo)
73
73
 
74
74
  new(server['id'].to_i, url, geo, distance, server)
75
75
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SpeedtestNet
4
- VERSION = '0.8.0'
4
+ VERSION = '0.8.1'
5
5
  end
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
29
29
  spec.require_paths = ['lib']
30
30
 
31
- spec.required_ruby_version = '>= 2.5.0'
31
+ spec.required_ruby_version = '>= 2.6.0'
32
32
 
33
33
  spec.add_dependency 'curb', '~> 0.9'
34
34
  spec.add_dependency 'rexml', '~> 3.2'
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.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakano
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-02 00:00:00.000000000 Z
11
+ date: 2021-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: curb
@@ -72,15 +72,16 @@ files:
72
72
  - Rakefile
73
73
  - bin/console
74
74
  - bin/setup
75
- - lib/geo.rb
76
75
  - lib/speedtest_net.rb
77
76
  - lib/speedtest_net/calculate_speed.rb
77
+ - lib/speedtest_net/client.rb
78
78
  - lib/speedtest_net/config.rb
79
79
  - lib/speedtest_net/download.rb
80
80
  - lib/speedtest_net/error.rb
81
81
  - lib/speedtest_net/formatter/distance.rb
82
82
  - lib/speedtest_net/formatter/latency.rb
83
83
  - lib/speedtest_net/formatter/speed.rb
84
+ - lib/speedtest_net/geo.rb
84
85
  - lib/speedtest_net/http_timeout.rb
85
86
  - lib/speedtest_net/latency.rb
86
87
  - lib/speedtest_net/result.rb
@@ -105,14 +106,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
105
106
  requirements:
106
107
  - - ">="
107
108
  - !ruby/object:Gem::Version
108
- version: 2.5.0
109
+ version: 2.6.0
109
110
  required_rubygems_version: !ruby/object:Gem::Requirement
110
111
  requirements:
111
112
  - - ">="
112
113
  - !ruby/object:Gem::Version
113
114
  version: '0'
114
115
  requirements: []
115
- rubygems_version: 3.1.2
116
+ rubygems_version: 3.2.15
116
117
  signing_key:
117
118
  specification_version: 4
118
119
  summary: Library for testing internet bandwidth using speedtest.net
data/lib/geo.rb DELETED
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Geo
4
- RADIAN_PER_DEGREE = Math::PI / 180
5
- EARTH_RADIUS = 6_371_000
6
-
7
- def initialize(lat, long)
8
- @lat = lat
9
- @long = long
10
- end
11
-
12
- def distance(other) # rubocop:disable Metrics/AbcSize
13
- a = Math.sin(radian_lat) * Math.sin(other.radian_lat) +
14
- Math.cos(radian_lat) * Math.cos(other.radian_lat) *
15
- Math.cos(radian_long - other.radian_long)
16
-
17
- Math.acos(a) * EARTH_RADIUS
18
- end
19
-
20
- def radian_lat
21
- @lat * RADIAN_PER_DEGREE
22
- end
23
-
24
- def radian_long
25
- @long * RADIAN_PER_DEGREE
26
- end
27
- end