local_pac 0.0.6 → 0.0.7
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.
- data/lib/local_pac/file_server.rb +2 -0
 - data/lib/local_pac/java_script_compressor.rb +18 -0
 - data/lib/local_pac/null_pac_file.rb +8 -0
 - data/lib/local_pac/pac_file.rb +5 -0
 - data/lib/local_pac/pac_file_validator.rb +12 -0
 - data/lib/local_pac/pac_manager.rb +20 -6
 - data/lib/local_pac/version.rb +1 -1
 - data/lib/local_pac.rb +4 -0
 - data/local_pac.gemspec +3 -0
 - data/spec/features/fetch_proxy_pac_spec.rb +23 -2
 - data/spec/java_script_compressor_spec.rb +39 -0
 - data/spec/null_pac_file_spec.rb +10 -0
 - data/spec/pac_file_spec.rb +11 -0
 - data/spec/pac_file_validator_spec.rb +31 -0
 - data/spec/pac_manager_spec.rb +19 -3
 - data/spec/support/string.rb +2 -0
 - metadata +57 -1
 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # encoding: utf-8
         
     | 
| 
      
 2 
     | 
    
         
            +
            module LocalPac
         
     | 
| 
      
 3 
     | 
    
         
            +
              class JavaScriptCompressor
         
     | 
| 
      
 4 
     | 
    
         
            +
                private
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                attr_reader :compressor
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                public
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                def initialize(compressor = Uglifier.new)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  @compressor = compressor
         
     | 
| 
      
 12 
     | 
    
         
            +
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                def prepare(file)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  file.compressed_content = compressor.compile(file.content)
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/local_pac/pac_file.rb
    CHANGED
    
    | 
         @@ -2,6 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            module LocalPac
         
     | 
| 
       3 
3 
     | 
    
         
             
              class PacFile
         
     | 
| 
       4 
4 
     | 
    
         
             
                attr_reader :path
         
     | 
| 
      
 5 
     | 
    
         
            +
                attr_accessor :compressed_content
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
       6 
7 
     | 
    
         
             
                def initialize(path)
         
     | 
| 
       7 
8 
     | 
    
         
             
                  @path = path
         
     | 
| 
         @@ -18,5 +19,9 @@ module LocalPac 
     | 
|
| 
       18 
19 
     | 
    
         
             
                def nil?
         
     | 
| 
       19 
20 
     | 
    
         
             
                  false
         
     | 
| 
       20 
21 
     | 
    
         
             
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                def prepare(handler)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  handler.prepare(self)
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
       21 
26 
     | 
    
         
             
              end
         
     | 
| 
       22 
27 
     | 
    
         
             
            end
         
     | 
| 
         @@ -3,22 +3,27 @@ module LocalPac 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
                private
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
                attr_reader :cache, :null_file, :paths, :creator
         
     | 
| 
      
 6 
     | 
    
         
            +
                attr_reader :cache, :null_file, :paths, :creator, :content_handler, :validator
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
                public
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
                def initialize(paths = default_paths, creator = PacFile)
         
     | 
| 
       11 
     | 
    
         
            -
                  @paths 
     | 
| 
       12 
     | 
    
         
            -
                  @creator 
     | 
| 
       13 
     | 
    
         
            -
                  @cache 
     | 
| 
       14 
     | 
    
         
            -
                  @null_file 
     | 
| 
      
 11 
     | 
    
         
            +
                  @paths           = Array(paths)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @creator         = creator
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @cache           = ActiveSupport::Cache::MemoryStore.new
         
     | 
| 
      
 14 
     | 
    
         
            +
                  @null_file       = proc { NullPacFile.new }
         
     | 
| 
      
 15 
     | 
    
         
            +
                  @content_handler = JavaScriptCompressor.new
         
     | 
| 
      
 16 
     | 
    
         
            +
                  @validator       = PacFileValidator.new
         
     | 
| 
       15 
17 
     | 
    
         
             
                end
         
     | 
| 
       16 
18 
     | 
    
         | 
| 
       17 
19 
     | 
    
         
             
                def find(name)
         
     | 
| 
       18 
20 
     | 
    
         
             
                  name = File.basename(name, '.pac').to_sym
         
     | 
| 
       19 
21 
     | 
    
         | 
| 
       20 
22 
     | 
    
         
             
                  cache.fetch(name) do
         
     | 
| 
       21 
     | 
    
         
            -
                     
     | 
| 
      
 23 
     | 
    
         
            +
                    file = valid_pac_files.find(null_file) { |f| f.name == name }
         
     | 
| 
      
 24 
     | 
    
         
            +
                    file.prepare(content_handler)
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                    file
         
     | 
| 
       22 
27 
     | 
    
         
             
                  end
         
     | 
| 
       23 
28 
     | 
    
         
             
                end
         
     | 
| 
       24 
29 
     | 
    
         | 
| 
         @@ -30,6 +35,15 @@ module LocalPac 
     | 
|
| 
       30 
35 
     | 
    
         
             
                  end
         
     | 
| 
       31 
36 
     | 
    
         
             
                end
         
     | 
| 
       32 
37 
     | 
    
         | 
| 
      
 38 
     | 
    
         
            +
                def valid_pac_files
         
     | 
| 
      
 39 
     | 
    
         
            +
                  files = []
         
     | 
| 
      
 40 
     | 
    
         
            +
                  pac_files.each do |f|
         
     | 
| 
      
 41 
     | 
    
         
            +
                    files << f if validator.valid?(f)
         
     | 
| 
      
 42 
     | 
    
         
            +
                  end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                  files
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
       33 
47 
     | 
    
         
             
                def default_paths
         
     | 
| 
       34 
48 
     | 
    
         
             
                  [
         
     | 
| 
       35 
49 
     | 
    
         
             
                    File.expand_path(File.join(ENV['HOME'], '.config', 'pacfiles')),
         
     | 
    
        data/lib/local_pac/version.rb
    CHANGED
    
    
    
        data/lib/local_pac.rb
    CHANGED
    
    | 
         @@ -1,6 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'sinatra'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'fileutils'
         
     | 
| 
       3 
3 
     | 
    
         
             
            require 'logger'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'uglifier'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'pac'
         
     | 
| 
       4 
6 
     | 
    
         | 
| 
       5 
7 
     | 
    
         
             
            require 'active_support/cache'
         
     | 
| 
       6 
8 
     | 
    
         | 
| 
         @@ -10,5 +12,7 @@ require 'local_pac/file_server' 
     | 
|
| 
       10 
12 
     | 
    
         
             
            require 'local_pac/pac_manager'
         
     | 
| 
       11 
13 
     | 
    
         
             
            require 'local_pac/pac_file'
         
     | 
| 
       12 
14 
     | 
    
         
             
            require 'local_pac/null_pac_file'
         
     | 
| 
      
 15 
     | 
    
         
            +
            require 'local_pac/java_script_compressor'
         
     | 
| 
      
 16 
     | 
    
         
            +
            require 'local_pac/pac_file_validator'
         
     | 
| 
       13 
17 
     | 
    
         | 
| 
       14 
18 
     | 
    
         
             
            module LocalPac; end
         
     | 
    
        data/local_pac.gemspec
    CHANGED
    
    
| 
         @@ -2,8 +2,15 @@ require 'spec_helper' 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            describe 'Fetch proxy pac' do
         
     | 
| 
       4 
4 
     | 
    
         
             
              context '/v1/pac' do
         
     | 
| 
      
 5 
     | 
    
         
            +
                let(:valid_pac_file) do <<-EOS.strip_heredoc
         
     | 
| 
      
 6 
     | 
    
         
            +
                                       function FindProxyForURL(url, host) {
         
     | 
| 
      
 7 
     | 
    
         
            +
                                         return "DIRECT"
         
     | 
| 
      
 8 
     | 
    
         
            +
                                       }
         
     | 
| 
      
 9 
     | 
    
         
            +
                                       EOS
         
     | 
| 
      
 10 
     | 
    
         
            +
                end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
       5 
12 
     | 
    
         
             
                it 'finds an existing proxy pac' do
         
     | 
| 
       6 
     | 
    
         
            -
                  create_file '.config/pacfiles/file1.pac',  
     | 
| 
      
 13 
     | 
    
         
            +
                  create_file '.config/pacfiles/file1.pac', valid_pac_file
         
     | 
| 
       7 
14 
     | 
    
         | 
| 
       8 
15 
     | 
    
         
             
                  env = {
         
     | 
| 
       9 
16 
     | 
    
         
             
                    'HOME' => working_directory,
         
     | 
| 
         @@ -11,7 +18,7 @@ describe 'Fetch proxy pac' do 
     | 
|
| 
       11 
18 
     | 
    
         | 
| 
       12 
19 
     | 
    
         
             
                  with_environment env, clear: true do
         
     | 
| 
       13 
20 
     | 
    
         
             
                    response = get('/v1/pac/file1.pac')
         
     | 
| 
       14 
     | 
    
         
            -
                    expect(response.body).to eq( 
     | 
| 
      
 21 
     | 
    
         
            +
                    expect(response.body).to eq(valid_pac_file)
         
     | 
| 
       15 
22 
     | 
    
         
             
                  end
         
     | 
| 
       16 
23 
     | 
    
         
             
                end
         
     | 
| 
       17 
24 
     | 
    
         | 
| 
         @@ -19,5 +26,19 @@ describe 'Fetch proxy pac' do 
     | 
|
| 
       19 
26 
     | 
    
         
             
                  response = get('/v1/pac/does_not_exist.pac')
         
     | 
| 
       20 
27 
     | 
    
         
             
                  expect(response.body).to include('does_not_exist.pac')
         
     | 
| 
       21 
28 
     | 
    
         
             
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                it 'compresses data for transit if requested' do
         
     | 
| 
      
 31 
     | 
    
         
            +
                  ['deflate','gzip', 'deflate,gzip','gzip,deflate'].each do|compression_method|
         
     | 
| 
      
 32 
     | 
    
         
            +
                    response = get('/v1/pac/does_not_exist.pac', {}, { 'HTTP_ACCEPT_ENCODING' => compression_method })
         
     | 
| 
      
 33 
     | 
    
         
            +
                    expect(response.headers['Content-Encoding']).to be
         
     | 
| 
      
 34 
     | 
    
         
            +
                  end
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                it 'does not compresses data for transit if not requested' do
         
     | 
| 
      
 38 
     | 
    
         
            +
                  ['deflate','gzip', 'deflate,gzip','gzip,deflate'].each do|compression_method|
         
     | 
| 
      
 39 
     | 
    
         
            +
                    response = get('/v1/pac/does_not_exist.pac')
         
     | 
| 
      
 40 
     | 
    
         
            +
                    expect(response.headers['Content-Encoding']).not_to be
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
       22 
43 
     | 
    
         
             
              end
         
     | 
| 
       23 
44 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,39 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # encoding: utf-8
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe JavaScriptCompressor do
         
     | 
| 
      
 5 
     | 
    
         
            +
              context '#prepare' do
         
     | 
| 
      
 6 
     | 
    
         
            +
                it 'compresses the javascript content' do
         
     | 
| 
      
 7 
     | 
    
         
            +
                  javascript = <<-EOS.strip_heredoc
         
     | 
| 
      
 8 
     | 
    
         
            +
                  function FindProxyForURL(url, host) {
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  dnsDomainIs(host, 'example.org');
         
     | 
| 
      
 11 
     | 
    
         
            +
                  shExpMatch(url, "*.local")
         
     | 
| 
      
 12 
     | 
    
         
            +
                  isInNet("127.0.0.1", "172.16.0.0", "255.240.0.0")
         
     | 
| 
      
 13 
     | 
    
         
            +
                  myIpAddress()
         
     | 
| 
      
 14 
     | 
    
         
            +
                  dnsResolve(host)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  isPlainHostName(host)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  localHostOrDomainIs(host, "www.google.com")
         
     | 
| 
      
 17 
     | 
    
         
            +
                  isResolvable(host)  
         
     | 
| 
      
 18 
     | 
    
         
            +
                  dnsDomainLevels(host)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  weekdayRange("MON", "FRI")
         
     | 
| 
      
 20 
     | 
    
         
            +
                  dateRange("JAN", "MAR") 
         
     | 
| 
      
 21 
     | 
    
         
            +
                  timeRange(8, 18)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  alert('asdf')
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                  }
         
     | 
| 
      
 25 
     | 
    
         
            +
                  EOS
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                  compressed_javascript = <<-EOS.strip_heredoc.chomp
         
     | 
| 
      
 28 
     | 
    
         
            +
                  function FindProxyForURL(e,a){dnsDomainIs(a,"example.org"),shExpMatch(e,"*.local"),isInNet("127.0.0.1","172.16.0.0","255.240.0.0"),myIpAddress(),dnsResolve(a),isPlainHostName(a),localHostOrDomainIs(a,"www.google.com"),isResolvable(a),dnsDomainLevels(a),weekdayRange("MON","FRI"),dateRange("JAN","MAR"),timeRange(8,18),alert("asdf")}
         
     | 
| 
      
 29 
     | 
    
         
            +
                  EOS
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                  file = double('file')
         
     | 
| 
      
 32 
     | 
    
         
            +
                  allow(file).to receive(:content).and_return(javascript)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  expect(file).to receive(:compressed_content=).with(compressed_javascript)
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                  compressor = JavaScriptCompressor.new
         
     | 
| 
      
 36 
     | 
    
         
            +
                  compressor.prepare(file)
         
     | 
| 
      
 37 
     | 
    
         
            +
                end
         
     | 
| 
      
 38 
     | 
    
         
            +
              end
         
     | 
| 
      
 39 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/null_pac_file_spec.rb
    CHANGED
    
    | 
         @@ -29,4 +29,14 @@ describe NullPacFile do 
     | 
|
| 
       29 
29 
     | 
    
         
             
                  expect(file.nil?).to be_true
         
     | 
| 
       30 
30 
     | 
    
         
             
                end
         
     | 
| 
       31 
31 
     | 
    
         
             
              end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
              context '#compressed_content' do
         
     | 
| 
      
 34 
     | 
    
         
            +
                it 'uses an external handler to compress content' do
         
     | 
| 
      
 35 
     | 
    
         
            +
                  handler = double('handler')
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                  file = create_file('file1.pac', 'content')
         
     | 
| 
      
 38 
     | 
    
         
            +
                  file = NullPacFile.new
         
     | 
| 
      
 39 
     | 
    
         
            +
                  file.prepare(handler)
         
     | 
| 
      
 40 
     | 
    
         
            +
                end
         
     | 
| 
      
 41 
     | 
    
         
            +
              end
         
     | 
| 
       32 
42 
     | 
    
         
             
            end
         
     | 
    
        data/spec/pac_file_spec.rb
    CHANGED
    
    | 
         @@ -30,4 +30,15 @@ describe PacFile do 
     | 
|
| 
       30 
30 
     | 
    
         
             
                  expect(file.nil?).to be_false
         
     | 
| 
       31 
31 
     | 
    
         
             
                end
         
     | 
| 
       32 
32 
     | 
    
         
             
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              context '#compressed_content' do
         
     | 
| 
      
 35 
     | 
    
         
            +
                it 'uses an external handler to compress content' do
         
     | 
| 
      
 36 
     | 
    
         
            +
                  handler = double('handler')
         
     | 
| 
      
 37 
     | 
    
         
            +
                  expect(handler).to receive(:prepare)
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                  file = create_file('file1.pac', 'content')
         
     | 
| 
      
 40 
     | 
    
         
            +
                  file = PacFile.new(file)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  file.prepare(handler)
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
              end
         
     | 
| 
       33 
44 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe PacFileValidator do
         
     | 
| 
      
 4 
     | 
    
         
            +
              context '#valid?' do
         
     | 
| 
      
 5 
     | 
    
         
            +
                let(:valid_pac_file) do <<-EOS.strip_heredoc
         
     | 
| 
      
 6 
     | 
    
         
            +
                                       function FindProxyForURL(url, host) {
         
     | 
| 
      
 7 
     | 
    
         
            +
                                         return "DIRECT"
         
     | 
| 
      
 8 
     | 
    
         
            +
                                       }
         
     | 
| 
      
 9 
     | 
    
         
            +
                                       EOS
         
     | 
| 
      
 10 
     | 
    
         
            +
                end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                let(:invalid_pac_file) do <<-EOS.strip_heredoc
         
     | 
| 
      
 13 
     | 
    
         
            +
                                       function FindProxyForURL(url, host) {
         
     | 
| 
      
 14 
     | 
    
         
            +
                                       EOS
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                it 'returns true if file is valid' do
         
     | 
| 
      
 18 
     | 
    
         
            +
                  file = double('PacFile')
         
     | 
| 
      
 19 
     | 
    
         
            +
                  expect(file).to receive(:content).and_return(valid_pac_file)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  validator = PacFileValidator.new
         
     | 
| 
      
 21 
     | 
    
         
            +
                  expect(validator.valid?(file)).to be_true
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                it 'returns true if file is invalid' do
         
     | 
| 
      
 25 
     | 
    
         
            +
                  file = double('PacFile')
         
     | 
| 
      
 26 
     | 
    
         
            +
                  expect(file).to receive(:content).and_return(invalid_pac_file)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  validator = PacFileValidator.new
         
     | 
| 
      
 28 
     | 
    
         
            +
                  expect(validator.valid?(file)).to be_false
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/pac_manager_spec.rb
    CHANGED
    
    | 
         @@ -3,9 +3,16 @@ require 'spec_helper' 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            describe PacManager do
         
     | 
| 
       5 
5 
     | 
    
         
             
              context '#find' do
         
     | 
| 
      
 6 
     | 
    
         
            +
                let(:valid_pac_file) do <<-EOS.strip_heredoc
         
     | 
| 
      
 7 
     | 
    
         
            +
                                       function FindProxyForURL(url, host) {
         
     | 
| 
      
 8 
     | 
    
         
            +
                                         return "DIRECT"
         
     | 
| 
      
 9 
     | 
    
         
            +
                                       }
         
     | 
| 
      
 10 
     | 
    
         
            +
                                       EOS
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
       6 
13 
     | 
    
         
             
                it 'finds the file in given path' do
         
     | 
| 
       7 
14 
     | 
    
         
             
                  directory = create_directory 'pac_files'
         
     | 
| 
       8 
     | 
    
         
            -
                  file_path = create_file 'pac_files/file1.pac'
         
     | 
| 
      
 15 
     | 
    
         
            +
                  file_path = create_file 'pac_files/file1.pac', valid_pac_file
         
     | 
| 
       9 
16 
     | 
    
         
             
                  create_file 'pac_files/file2.pac'
         
     | 
| 
       10 
17 
     | 
    
         | 
| 
       11 
18 
     | 
    
         
             
                  manager = PacManager.new(directory)
         
     | 
| 
         @@ -19,9 +26,9 @@ describe PacManager do 
     | 
|
| 
       19 
26 
     | 
    
         
             
                  expect(file.nil?).to be_true
         
     | 
| 
       20 
27 
     | 
    
         
             
                end
         
     | 
| 
       21 
28 
     | 
    
         | 
| 
       22 
     | 
    
         
            -
                it 'caches files' 
     | 
| 
      
 29 
     | 
    
         
            +
                it 'caches files' do
         
     | 
| 
       23 
30 
     | 
    
         
             
                  directory = create_directory 'pac_files'
         
     | 
| 
       24 
     | 
    
         
            -
                  file_path = create_file 'pac_files/file1.pac'
         
     | 
| 
      
 31 
     | 
    
         
            +
                  file_path = create_file 'pac_files/file1.pac', valid_pac_file
         
     | 
| 
       25 
32 
     | 
    
         | 
| 
       26 
33 
     | 
    
         
             
                  manager = PacManager.new(directory)
         
     | 
| 
       27 
34 
     | 
    
         
             
                  file = manager.find('file1')
         
     | 
| 
         @@ -32,5 +39,14 @@ describe PacManager do 
     | 
|
| 
       32 
39 
     | 
    
         
             
                  file = manager.find('file1')
         
     | 
| 
       33 
40 
     | 
    
         
             
                  expect(file.path).to eq(file_path)
         
     | 
| 
       34 
41 
     | 
    
         
             
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
                
         
     | 
| 
      
 43 
     | 
    
         
            +
                it 'ignores invalid pac files' do
         
     | 
| 
      
 44 
     | 
    
         
            +
                  directory = create_directory 'pac_files'
         
     | 
| 
      
 45 
     | 
    
         
            +
                  create_file 'pac_files/file1.pac', 'asdfasdf'
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                  manager = PacManager.new(directory)
         
     | 
| 
      
 48 
     | 
    
         
            +
                  file = manager.find('file1.pac')
         
     | 
| 
      
 49 
     | 
    
         
            +
                  expect(file.nil?).to be_true
         
     | 
| 
      
 50 
     | 
    
         
            +
                end
         
     | 
| 
       35 
51 
     | 
    
         
             
              end
         
     | 
| 
       36 
52 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: local_pac
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.7
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -59,6 +59,54 @@ dependencies: 
     | 
|
| 
       59 
59 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
       60 
60 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       61 
61 
     | 
    
         
             
                    version: '0'
         
     | 
| 
      
 62 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 63 
     | 
    
         
            +
              name: uglifier
         
     | 
| 
      
 64 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 65 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 66 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 67 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 68 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 69 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 70 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 71 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 72 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 73 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 74 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 75 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 76 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 77 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 78 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 79 
     | 
    
         
            +
              name: therubyracer
         
     | 
| 
      
 80 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 81 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 82 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 83 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 84 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 85 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 86 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 87 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 88 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 89 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 90 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 91 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 92 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 93 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 94 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 95 
     | 
    
         
            +
              name: pac
         
     | 
| 
      
 96 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 97 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 98 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 99 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 100 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 101 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 102 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 103 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 104 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 105 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 106 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 107 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 108 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 109 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       62 
110 
     | 
    
         
             
            description: ! 'This gem helps you to serve proxy.pacs locallly
         
     | 
| 
       63 
111 
     | 
    
         | 
| 
       64 
112 
     | 
    
         
             
            '
         
     | 
| 
         @@ -82,9 +130,11 @@ files: 
     | 
|
| 
       82 
130 
     | 
    
         
             
            - files/proxy.pac
         
     | 
| 
       83 
131 
     | 
    
         
             
            - lib/local_pac.rb
         
     | 
| 
       84 
132 
     | 
    
         
             
            - lib/local_pac/file_server.rb
         
     | 
| 
      
 133 
     | 
    
         
            +
            - lib/local_pac/java_script_compressor.rb
         
     | 
| 
       85 
134 
     | 
    
         
             
            - lib/local_pac/logger.rb
         
     | 
| 
       86 
135 
     | 
    
         
             
            - lib/local_pac/null_pac_file.rb
         
     | 
| 
       87 
136 
     | 
    
         
             
            - lib/local_pac/pac_file.rb
         
     | 
| 
      
 137 
     | 
    
         
            +
            - lib/local_pac/pac_file_validator.rb
         
     | 
| 
       88 
138 
     | 
    
         
             
            - lib/local_pac/pac_manager.rb
         
     | 
| 
       89 
139 
     | 
    
         
             
            - lib/local_pac/spec_helper.rb
         
     | 
| 
       90 
140 
     | 
    
         
             
            - lib/local_pac/version.rb
         
     | 
| 
         @@ -95,14 +145,17 @@ files: 
     | 
|
| 
       95 
145 
     | 
    
         
             
            - share/systemd/local_pac.socket
         
     | 
| 
       96 
146 
     | 
    
         
             
            - share/systemd/local_pac@.service
         
     | 
| 
       97 
147 
     | 
    
         
             
            - spec/features/fetch_proxy_pac_spec.rb
         
     | 
| 
      
 148 
     | 
    
         
            +
            - spec/java_script_compressor_spec.rb
         
     | 
| 
       98 
149 
     | 
    
         
             
            - spec/null_pac_file_spec.rb
         
     | 
| 
       99 
150 
     | 
    
         
             
            - spec/pac_file_spec.rb
         
     | 
| 
      
 151 
     | 
    
         
            +
            - spec/pac_file_validator_spec.rb
         
     | 
| 
       100 
152 
     | 
    
         
             
            - spec/pac_manager_spec.rb
         
     | 
| 
       101 
153 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       102 
154 
     | 
    
         
             
            - spec/support/environment.rb
         
     | 
| 
       103 
155 
     | 
    
         
             
            - spec/support/filesystem.rb
         
     | 
| 
       104 
156 
     | 
    
         
             
            - spec/support/rack_test.rb
         
     | 
| 
       105 
157 
     | 
    
         
             
            - spec/support/rspec.rb
         
     | 
| 
      
 158 
     | 
    
         
            +
            - spec/support/string.rb
         
     | 
| 
       106 
159 
     | 
    
         
             
            homepage: https://github.com/dg-vrnetze/local_pac
         
     | 
| 
       107 
160 
     | 
    
         
             
            licenses:
         
     | 
| 
       108 
161 
     | 
    
         
             
            - MIT
         
     | 
| 
         @@ -132,12 +185,15 @@ test_files: 
     | 
|
| 
       132 
185 
     | 
    
         
             
            - features/fetch_proxy_pac.feature
         
     | 
| 
       133 
186 
     | 
    
         
             
            - features/support/env.rb
         
     | 
| 
       134 
187 
     | 
    
         
             
            - spec/features/fetch_proxy_pac_spec.rb
         
     | 
| 
      
 188 
     | 
    
         
            +
            - spec/java_script_compressor_spec.rb
         
     | 
| 
       135 
189 
     | 
    
         
             
            - spec/null_pac_file_spec.rb
         
     | 
| 
       136 
190 
     | 
    
         
             
            - spec/pac_file_spec.rb
         
     | 
| 
      
 191 
     | 
    
         
            +
            - spec/pac_file_validator_spec.rb
         
     | 
| 
       137 
192 
     | 
    
         
             
            - spec/pac_manager_spec.rb
         
     | 
| 
       138 
193 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       139 
194 
     | 
    
         
             
            - spec/support/environment.rb
         
     | 
| 
       140 
195 
     | 
    
         
             
            - spec/support/filesystem.rb
         
     | 
| 
       141 
196 
     | 
    
         
             
            - spec/support/rack_test.rb
         
     | 
| 
       142 
197 
     | 
    
         
             
            - spec/support/rspec.rb
         
     | 
| 
      
 198 
     | 
    
         
            +
            - spec/support/string.rb
         
     | 
| 
       143 
199 
     | 
    
         
             
            has_rdoc: 
         
     |