magnet_link 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/magnet_link.rb +49 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c37937e0023da8e1392bd2e2c80deb78e7277040
4
+ data.tar.gz: 776826d40fe222b369f69b526001267618c11b1d
5
+ SHA512:
6
+ metadata.gz: 9d2afeabc02e176f9e12f88631644ebb0145d04c106a01947a1ed088580cb46f47d3eb68491815c5ff59ed7cd78cedb428cea8e25445a1e9c46217d4f1f57208
7
+ data.tar.gz: eb92ed24027ca1cbe9aeba1162b83c51f8b6dcca3a914c53b8a8930b325079f5aa89fb77be7bf6e64e55a6c6e3e68d01f4e219adee980719fa80f5d149ffa00f
@@ -0,0 +1,49 @@
1
+ class MagnetLink
2
+ def initialize(link)
3
+ @parsed = parse_link link
4
+ @parameters = [:xt, :tr, :dn, :kt]
5
+ end
6
+
7
+ def method_missing(method, *args, &block)
8
+ super unless @parameters.include? method
9
+ find_values(method)
10
+ end
11
+
12
+ def respond_to_missing?(method)
13
+ @parameters.include? method
14
+ end
15
+
16
+ private
17
+
18
+ def find_values(parameter)
19
+ @parsed[parameter]
20
+ end
21
+
22
+ def normalize_value(parameter, value)
23
+ return value.split('+') if parameter == :kt
24
+ return value
25
+ end
26
+
27
+ def parse_link(link)
28
+ parsed = {}
29
+
30
+ link.split('&').each do |chunk|
31
+ match = chunk.match('(.{2})=(.+)')
32
+
33
+ if match.nil?
34
+ raise InvalidLink
35
+ end
36
+
37
+ parameter = match.captures[0].to_sym
38
+ value = match.captures[1]
39
+
40
+ parsed[parameter] = [] unless parsed[parameter]
41
+ parsed[parameter].push normalize_value(parameter, value)
42
+ end
43
+
44
+ parsed.each_key { |key| parsed[key].flatten! }
45
+ end
46
+
47
+ class InvalidLink < RuntimeError
48
+ end
49
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: magnet_link
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.9
5
+ platform: ruby
6
+ authors:
7
+ - Hector Orellana
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-03-25 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: magnet links parser
14
+ email: hofm92@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/magnet_link.rb
20
+ homepage: https://gitlab.com/juiko/magnet_link
21
+ licenses:
22
+ - GPL-3.0
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.6.8
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: magnet_link
44
+ test_files: []