jekyll-http-request 0.0.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 +7 -0
- data/lib/jekyll-http-request/cache.rb +33 -0
- data/lib/jekyll-http-request/filter.rb +50 -0
- data/lib/jekyll-http-request/version.rb +5 -0
- data/lib/jekyll-http-request.rb +27 -0
- metadata +124 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: dcc0217a1a595b3cc6ded1be8b2a59cfdadb8d2422b65895a5f8d81c1038a382
|
4
|
+
data.tar.gz: a04000988e6ea9df5295beccc1465cb5034717e7cabcf742c00db702b05cbbcb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9372e742ed0edfa32995de03f5e5293605e8f690cfcb0b6093a5b33f7a9597ba539291051c945a29fc32cb2b2a9b91bee23d21dc9106fe822ff676c1773ffa3b
|
7
|
+
data.tar.gz: 526b7dac5c2e46335efcd428cd9fb7abe48b0c003594e674cf8a3d35e80a3f3d63da262d8a397a8cba56cfba77439a6d530d53c9e3adec593646c51bd302dc8e
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Jekyll 4.x comptable caching class for pre-4.x compatibility
|
4
|
+
# ref: https://github.com/benbalter/jekyll-include-cache/blob/main/lib/jekyll-include-cache/cache.rb
|
5
|
+
module JekyllHTTPRequest
|
6
|
+
class Cache
|
7
|
+
extend Forwardable
|
8
|
+
|
9
|
+
def_delegators :@cache, :[]=, :key?, :delete, :clear
|
10
|
+
|
11
|
+
def initialize(_name = nil)
|
12
|
+
@cache = {}
|
13
|
+
end
|
14
|
+
|
15
|
+
def getset(key)
|
16
|
+
if key?(key)
|
17
|
+
@cache[key]
|
18
|
+
else
|
19
|
+
value = yield
|
20
|
+
@cache[key] = value
|
21
|
+
value
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def [](key)
|
26
|
+
if key?(key)
|
27
|
+
@cache[key]
|
28
|
+
else
|
29
|
+
raise
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "jekyll"
|
4
|
+
require "net/http"
|
5
|
+
|
6
|
+
module JekyllHTTPRequest
|
7
|
+
module Filter
|
8
|
+
def http_request(url, method, headers, body)
|
9
|
+
key = url + method + headers + body
|
10
|
+
JekyllHTTPRequest.cache.getset(key) do
|
11
|
+
Jekyll.logger.debug("requesting %s %s %s %s" % [method, url, headers, body])
|
12
|
+
|
13
|
+
uri = URI(url)
|
14
|
+
|
15
|
+
case method
|
16
|
+
when "POST"
|
17
|
+
req = Net::HTTP::Post.new(uri)
|
18
|
+
when "GET"
|
19
|
+
req = Net::HTTP::Get.new(uri)
|
20
|
+
else
|
21
|
+
raise ScriptError.new("unsupported method: should be POST or GET got " + method)
|
22
|
+
end
|
23
|
+
|
24
|
+
# add headers
|
25
|
+
if headers
|
26
|
+
headers.split("|").each do |header|
|
27
|
+
key, value = header.split(":")
|
28
|
+
req[key] = value
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# add body
|
33
|
+
if body
|
34
|
+
req.body = body
|
35
|
+
end
|
36
|
+
|
37
|
+
# check is https
|
38
|
+
isHTTPS = url.index("https") == 0
|
39
|
+
|
40
|
+
# do request
|
41
|
+
res = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => isHTTPS) { |http|
|
42
|
+
http.request(req)
|
43
|
+
}
|
44
|
+
|
45
|
+
# return response body
|
46
|
+
res.body
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module JekyllHTTPRequest
|
4
|
+
autoload :Filter, "jekyll-http-request/filter"
|
5
|
+
autoload :Cache, "jekyll-http-request/cache"
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def cache
|
9
|
+
@cache ||= if defined? Jekyll::Cache
|
10
|
+
Jekyll::Cache.new(self.class.name)
|
11
|
+
else
|
12
|
+
JekyllHTTPRequest::Cache.new
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def reset
|
17
|
+
JekyllHTTPRequest.cache.clear
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
Liquid::Template.register_filter(JekyllHTTPRequest::Filter)
|
23
|
+
|
24
|
+
# reset cache after site init https://jekyllrb.com/docs/plugins/hooks/#built-in-hook-owners-and-events
|
25
|
+
Jekyll::Hooks.register :site, :after_init do |_site|
|
26
|
+
JekyllHTTPRequest.reset
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jekyll-http-request
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jirawat Boonkumnerd
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-08-02 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: jekyll
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.7'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '5.0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.7'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '5.0'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: rspec
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '3.0'
|
40
|
+
type: :development
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '3.0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rake
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: bundler
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: webmock
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
description:
|
90
|
+
email:
|
91
|
+
- contact@ntsd.dev
|
92
|
+
executables: []
|
93
|
+
extensions: []
|
94
|
+
extra_rdoc_files: []
|
95
|
+
files:
|
96
|
+
- lib/jekyll-http-request.rb
|
97
|
+
- lib/jekyll-http-request/cache.rb
|
98
|
+
- lib/jekyll-http-request/filter.rb
|
99
|
+
- lib/jekyll-http-request/version.rb
|
100
|
+
homepage: https://github.com/ntsd/jekyll-http-request
|
101
|
+
licenses:
|
102
|
+
- MIT
|
103
|
+
metadata: {}
|
104
|
+
post_install_message:
|
105
|
+
rdoc_options: []
|
106
|
+
require_paths:
|
107
|
+
- lib
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
requirements: []
|
119
|
+
rubygems_version: 3.1.2
|
120
|
+
signing_key:
|
121
|
+
specification_version: 4
|
122
|
+
summary: Jekyll Liquid Filter for HTTP requests, helps you get HTTP response data
|
123
|
+
to the page content.
|
124
|
+
test_files: []
|