panthro 0.0.5 → 0.1.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 +5 -5
- data/bin/panthro +5 -1
- data/config.ru +0 -2
- data/lib/panthro.rb +29 -16
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 3480979b92147050396d121f2bd8783cdae89f3246b43374ebad0db4304857ba
|
4
|
+
data.tar.gz: 87286819cb54e5a9338d2e662e76d8cd90c89348ef924a00a2f9bf433293c94f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a1a6417ca97dc6b0385bbea9918f8dd05165be9cb45b4b994844de98c17941c7f9037c11ea98fe3138b8de3ba576bb7b2ca4a57c393bf5a9472ffd648d668a7
|
7
|
+
data.tar.gz: 92b58936e0ed67c91a373c5dba2ff288cc86dc67f4051ae808c2f514099f1ee876dcbeb40608dc48c2399e6a1ca2f9dd187b5f227e14b870dc0f06d12fdb56dd
|
data/bin/panthro
CHANGED
@@ -6,9 +6,10 @@ NAME
|
|
6
6
|
panthro -- The rubygems proxy cache
|
7
7
|
|
8
8
|
SYNOPSYS
|
9
|
-
panthro [--start | --stop]
|
9
|
+
panthro [--start | --startd | --stop]
|
10
10
|
|
11
11
|
DESCRIPTION
|
12
|
+
!!! This project is a toy, is not usable for serious !!!
|
12
13
|
The idea is to speed up the gem command caching gem and spec files. Rubygems proxy cache Is a rack app that cache static files into a local machine, where is runing. Is does not cache /api calls.
|
13
14
|
EOS
|
14
15
|
|
@@ -20,6 +21,9 @@ pid_file = "#{Panthro.path}/rack.pid"
|
|
20
21
|
case ARGV[0]
|
21
22
|
when '--start'
|
22
23
|
puts "Starting panthro server..."
|
24
|
+
`cd #{path} && rackup`
|
25
|
+
when '--startd'
|
26
|
+
puts "Starting panthro daemon server..."
|
23
27
|
`cd #{path} && rackup --daemonize --pid #{pid_file}`
|
24
28
|
when '--stop'
|
25
29
|
puts "Stopping panthro server..."
|
data/config.ru
CHANGED
data/lib/panthro.rb
CHANGED
@@ -1,20 +1,21 @@
|
|
1
1
|
require 'net/http'
|
2
2
|
|
3
3
|
class Panthro
|
4
|
+
class << self
|
5
|
+
attr_accessor :path, :mirror, :disable_logs
|
6
|
+
end
|
4
7
|
|
5
8
|
def call env
|
6
9
|
@env = env
|
7
10
|
@file_path = "#{ self.class.path }#{ env['PATH_INFO'] }"
|
11
|
+
@path = @env['PATH_INFO']
|
12
|
+
@method = @env['REQUEST_METHOD']
|
8
13
|
|
9
|
-
return
|
14
|
+
return get_from_mirror if (@path == '/' or @path =~ /\/info/)
|
15
|
+
return get_from_cache if File.exist? @file_path
|
10
16
|
get_from_mirror
|
11
17
|
end
|
12
18
|
|
13
|
-
class << self
|
14
|
-
attr_accessor :path
|
15
|
-
attr_accessor :mirror
|
16
|
-
end
|
17
|
-
|
18
19
|
private
|
19
20
|
|
20
21
|
def uri_str
|
@@ -24,45 +25,57 @@ class Panthro
|
|
24
25
|
end
|
25
26
|
|
26
27
|
def get uri
|
27
|
-
http
|
28
|
-
|
29
|
-
|
30
|
-
resp
|
28
|
+
http = Net::HTTP.new( uri.host, uri.port )
|
29
|
+
http.use_ssl = true
|
30
|
+
request = Net::HTTP::Get.new( uri.request_uri )
|
31
|
+
resp = http.request( request ) if @method == 'GET'
|
32
|
+
resp = http.head(@path) if @method == 'HEAD'
|
33
|
+
resp = get( URI resp['location'] ) if resp.code == '302'
|
31
34
|
resp
|
32
35
|
end
|
33
36
|
|
34
37
|
def get_from_mirror
|
35
38
|
@uri = URI uri_str
|
39
|
+
log(:get_mirror)
|
36
40
|
@resp = get @uri
|
37
|
-
write_cache!
|
38
|
-
|
41
|
+
write_cache! unless (@path == '/' or @path =~ /\/info/)
|
39
42
|
headers = @resp.to_hash
|
40
43
|
headers.delete 'transfer-encoding'
|
41
44
|
headers.each{ |k,v| headers[k] = v.first }
|
42
45
|
|
43
|
-
[ @resp.code, headers, [ @resp.body ] ]
|
46
|
+
[ @resp.code.to_i, headers, [ @resp.body.to_s ] ]
|
44
47
|
end
|
45
48
|
|
46
49
|
def write_cache!
|
47
|
-
return if @uri.path =~ /\/api\//
|
48
50
|
return unless @resp.code =~ /20/
|
49
51
|
|
52
|
+
log(:write_cache)
|
50
53
|
dir = File.dirname @file_path
|
51
54
|
FileUtils.mkdir_p dir unless File.directory? dir
|
52
|
-
|
53
55
|
open( @file_path, "wb" ) do |file|
|
54
56
|
file.write @resp.body
|
55
57
|
end
|
56
58
|
end
|
57
59
|
|
58
60
|
def get_from_cache
|
61
|
+
log(:get_cache)
|
59
62
|
file = File.open @file_path, "r"
|
60
63
|
content = file.read
|
61
64
|
file.close
|
62
65
|
|
63
66
|
[ 200, {}, [ content ] ]
|
64
67
|
end
|
68
|
+
|
69
|
+
def log(action)
|
70
|
+
actions = {
|
71
|
+
:get_mirror => "[ GET MIRROR ] #{@uri}",
|
72
|
+
:get_cache => "[ GET CACHE ] #{@file_path}",
|
73
|
+
:write_cache => "[ WRITE CACHE ] #{@file_path}"
|
74
|
+
}
|
75
|
+
|
76
|
+
puts actions[action] unless Panthro.disable_logs
|
77
|
+
end
|
65
78
|
end
|
66
79
|
|
67
80
|
Panthro.path = "#{ ENV['HOME'] }/.panthro"
|
68
|
-
Panthro.mirror = '
|
81
|
+
Panthro.mirror = 'https://index.rubygems.org'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: panthro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gaston Ramos
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-10-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cutest
|
@@ -30,17 +30,18 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1
|
33
|
+
version: '3.1'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '1
|
41
|
-
description:
|
42
|
-
|
43
|
-
|
40
|
+
version: '3.1'
|
41
|
+
description: "!!! This project is a toy, is not usable for serious !!! The idea is
|
42
|
+
to speed up the gem command caching gem and spec files. Rubygems proxy cache Is
|
43
|
+
a rack app that cache static files into a local machine, where is runing. Is does
|
44
|
+
not cache /api calls."
|
44
45
|
email: ramos.gaston@gmail.com
|
45
46
|
executables:
|
46
47
|
- panthro
|
@@ -249,16 +250,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
249
250
|
requirements:
|
250
251
|
- - ">="
|
251
252
|
- !ruby/object:Gem::Version
|
252
|
-
version: '0'
|
253
|
+
version: '3.0'
|
253
254
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
254
255
|
requirements:
|
255
256
|
- - ">="
|
256
257
|
- !ruby/object:Gem::Version
|
257
258
|
version: '0'
|
258
259
|
requirements: []
|
259
|
-
|
260
|
-
|
261
|
-
signing_key:
|
260
|
+
rubygems_version: 3.5.22
|
261
|
+
signing_key:
|
262
262
|
specification_version: 4
|
263
263
|
summary: 'Panthro: the rubygems proxy cache'
|
264
264
|
test_files: []
|