webg 0.1.1 → 0.2.0

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.
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