embulk-parser-query_string 0.3.0 → 0.3.1
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 +4 -4
- data/.travis.yml +6 -10
- data/.travis.yml.erb +7 -6
- data/CHANGELOG.md +6 -0
- data/embulk-parser-query_string.gemspec +2 -1
- data/lib/embulk/parser/query_string.rb +22 -4
- data/test/embulk/guess/test_query_string.rb +1 -1
- data/test/embulk/parser/test_query_string.rb +16 -1
- metadata +16 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7bf28a70ddd9f3ec7210201a7f027c05fe675ef7
|
|
4
|
+
data.tar.gz: 2d4fe6c85982222f3fb9eef01cc99efda5f0bba4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8aee02b66458e5ff1eb71de855030a0e56162cb1c1ed1ad0953498ce27c4782d9c3297bacf513fbb7f704447778453bde3e767fb9dc537a3a8ec1d31c0c60f2f
|
|
7
|
+
data.tar.gz: 83cabae95cba6fa468c7e8fcd97ce1bcdb831d7859b66161c7c6d8379b2bfdc61e178eaa7d0a84337409a87f436bce31f3ff5f9e6f9a83bc15e991876350c800
|
data/.travis.yml
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
language: ruby
|
|
2
2
|
rvm:
|
|
3
|
-
- jruby-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
- jruby-9.0.1.0
|
|
4
|
+
jdk:
|
|
5
|
+
- oraclejdk8
|
|
6
|
+
env:
|
|
7
|
+
global:
|
|
8
|
+
- JRUBY_OPTS="-Xcli.debug=true --debug"
|
|
8
9
|
|
|
9
10
|
addons:
|
|
10
11
|
code_climate:
|
|
@@ -13,8 +14,6 @@ addons:
|
|
|
13
14
|
notifications:
|
|
14
15
|
slack:
|
|
15
16
|
secure: "QRZ6zQxcRdN2XylIz+b46TbYIv7x5Ko7Y0Mi0aGbf7Wg1xfnS4X2FZKp8gF+RH1qjT6CYsQFUpPBhPVCMx0fP0ik5/gBrdngrj0htludvQ5CTK2oVegM1VC5NSn+gi8bt2F20Ode9fxU5OS1HDzNR9sjPz3W7miMUNDZoYPy77Om/CvmVkBbGyMkWnfwhEvwnL8JpBNpklDvrUUKznNsAcSbKQBMBAglFMds/OaHXCkK142zMbSlHMctch1VDAKhX9/6M3v8v6ZRheX68+VVCz3nTrTF0/lnYh3ig9ey3DNlgkZUqK2gmypnhTE6tpeibHdyVa8qOMNzyAgltu1qIhFHN390WMk9gZXEcvWG3m++PMAIKKtd4varbH1vdCeHOGUV7GRgarcfSMvJ54I9xc5GkUnAhjRKj8xDzYzhkXwApD8eqWb2RgGXUm6G4cKj0MeQ4WBqHr9FOW/4EJcZoztFi0YlP7KE+6xptBJU479KSsv31BwHrMfblObOOj58C7gUfdbTCByxng0u1axxvixL8zJwgHvFND3/4yoXoCCgm0DXBPbi6B5xpt8QmN6K4E5sMGrppTI7VwJqkcwkVD0EEeCedRNiWLTaxlKpLYxYnoXwEnpm9o2WXWa+PjkWeawsnJvV5IAt6oJhaK22VqJN86Macuu+nCdeF1/0TZU="
|
|
16
|
-
jdk:
|
|
17
|
-
- oraclejdk8
|
|
18
17
|
|
|
19
18
|
gemfile:
|
|
20
19
|
- gemfiles/embulk-0.7-latest
|
|
@@ -23,6 +22,3 @@ gemfile:
|
|
|
23
22
|
- gemfiles/embulk-0.7.4
|
|
24
23
|
- gemfiles/embulk-latest
|
|
25
24
|
|
|
26
|
-
matrix:
|
|
27
|
-
allow_failures:
|
|
28
|
-
- gemfile: gemfiles/embulk-0.6.22
|
data/.travis.yml.erb
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
language: ruby
|
|
2
2
|
rvm:
|
|
3
|
-
- jruby-
|
|
3
|
+
- jruby-9.0.1.0
|
|
4
|
+
jdk:
|
|
5
|
+
- oraclejdk8
|
|
6
|
+
env:
|
|
7
|
+
global:
|
|
8
|
+
- JRUBY_OPTS="-Xcli.debug=true --debug"
|
|
9
|
+
|
|
4
10
|
addons:
|
|
5
11
|
code_climate:
|
|
6
12
|
repo_token:
|
|
@@ -8,14 +14,9 @@ addons:
|
|
|
8
14
|
notifications:
|
|
9
15
|
slack:
|
|
10
16
|
secure: "QRZ6zQxcRdN2XylIz+b46TbYIv7x5Ko7Y0Mi0aGbf7Wg1xfnS4X2FZKp8gF+RH1qjT6CYsQFUpPBhPVCMx0fP0ik5/gBrdngrj0htludvQ5CTK2oVegM1VC5NSn+gi8bt2F20Ode9fxU5OS1HDzNR9sjPz3W7miMUNDZoYPy77Om/CvmVkBbGyMkWnfwhEvwnL8JpBNpklDvrUUKznNsAcSbKQBMBAglFMds/OaHXCkK142zMbSlHMctch1VDAKhX9/6M3v8v6ZRheX68+VVCz3nTrTF0/lnYh3ig9ey3DNlgkZUqK2gmypnhTE6tpeibHdyVa8qOMNzyAgltu1qIhFHN390WMk9gZXEcvWG3m++PMAIKKtd4varbH1vdCeHOGUV7GRgarcfSMvJ54I9xc5GkUnAhjRKj8xDzYzhkXwApD8eqWb2RgGXUm6G4cKj0MeQ4WBqHr9FOW/4EJcZoztFi0YlP7KE+6xptBJU479KSsv31BwHrMfblObOOj58C7gUfdbTCByxng0u1axxvixL8zJwgHvFND3/4yoXoCCgm0DXBPbi6B5xpt8QmN6K4E5sMGrppTI7VwJqkcwkVD0EEeCedRNiWLTaxlKpLYxYnoXwEnpm9o2WXWa+PjkWeawsnJvV5IAt6oJhaK22VqJN86Macuu+nCdeF1/0TZU="
|
|
11
|
-
jdk:
|
|
12
|
-
- oraclejdk8
|
|
13
17
|
|
|
14
18
|
gemfile:
|
|
15
19
|
<% versions.each do |file| -%>
|
|
16
20
|
- gemfiles/<%= file %>
|
|
17
21
|
<% end -%>
|
|
18
22
|
|
|
19
|
-
matrix:
|
|
20
|
-
allow_failures:
|
|
21
|
-
- gemfile: gemfiles/embulk-0.6.22
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## 0.3.1 - 2015-10-20
|
|
2
|
+
|
|
3
|
+
* [enhancement] Raise ConfigError if type cast failed [#34](https://github.com/treasure-data/embulk-parser-query_string/pull/34)
|
|
4
|
+
* [maintenance] Use addressable gem to parse uri [#35](https://github.com/treasure-data/embulk-parser-query_string/pull/35)
|
|
5
|
+
* [maintenance] Fix coverage [#36](https://github.com/treasure-data/embulk-parser-query_string/pull/36)
|
|
6
|
+
|
|
1
7
|
## 0.3.0 - 2015-10-06
|
|
2
8
|
|
|
3
9
|
**This version supports Embulk 0.7 or later, and drops Embulk 0.6 or earlier, so if you want to use this plugin with Embulk 0.6 or earlier, please use 0.2.1.**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
Gem::Specification.new do |spec|
|
|
3
3
|
spec.name = "embulk-parser-query_string"
|
|
4
|
-
spec.version = "0.3.
|
|
4
|
+
spec.version = "0.3.1"
|
|
5
5
|
spec.authors = ["yoshihara", "uu59"]
|
|
6
6
|
spec.summary = "Query String parser plugin for Embulk"
|
|
7
7
|
spec.description = "Parses Query String files read by other file input plugins."
|
|
@@ -13,6 +13,7 @@ Gem::Specification.new do |spec|
|
|
|
13
13
|
spec.test_files = spec.files.grep(%r{^(test|spec)/})
|
|
14
14
|
spec.require_paths = ["lib"]
|
|
15
15
|
|
|
16
|
+
spec.add_dependency 'addressable'
|
|
16
17
|
spec.add_development_dependency 'embulk', [">= 0.7.2", "< 1.0"]
|
|
17
18
|
spec.add_development_dependency 'bundler', ['~> 1.0']
|
|
18
19
|
spec.add_development_dependency 'everyleaf-embulk_helper'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require "uri"
|
|
1
|
+
require "addressable/uri"
|
|
2
2
|
|
|
3
3
|
module Embulk
|
|
4
4
|
module Parser
|
|
@@ -50,6 +50,20 @@ module Embulk
|
|
|
50
50
|
page_builder.finish
|
|
51
51
|
end
|
|
52
52
|
|
|
53
|
+
def self.valid_query_string?(qs)
|
|
54
|
+
if qs.match(/[\s]/)
|
|
55
|
+
Embulk.logger.warn "'#{qs}' contains unescaped space"
|
|
56
|
+
return false
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
if qs.match(/[^\x20-\x7e]/)
|
|
60
|
+
Embulk.logger.warn "'#{qs}' contains non-ascii character (maybe unescaped)"
|
|
61
|
+
return false
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
true
|
|
65
|
+
end
|
|
66
|
+
|
|
53
67
|
def self.parse(line, options = {})
|
|
54
68
|
if options[:capture]
|
|
55
69
|
line = line.match(options[:capture]).to_a[1] || ""
|
|
@@ -64,7 +78,12 @@ module Embulk
|
|
|
64
78
|
end
|
|
65
79
|
|
|
66
80
|
begin
|
|
67
|
-
|
|
81
|
+
uri = Addressable::URI.parse("?#{line}")
|
|
82
|
+
if valid_query_string?(uri.query)
|
|
83
|
+
uri.query_values(Hash)
|
|
84
|
+
else
|
|
85
|
+
nil
|
|
86
|
+
end
|
|
68
87
|
rescue ArgumentError
|
|
69
88
|
Embulk.logger.warn "Failed parse: #{line}"
|
|
70
89
|
nil
|
|
@@ -95,8 +114,7 @@ module Embulk
|
|
|
95
114
|
value.to_s
|
|
96
115
|
end
|
|
97
116
|
rescue => e
|
|
98
|
-
|
|
99
|
-
raise e
|
|
117
|
+
raise ConfigError.new("Cast failed '#{value}' as '#{column.type}' (key is '#{column.name}')")
|
|
100
118
|
end
|
|
101
119
|
end
|
|
102
120
|
|
|
@@ -6,6 +6,7 @@ module Embulk
|
|
|
6
6
|
module Parser
|
|
7
7
|
class QueryStringTest < Test::Unit::TestCase
|
|
8
8
|
class TestParse < self
|
|
9
|
+
|
|
9
10
|
def test_without_options
|
|
10
11
|
result = QueryString.parse(line)
|
|
11
12
|
assert_equal(expected, result)
|
|
@@ -32,7 +33,7 @@ module Embulk
|
|
|
32
33
|
end
|
|
33
34
|
|
|
34
35
|
def test_with_invalid
|
|
35
|
-
mock(Embulk.logger).warn(
|
|
36
|
+
mock(Embulk.logger).warn(/'#{invalid_line}'/) # display whole line if given line is invalid
|
|
36
37
|
result = QueryString.parse(invalid_line)
|
|
37
38
|
assert_nil(result)
|
|
38
39
|
end
|
|
@@ -94,6 +95,16 @@ module Embulk
|
|
|
94
95
|
plugin.send(:process_line, value_nonexist_line)
|
|
95
96
|
end
|
|
96
97
|
|
|
98
|
+
def test_wrong_type_configured
|
|
99
|
+
# NOTE: assert_raise(Embulk::ConfigError) do ... end can't detect correctly
|
|
100
|
+
begin
|
|
101
|
+
plugin.send(:process_line, value_invalid_data_type)
|
|
102
|
+
assert false
|
|
103
|
+
rescue => e
|
|
104
|
+
assert e.is_a?(Embulk::ConfigError)
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
97
108
|
private
|
|
98
109
|
|
|
99
110
|
def line
|
|
@@ -103,6 +114,10 @@ module Embulk
|
|
|
103
114
|
def value_nonexist_line
|
|
104
115
|
"foo=FOO&bar=&baz=2015-07-08T16:25:46"
|
|
105
116
|
end
|
|
117
|
+
|
|
118
|
+
def value_invalid_data_type
|
|
119
|
+
"foo=FOO&bar=&baz=not+a+time"
|
|
120
|
+
end
|
|
106
121
|
end
|
|
107
122
|
|
|
108
123
|
def test_transaction
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: embulk-parser-query_string
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- yoshihara
|
|
@@ -9,8 +9,22 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2015-10-
|
|
12
|
+
date: 2015-10-20 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
name: addressable
|
|
21
|
+
prerelease: false
|
|
22
|
+
type: :runtime
|
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
24
|
+
requirements:
|
|
25
|
+
- - ">="
|
|
26
|
+
- !ruby/object:Gem::Version
|
|
27
|
+
version: '0'
|
|
14
28
|
- !ruby/object:Gem::Dependency
|
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
|
16
30
|
requirements:
|