bgpview 0.2.0 → 0.3.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: a6427f8cffbf0e2082d15d229b1536ade3e06f4e5809a893ad6fba59df4548b9
4
- data.tar.gz: e7ad081320c46beb5eadb84d07486409bf8f05acc715e3487b89c4b97665bbcf
3
+ metadata.gz: a664513f54fe8ebc782b133c9a7d0740e8a9132aec436ca356279f73bb1abaee
4
+ data.tar.gz: 3290ba042a3351ed1c31e5157cb038727113c3783e550ae20c114843f096eb0a
5
5
  SHA512:
6
- metadata.gz: 7e07f1a4f1e063642b3614ed61dcc0d10b854a41c1f573a2192cdcac7264ab4a0ddf096c72e203541780d827452303e88c3c908e9218d5100d4dfa64b4e22f29
7
- data.tar.gz: ac612e691fcf4e370b20b528fa90bb76693f4d2cb77610cf20672bb4d2a7f90f400ecf98bd18ba69bb112dbb3f65e7a54f08206676ab6f35e6bdf7b73996393e
6
+ metadata.gz: 71ada1c0de7e5469a2cce664710299adf1d78eabfa2c2c3c7029402d14ad3db6be7cffa5e7370d0b4d1856716d77607019221e536e0cbdcdf5c24faa42cbb6cf
7
+ data.tar.gz: 6b5a689b6178c635ac343a8483f8a225af46e0689c35f9b82d6b36d8f6938db8f971b32dd20294c523966900aaff4d5ad8e36a39aa61343424e67f6c1d013078
data/.travis.yml CHANGED
@@ -6,17 +6,7 @@ sudo: false
6
6
  language: ruby
7
7
  cache: bundler
8
8
  rvm:
9
- - 2.5.0
10
- - 2.5.1
11
- - 2.5.2
12
- - 2.5.3
13
- - 2.5.4
14
- - 2.5.5
15
9
  - 2.5.6
16
- - 2.6.0
17
- - 2.6.1
18
- - 2.6.2
19
- - 2.6.3
20
10
  - 2.6.4
21
11
  before_install: gem install bundler -v 2.0.2
22
12
  before_script:
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bgpview (0.2.0)
4
+ bgpview (0.3.0)
5
5
  httpclient (~> 2.8)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -67,6 +67,14 @@ upstreams.ipv4.map(&:number) # => [7514, 17676]
67
67
  upstreams.ipv6.map(&:name) # => ["MEX", "GIGAINFRA"]
68
68
  ```
69
69
 
70
+ ### ASN Downstreams
71
+ ```ruby
72
+ downstreams = as7511.downstreams # BGPView::Downstreams instance
73
+ downstreams.ipv4 # array of IPv4 downstream instances
74
+ downstreams.ipv6 # array of IPv6 downstream instances
75
+ downstreams.ipv4.map(&:number) # => [7517, 45687]
76
+ downstreams.ipv6.map(&:name) # => []
77
+ ```
70
78
 
71
79
  ## Contributing
72
80
 
data/lib/bgpview/asn.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'bgpview/api'
4
4
  require 'bgpview/upstreams'
5
+ require 'bgpview/downstreams'
5
6
  require 'bgpview/peers'
6
7
  require 'bgpview/prefixes'
7
8
  require 'bgpview/number'
@@ -45,6 +46,10 @@ module BGPView
45
46
  BGPView::Upstreams.find(@number)
46
47
  end
47
48
 
49
+ def downstreams
50
+ BGPView::Downstreams.find(@number)
51
+ end
52
+
48
53
  def peers
49
54
  BGPView::Peers.find(@number)
50
55
  end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bgpview/api'
4
+
5
+ module BGPView
6
+ class Downstreams
7
+ @@cache = {}
8
+
9
+ private_class_method :new
10
+ attr_reader :ipv4, :ipv6
11
+
12
+ def initialize(number)
13
+ BGPView::Number.check(number)
14
+
15
+ downstreams = BGPView::API.call("#{number}/downstreams")
16
+
17
+ @ipv4 = extract_as(downstreams, 'ipv4')
18
+ @ipv6 = extract_as(downstreams, 'ipv6')
19
+
20
+ @@cache[number] = self
21
+ end
22
+
23
+ def self.find(number)
24
+ @@cache.key?(number) ? @@cache[number] : new(number)
25
+ end
26
+
27
+ private
28
+
29
+ def extract_as(downstreams, version)
30
+ downstreams[:data]["#{version}_downstreams".to_sym].map do |as|
31
+ BGPView::Asn.find_or_create(as[:asn], as[:name])
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BGPView
4
- VERSION = '0.2.0'
4
+ VERSION = '0.3.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bgpview
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ryonkn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-04 00:00:00.000000000 Z
11
+ date: 2019-09-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -189,6 +189,7 @@ files:
189
189
  - lib/bgpview.rb
190
190
  - lib/bgpview/api.rb
191
191
  - lib/bgpview/asn.rb
192
+ - lib/bgpview/downstreams.rb
192
193
  - lib/bgpview/error.rb
193
194
  - lib/bgpview/ip.rb
194
195
  - lib/bgpview/number.rb