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 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,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JekyllHTTPRequest
4
+ VERSION = "0.0.1"
5
+ 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: []