webg 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/exe/webg +36 -4
  3. data/lib/webg/version.rb +1 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cfa6af7f755a2b188d08f3de795d98f506b207b30d56b738dccf661a3c64b479
4
- data.tar.gz: 222a93837ae14f17363812fbf1b55dbd164c0ffb5a9b85714f41d67a00ae37e4
3
+ metadata.gz: d0da83b75f201d6de0298ee4e5476b7938a168dc854d124176b32b2de787c0a3
4
+ data.tar.gz: 03e37742164d66ecdded90049451bfe53454508a3db4e4dd2fa08b53a7740c73
5
5
  SHA512:
6
- metadata.gz: 8d79e319a8c186ddd96fd262d0d7eca69b2b1d2dd3bd7cc6934f902a495468e96bb7c0d071cd006c0b801dc22d65ec6953af30d2e4e89500bd3e182819490b57
7
- data.tar.gz: 28120070caeb3c382d57eaf34197a8286a1300f6a20fa30b3b492838bebaf8fcc358d7f88e541aa752f6d66bdf87e56aed8de36d417b5a07be7a72bc83a095c1
6
+ metadata.gz: db0bac63d91251461323b2c058dca1e8f55c787246c0bedd698051dbabf1fc41f1317e8a38a8f48674bc03aff12dfde7127764d0cc9bb1643d78a940599c5b22
7
+ data.tar.gz: 9289f3b9f16f436479d64c692013369492ab6cd3a5487ad5044546e7f18269c6073195e079885480af66ee0833f736b35c5f9433e2f0988d48cad361d6888d5b
data/exe/webg CHANGED
@@ -11,13 +11,24 @@ module Fetcher
11
11
  end
12
12
 
13
13
  class Fetcher::Raw
14
+ DEFAULT_USER_AGENT = "webg/#{Webg::VERSION}"
15
+
16
+ def initialize(headers)
17
+ @headers = headers
18
+ end
19
+
14
20
  def call(uri)
15
21
  require("open-uri")
16
- return uri.read
22
+ return uri.read({"User-Agent" => DEFAULT_USER_AGENT}.merge(@headers))
17
23
  end
18
24
  end
19
25
 
20
26
  class Fetcher::Firefox
27
+ def initialize(headers)
28
+ return if headers.empty?
29
+ raise "specifying headers on Firefox is not supported"
30
+ end
31
+
21
32
  def call(uri)
22
33
  require("capybara")
23
34
  session = Capybara::Session.new(:selenium_headless)
@@ -65,6 +76,7 @@ end
65
76
  def parse_options(argv)
66
77
  argv = argv.dup
67
78
  fetcher = :raw
79
+ headers = {}
68
80
  css_selectors = []
69
81
  text = false
70
82
 
@@ -79,6 +91,26 @@ def parse_options(argv)
79
91
  ) do
80
92
  fetcher = :firefox
81
93
  end
94
+ parser.on(
95
+ "--user-agent=USER-AGENT",
96
+ "specify User-Agent header",
97
+ ) do |ua|
98
+ headers["User-Agent"] = ua
99
+ end
100
+ parser.on(
101
+ "--referer=REFERER",
102
+ "specify Referer header",
103
+ ) do |referer|
104
+ headers["Referer"] = referer
105
+ end
106
+ parser.on(
107
+ "--header=HEADER-LINE",
108
+ "specify various headers in HTTP request. e.g: --header='Accept-Language: ja'"
109
+ ) do |header_line|
110
+ md = /:\s+/.match(header_line)
111
+ raise "cannot parse header-line(#{header_line})" if !md
112
+ headers[md.pre_match] = md.post_match
113
+ end
82
114
  parser.on(
83
115
  "--css-selector=SELECTOR",
84
116
  "specify css selector to filter output.",
@@ -100,13 +132,13 @@ def parse_options(argv)
100
132
  end
101
133
  uri = URI(uri)
102
134
 
103
- return uri, fetcher, css_selectors, text
135
+ return uri, fetcher, headers, css_selectors, text
104
136
  end
105
137
 
106
138
  begin
107
- uri, fetcher_name, css_selectors, text = parse_options(ARGV)
139
+ uri, fetcher_name, headers, css_selectors, text = parse_options(ARGV)
108
140
 
109
- fetcher = Fetcher.const_get(fetcher_name.capitalize).new
141
+ fetcher = Fetcher.const_get(fetcher_name.capitalize).new(headers)
110
142
  selector = css_selectors.empty? ? Selector::All.new : Selector::Css.new(css_selectors)
111
143
  output_method_name = text ? :text : :raw
112
144
 
data/lib/webg/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Webg
4
- VERSION = "0.1.1"
4
+ VERSION = "0.2.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuya.Nishida.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-06 00:00:00.000000000 Z
11
+ date: 2021-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara