Skip to content

Commit e609513

Browse files
committed
Drop the dependency on webrick
It made sense to use these utils when they were part of the stdlib but now it's a bit silly to pull a whole webserver for 5 lines of code.
1 parent ebe6efa commit e609513

File tree

3 files changed

+23
-16
lines changed

3 files changed

+23
-16
lines changed

Gemfile.lock

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ PATH
55
activeresource (>= 4.1.0, < 6.0.0)
66
graphql-client
77
rack
8-
webrick
98

109
GEM
1110
remote: https://rubygems.org/
@@ -130,7 +129,6 @@ GEM
130129
addressable (>= 2.3.6)
131130
crack (>= 0.3.2)
132131
hashdiff (>= 0.4.0, < 2.0.0)
133-
webrick (1.7.0)
134132
zeitwerk (2.3.0)
135133

136134
PLATFORMS

lib/shopify_api/hmac_params.rb

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,33 @@
11
# frozen_string_literal: true
2-
require 'webrick/httputils'
32

43
module ShopifyAPI
54
module HmacParams
6-
extend WEBrick::HTTPUtils
5+
class << self
6+
def encode(params)
7+
params
8+
.except(:signature, :hmac, :action, :controller)
9+
.map { |k,v| sprintf("%s=%s", encode_key(k), encode_value(v)) }
10+
.sort.join("&")
11+
end
712

8-
def self.encode(params)
9-
params
10-
.except(:signature, :hmac, :action, :controller)
11-
.map { |k,v| sprintf("%s=%s", encode_key(k), encode_value(v)) }
12-
.sort.join("&")
13-
end
13+
KEY_REGEXP = /([#{Regexp.escape("&=%")}])/n
14+
def encode_key(key)
15+
_escape(key.to_s, KEY_REGEXP)
16+
end
1417

15-
def self.encode_key(key)
16-
_escape(key.to_s, _make_regex('&=%'))
17-
end
18+
VALUE_REGEXP = /([#{Regexp.escape("&%")}])/n
19+
def encode_value(value)
20+
_escape(value.to_s, VALUE_REGEXP)
21+
end
22+
23+
private
1824

19-
def self.encode_value(value)
20-
_escape(value.to_s, _make_regex('&%'))
25+
def _escape(str, regex)
26+
str = str.b
27+
str.gsub!(regex) {"%%%02X" % $1.ord}
28+
# %-escaped string should contain US-ASCII only
29+
str.force_encoding(Encoding::US_ASCII)
30+
end
2131
end
2232
end
2333
end

shopify_api.gemspec

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ Gem::Specification.new do |s|
3535
s.add_runtime_dependency("activeresource", ">= 4.1.0", "< 6.0.0")
3636
s.add_runtime_dependency("rack")
3737
s.add_runtime_dependency("graphql-client")
38-
s.add_runtime_dependency("webrick")
3938

4039
s.add_development_dependency("mocha", ">= 1.4.0")
4140
s.add_development_dependency("webmock")

0 commit comments

Comments
 (0)