opener-core 2.4.0 → 2.5.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
- SHA1:
3
- metadata.gz: aec1682c9a5171c85a7bbef991c45422daf69865
4
- data.tar.gz: 66d9c0d9568291af74bf47e8e1a553fc85bfcefe
2
+ SHA256:
3
+ metadata.gz: 5e21e457a99dcc64b76d2840230b2b3e7265e6f4af85e85a34cf3d4a906ac492
4
+ data.tar.gz: 887abb3273444413eaa746a8a113f4ebd64e20d936dfe742f5049758153aa688
5
5
  SHA512:
6
- metadata.gz: 2bfd93b604a3e5c6c59e366bfca88e3486fb0a2f74bab1c58a01214262b93237f2934077fb1699ebdb7f5b736f425fcd653a883423a61e47ab8e038c62becb12
7
- data.tar.gz: 6d7aa2700031db056fca52dd48c61deac1b5b6a815f329306f44d23885ed726b68cbf9c677dbe45db71d29abcbab194e6b58b7912e1dd3e4ab2b99430d4aeb6d
6
+ metadata.gz: 0ad70d679479832376301b1c8ce03a18bd5c8bc5149728ec9e3788e4321da05fd61784497f81bf7dc68846ecc6d791452d96fedbb57901c84e2a4c706488d67c
7
+ data.tar.gz: 5060d1a70ecf85d08e3608046be6e01ed439ea5eaff689b28601cd210cf6110aa090173c9a94bd5dbc1f2fb80c1538b47966fac47b05234f44a2b7c33a355134
data/README.md CHANGED
@@ -10,10 +10,6 @@ A Gem that provides commonly re-used functionality for the various OpeNER Gems.
10
10
  | Rubinius | >= 2.2 | >= 2.3.0 |
11
11
  | JRuby | >= 1.7 | >= 1.7.16 |
12
12
 
13
- For the resource switcher you'll need to have
14
- [libarchive](http://www.libarchive.org/) installed as it's used for unpacking
15
- archives.
16
-
17
13
  ## Installation
18
14
 
19
15
  You can install opener-core as a Gem by running:
@@ -5,10 +5,8 @@ require 'fileutils'
5
5
 
6
6
  require 'slop'
7
7
  require 'httpclient'
8
- require 'archive'
9
8
 
10
9
  require_relative 'core/version'
11
- require_relative 'core/resource_switcher'
12
10
  require_relative 'core/syslog'
13
11
  require_relative 'core/language_error'
14
12
  require_relative 'core/language_code'
@@ -1,5 +1,7 @@
1
1
  module Opener
2
2
  module Core
3
- VERSION = '2.4.0'
3
+
4
+ VERSION = '2.5.0'
5
+
4
6
  end
5
7
  end
@@ -20,7 +20,6 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_dependency 'slop', '~> 3.0'
22
22
  spec.add_dependency 'httpclient'
23
- spec.add_dependency 'archive'
24
23
 
25
24
  spec.add_development_dependency 'bundler'
26
25
  spec.add_development_dependency 'rake'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opener-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - development@olery.com
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-26 00:00:00.000000000 Z
11
+ date: 2021-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slop
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: archive
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: bundler
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -95,7 +81,7 @@ dependencies:
95
81
  - !ruby/object:Gem::Version
96
82
  version: '0'
97
83
  description: Gem that contains some low level generic functions for all OpeNER components.
98
- email:
84
+ email:
99
85
  executables: []
100
86
  extensions: []
101
87
  extra_rdoc_files: []
@@ -105,7 +91,6 @@ files:
105
91
  - lib/opener/core.rb
106
92
  - lib/opener/core/language_code.rb
107
93
  - lib/opener/core/language_error.rb
108
- - lib/opener/core/resource_switcher.rb
109
94
  - lib/opener/core/syslog.rb
110
95
  - lib/opener/core/version.rb
111
96
  - opener-core.gemspec
@@ -113,7 +98,7 @@ homepage: http://opener-project.github.com
113
98
  licenses:
114
99
  - Apache 2.0
115
100
  metadata: {}
116
- post_install_message:
101
+ post_install_message:
117
102
  rdoc_options: []
118
103
  require_paths:
119
104
  - lib
@@ -128,10 +113,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
113
  - !ruby/object:Gem::Version
129
114
  version: '0'
130
115
  requirements: []
131
- rubyforge_project:
132
- rubygems_version: 2.2.2
133
- signing_key:
116
+ rubyforge_project:
117
+ rubygems_version: 2.7.8
118
+ signing_key:
134
119
  specification_version: 4
135
120
  summary: Gem that contains some low level generic functions for all OpeNER components.
136
121
  test_files: []
137
- has_rdoc:
@@ -1,136 +0,0 @@
1
- module Opener
2
- module Core
3
- ##
4
- # Class for downloading and extracting external resources such as
5
- # models/lexicons.
6
- #
7
- # Resource paths specified using the `--resource-path` option are stored in
8
- # the environment variable `RESOURCE_PATH`. This variable should be used in
9
- # webservice/daemon code instead of said code re-parsing CLI arguments.
10
- #
11
- # @!attribute [r] http
12
- # @return [HTTPClient]
13
- #
14
- class ResourceSwitcher
15
- attr_reader :http
16
-
17
- def initialize
18
- @http = HTTPClient.new
19
- end
20
-
21
- ##
22
- # Adds extra CLI options to the given Slop instance.
23
- #
24
- # @param [Slop] slop
25
- #
26
- def bind(slop)
27
- slop.separator "\nResource Options:\n"
28
-
29
- slop.on :'resource-url=',
30
- 'URL pointing to a .zip/.tar.gz file to download',
31
- :as => String
32
-
33
- slop.on :'resource-path=',
34
- 'Path where the resources should be saved',
35
- :as => String
36
-
37
- # Hijack Slop's run block so we can inject our own code before it. This
38
- # is quite grotesque, but sadly the only way.
39
- old_runner = slop.instance_variable_get(:@runner)
40
-
41
- slop.run do |opts, args|
42
- if opts[:'resource-path'] and opts[:'resource-url']
43
- download_and_extract(opts[:'resource-url'], opts[:'resource-path'])
44
- end
45
-
46
- # Allow daemons/webservices to use the path without having to re-parse
47
- # CLI options.
48
- ENV['RESOURCE_PATH'] = opts[:'resource-path']
49
-
50
- old_runner.call(opts, args)
51
- end
52
- end
53
-
54
- ##
55
- # @param [String] url
56
- # @param [String] path
57
- #
58
- def download_and_extract(url, path)
59
- filename = filename_from_url(url)
60
- temp_path = File.join(path, filename)
61
-
62
- create_directory(path)
63
-
64
- download(url, temp_path)
65
-
66
- Archive.extract(temp_path, path)
67
-
68
- remove_file(temp_path)
69
- end
70
-
71
- ##
72
- # Downloads the given file.
73
- #
74
- # @param [String] url
75
- # @param [String] path
76
- #
77
- def download(url, path)
78
- File.open(path, 'w', :encoding => Encoding::BINARY) do |handle|
79
- http.get(url) do |chunk|
80
- handle.write(chunk)
81
- end
82
- end
83
- end
84
-
85
- ##
86
- # Returns the filename of the file located at `url`.
87
- #
88
- # @param [String] url
89
- # @return [String]
90
- #
91
- def filename_from_url(url)
92
- headers = get_headers(url)
93
-
94
- unless headers['Content-Disposition']
95
- raise "The URL #{url.inspect} did not return a Content-Disposition " \
96
- "header. This header is required to figure out the filename"
97
- end
98
-
99
- matches = headers['Content-Disposition'].match(/filename=(.+)/)
100
-
101
- if !matches or !matches[1]
102
- raise 'No filename could be found in the Content-Disposition header'
103
- end
104
-
105
- return matches[1]
106
- end
107
-
108
- ##
109
- # Creates the path. This method mainly exists to make testing a bit
110
- # easier.
111
- #
112
- # @param [String] path
113
- #
114
- def create_directory(path)
115
- FileUtils.mkdir_p(path)
116
- end
117
-
118
- ##
119
- # Removes the given file, mainly exists to make testing easier.
120
- #
121
- # @param [String] path
122
- #
123
- def remove_file(path)
124
- File.unlink(path)
125
- end
126
-
127
- ##
128
- # @param [String] url
129
- # @return [Hash]
130
- #
131
- def get_headers(url)
132
- return http.head(url).headers
133
- end
134
- end # ResourceSwitcher
135
- end # Core
136
- end # Opener