proximity 1.0.0 → 1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 50d50c9dd93e7f7c305900b031fd2a309813fa3b
4
- data.tar.gz: 7dc0a7fe4f64cbca804619630daef3cb283c1103
3
+ metadata.gz: 57061cf9b5b09837dec718504fe8fbfa6c2488f4
4
+ data.tar.gz: f1000c4fc3f1653b409c68845e6fc63f268d064d
5
5
  SHA512:
6
- metadata.gz: 8a7564c57cf8b7eb0b0db32fa592fba05d8ef2cfa96db70204b9165bde1da38869365ea9efeede63ca65d4df4f52f1d466bbb49fd7e37f54a17cd0b1f6866b81
7
- data.tar.gz: 3f528ffeb8f9c21e2a774c8e0adaf683fb4bf4a361585d9a7cc11dd372b1b07f020be0ecabcc584ce5a3e48543707d6ac97762040e5cf50d6c73abc63d01f997
6
+ metadata.gz: 601a50c2cf27e9f9b84e67897895eff2c0af315d7ba5e36720b37950c1e2150e2ffd482aef4f4b9bb59d9bd188be24c03e49d1bb47999d2d9c09e9aa0ef67d14
7
+ data.tar.gz: 75c5ab092c4c5a4fb78c1f3b643e263948bc78eff9c06373d5e2d2fba5015bb969bf5df4fcee79a3aec1b4134754bf65270b8be2ff47c77b03c2079957318939
data/.gitignore CHANGED
@@ -17,3 +17,4 @@ spec/reports
17
17
  test/tmp
18
18
  test/version_tmp
19
19
  tmp
20
+ vendor/bundle
data/.travis.yml CHANGED
@@ -1,3 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.0.0
3
+ - "2.0.0"
4
+ - "1.9.3"
5
+ - "jruby"
6
+ script: bundle exec rspec spec
data/Gemfile CHANGED
@@ -2,3 +2,4 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in proximity.gemspec
4
4
  gemspec
5
+ gem 'coveralls', require: false
data/README.md CHANGED
@@ -4,6 +4,12 @@
4
4
  [`Journey`](https://github.com/rails/journey) for routing. `Journey` is
5
5
  vendored into `ActionPack` as of [`Rails`](https://github.com/rails/rails/tree/master/actionpack/lib/action_dispatch/journey)4.
6
6
 
7
+ [![Gem Version](https://badge.fury.io/rb/proximity.png)](http://badge.fury.io/rb/proximity)
8
+ [![Code Climate](https://codeclimate.com/github/adamhunter/proximity.png)](https://codeclimate.com/github/adamhunter/proximity)
9
+ [![Build Status](https://travis-ci.org/adamhunter/proximity.png?branch=master)](https://travis-ci.org/adamhunter/proximity)
10
+ [![Coverage Status](https://coveralls.io/repos/adamhunter/proximity/badge.png)](https://coveralls.io/r/adamhunter/proximity)
11
+ [![Dependency Status](https://gemnasium.com/adamhunter/proximity.png)](https://gemnasium.com/adamhunter/proximity)
12
+
7
13
  ## Usage
8
14
  1. Create your own subclass of `Rack::Proxy`.
9
15
  2. `include Proximity` into that class.
@@ -17,12 +23,18 @@ vendored into `ActionPack` as of [`Rails`](https://github.com/rails/rails/tree/m
17
23
  ## Example
18
24
  ```ruby
19
25
  # my_proxy.rb
20
- class MyProxy < RackProxy
26
+ class MyProxy < Rack::Proxy
21
27
  include Proximity
22
28
  end
23
29
 
24
30
  # proxies.rb
25
31
  MyProxy.routes.draw do
32
+ route 'example' => 'example.com/api' do
33
+ proxy 'active' => 'accounts/active'
34
+ proxy 'accounts' => same, formats %w[json csv]
35
+ proxy 'accounts/:account_id' => same
36
+ proxy 'crazy/:id/:account_id' => 'fluffy/kitties/:id-:account_id'
37
+ end
26
38
  end
27
39
  ```
28
40
 
@@ -7,11 +7,11 @@ module Proximity
7
7
  end
8
8
 
9
9
  def target
10
- with_format "#{route_set.target}#{@target == Same ? @source : @target}"
10
+ with_format "#{route_set.target}#{slashify determine_target}"
11
11
  end
12
12
 
13
13
  def source
14
- with_format "#{route_set.source}#{@source}"
14
+ with_format "#{route_set.source}#{slashify @source}"
15
15
  end
16
16
 
17
17
  def pattern
@@ -24,10 +24,19 @@ module Proximity
24
24
 
25
25
  private
26
26
 
27
+ def slashify(path)
28
+ return if path.blank?
29
+ "/#{path}"
30
+ end
31
+
27
32
  def with_format(url)
28
33
  format.nil? ? url : "#{url}.#{format}"
29
34
  end
30
35
 
36
+ def determine_target
37
+ @target == Same ? @source : @target
38
+ end
39
+
31
40
  attr_reader :route_set
32
41
 
33
42
  Same = Class.new
@@ -43,14 +43,13 @@ module Proximity
43
43
  end
44
44
 
45
45
  def normalize_source(source)
46
- source = source.starts_with?('/') ? source : "/#{source}"
47
- source = source.ends_with?('/') ? source : "#{source}/"
46
+ source.starts_with?('/') ? source : "/#{source}"
48
47
  end
49
48
 
50
49
  def normalize_target(target)
51
50
  uri = URI.parse(target)
52
51
  target = uri.scheme.nil? ? "#{self.class.default_scheme}://#{target}" : target
53
- env_tld target.ends_with?('/') ? target : "#{target}/"
52
+ env_tld target
54
53
  end
55
54
 
56
55
  def env_tld(url)
@@ -1,3 +1,3 @@
1
1
  module Proximity
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
data/lib/proximity.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'uri'
2
2
  require 'action_dispatch/journey'
3
+ require 'active_support/core_ext/object/blank'
3
4
  require 'active_support/core_ext/string/starts_ends_with'
4
5
 
5
6
  require "proximity/version"
@@ -8,11 +8,11 @@ describe Proximity::ProxySet do
8
8
  let(:proxy) { route.proxy }
9
9
 
10
10
  it "will set the source prefix on the route set" do
11
- expect(proxy_set.source).to eq('/example/')
11
+ expect(proxy_set.source).to eq('/example')
12
12
  end
13
13
 
14
14
  it "will set the target prefix on the route set" do
15
- expect(proxy_set.target).to eq('http://example.local/api/')
15
+ expect(proxy_set.target).to eq('http://example.local/api')
16
16
  end
17
17
 
18
18
  it "will create a route with the given prefix for its source" do
@@ -26,7 +26,7 @@ describe Proximity::ProxySet do
26
26
 
27
27
  describe "protocol" do
28
28
  it "will be added to the target prefix if missing" do
29
- expect(proxy_set.target).to eq('http://example.local/api/')
29
+ expect(proxy_set.target).to eq('http://example.local/api')
30
30
  end
31
31
 
32
32
  it "will not add a protocol if provided in the target prefix" do
@@ -44,7 +44,7 @@ describe Proximity::ProxySet do
44
44
  let(:environment) { 'development' }
45
45
 
46
46
  it "will convert .com into .local" do
47
- expect(proxy_set.target).to eq('http://example.local/api/')
47
+ expect(proxy_set.target).to eq('http://example.local/api')
48
48
  end
49
49
  end
50
50
 
@@ -52,7 +52,7 @@ describe Proximity::ProxySet do
52
52
  let(:environment) { 'test' }
53
53
 
54
54
  it "will convert .com into .local" do
55
- expect(proxy_set.target).to eq('http://example.local/api/')
55
+ expect(proxy_set.target).to eq('http://example.local/api')
56
56
  end
57
57
  end
58
58
 
@@ -60,7 +60,7 @@ describe Proximity::ProxySet do
60
60
  let(:environment) { 'production' }
61
61
 
62
62
  it "will not convert .com into .local" do
63
- expect(proxy_set.target).to eq('http://example.com/api/')
63
+ expect(proxy_set.target).to eq('http://example.com/api')
64
64
  end
65
65
  end
66
66
  end
@@ -5,11 +5,16 @@ describe Proximity::Proxy do
5
5
  let(:route) { router.routes[0].proxy }
6
6
  let(:same) { router.routes[1].proxy }
7
7
  let(:format) { router.routes[2].proxy }
8
+ let(:blank) { router.routes[6].proxy }
8
9
 
9
- it "prefixes the source with the route set source" do
10
+ it "prefixes the source with the route set source and a slash" do
10
11
  expect(route.source).to eq('/example/active')
11
12
  end
12
13
 
14
+ it "does not add a slash to the route set source if source is blank" do
15
+ expect(blank.source). to eq('/example')
16
+ end
17
+
13
18
  it "prefixes the target with the route set target" do
14
19
  expect(route.target).to eq('http://example.local/api/are/you/active')
15
20
  end
data/spec/spec_helper.rb CHANGED
@@ -2,6 +2,16 @@ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
2
  require 'proximity'
3
3
  require 'rack/proxy'
4
4
  require 'pry'
5
+ require 'simplecov'
6
+ require 'coveralls'
7
+
8
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
9
+ SimpleCov::Formatter::HTMLFormatter,
10
+ Coveralls::SimpleCov::Formatter
11
+ ]
12
+
13
+ SimpleCov.start
14
+ Coveralls.wear!
5
15
 
6
16
  class SpecProxy < Rack::Proxy
7
17
  include Proximity
@@ -22,6 +32,7 @@ def mock_routes
22
32
  proxy 'accounts' => same, formats: %w[json csv]
23
33
  proxy 'accounts/:account_id' => same
24
34
  proxy 'accounts/:account_id/members/:member_id' => 'accounts-members/:account_id-:member_id'
35
+ proxy '' => same
25
36
  end
26
37
  end
27
38
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: proximity
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Hunter
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-08-21 00:00:00.000000000 Z
12
+ date: 2013-09-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -148,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
148
  version: '0'
149
149
  requirements: []
150
150
  rubyforge_project:
151
- rubygems_version: 2.0.5
151
+ rubygems_version: 2.0.3
152
152
  signing_key:
153
153
  specification_version: 4
154
154
  summary: Proximity provides a router to applications utilizing Rack::Proxy to coordinate