global_registry 1.0.8 → 1.1.0

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: bdcc85777bc0361fd963560777430b8b3913f75c
4
- data.tar.gz: f3f9b5470dc2a52a3565f90f6e8484e42f9f211a
3
+ metadata.gz: 64ce57dbf8a816d806e978b1bc5bcd31c84ea387
4
+ data.tar.gz: 405831e2b00acd2096977138a5184569877b82d0
5
5
  SHA512:
6
- metadata.gz: bb49500a657bc071a8f29b8cebe8bafe866945e10184179b6d6b28730f2bc9fe1b1a84e15ff13317fb9c1b0ecea124f79487f8ed60b6045fce77f18c5cc22166
7
- data.tar.gz: 23feec9df04ab75372b9e67624330411fc46ece8b2012b5ad64a4e29a0d165ef6d02eb479dec74723f5354e73d75b2f06ec9e6e828d6f4e85aeffbef827d602a
6
+ metadata.gz: 0d9eb988e414bf32f4e5a2da3f312a66ec0e639d493a625b5f419d7e922d18049125c17079c9d887c42acb2a2932cf279e3340520a328de18cb7de565779d758
7
+ data.tar.gz: 6ab0a32677502ddf3a49f03a31b6ddbac9fbe5a8da6b85b61fcd350eebcf6ddf8e7873cbca6b0d1fb951ff98007916d1d48246c0b754b7d1f8b8e2f06999d9c3
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ sudo: false
2
+ cache: bundler
3
+ language: ruby
4
+ rvm:
5
+ - 2.2.4
6
+ script:
7
+ - bundle exec rspec spec
@@ -4,63 +4,109 @@ require 'retryable'
4
4
 
5
5
  module GlobalRegistry
6
6
  class Base
7
+ def initialize(args = {})
8
+ @base_url = args[:base_url]
9
+ @access_token = args[:access_token]
10
+ @xff = args[:xff]
11
+ end
7
12
 
8
- def self.find(id, params = {})
9
- request(:get, params, path_with_id(id))
13
+ def self.find(id, params = {}, headers = {})
14
+ new.find(id, params, headers)
15
+ end
16
+ def find(id, params = {}, headers = {})
17
+ request(:get, params, path_with_id(id), headers)
10
18
  end
11
19
 
12
- def self.get(params = {})
13
- request(:get, params)
20
+ def self.get(params = {}, headers = {})
21
+ new.get(params, headers)
22
+ end
23
+ def get(params = {}, headers = {})
24
+ request(:get, params, nil, headers)
14
25
  end
15
26
 
16
- def self.post(params = {})
17
- request(:post, params)
27
+ def self.post(params = {}, headers = {})
28
+ new.post(params, headers)
29
+ end
30
+ def post(params = {}, headers = {})
31
+ request(:post, params, nil, headers)
18
32
  end
19
33
 
20
- def self.put(id, params = {})
21
- request(:put, params, path_with_id(id))
34
+ def self.put(id, params = {}, headers = {})
35
+ new.put(id, params, headers)
36
+ end
37
+ def put(id, params = {}, headers = {})
38
+ request(:put, params, path_with_id(id), headers)
22
39
  end
23
40
 
24
- def self.delete(id)
25
- request(:delete, {}, path_with_id(id))
41
+ def self.delete(id, headers = {})
42
+ new.delete(id, headers)
43
+ end
44
+ def delete(id, headers = {})
45
+ request(:delete, {}, path_with_id(id), headers)
26
46
  end
27
47
 
28
- def self.delete_or_ignore(id)
29
- begin
30
- delete(id)
31
- rescue RestClient::Exception => e
32
- unless e.response.code.to_i == 404
33
- raise
34
- end
35
- end
48
+ def self.delete_or_ignore(id, headers = {})
49
+ delete(id, headers)
50
+ rescue RestClient::Exception => e
51
+ raise unless e.response.code.to_i == 404
52
+ end
53
+ def delete_or_ignore(id, headers = {})
54
+ delete(id, headers)
55
+ rescue RestClient::Exception => e
56
+ raise unless e.response.code.to_i == 404
36
57
  end
37
58
 
38
59
 
39
- def self.request(method, params, path = nil)
40
- raise 'You need to configure GlobalRegistry with your access_token.' unless GlobalRegistry.access_token
60
+ def self.request(method, params, path = nil, headers = {})
61
+ new.request(method, params, path, headers)
62
+ end
63
+
64
+ def request(method, params, path = nil, headers = {})
65
+ raise 'You need to configure GlobalRegistry with your access_token.' unless access_token
41
66
 
42
67
  path ||= default_path
43
- url = GlobalRegistry.base_url
68
+ url = base_url
44
69
  url += '/' unless url.last == '/'
45
70
  url += path
46
71
 
47
72
  case method
48
73
  when :post
49
- RestClient.post(url, params.to_json, :content_type => :json, :accept => :json, authorization: "Bearer #{GlobalRegistry.access_token}", :timeout => -1) { |response, request, result, &block|
74
+ post_headers = default_headers.merge(content_type: :json, timeout: -1).merge(headers)
75
+ RestClient.post(url, params.to_json, post_headers) { |response, request, result, &block|
50
76
  handle_response(response, request, result)
51
77
  }
52
78
  when :put
53
- RestClient.put(url, params.to_json, :content_type => :json, :accept => :json, authorization: "Bearer #{GlobalRegistry.access_token}", :timeout => -1) { |response, request, result, &block|
79
+ put_headers = default_headers.merge(content_type: :json, timeout: -1).merge(headers)
80
+ RestClient.put(url, params.to_json, put_headers) { |response, request, result, &block|
54
81
  handle_response(response, request, result)
55
82
  }
56
83
  else
57
- RestClient::Request.execute(:method => method, :url => url, :headers => {params: params, authorization: "Bearer #{GlobalRegistry.access_token}", :accept => :json}, :timeout => -1) { |response, request, result, &block|
84
+ get_args = { method: method, url: url, timeout: -1,
85
+ headers: default_headers.merge(params: params).merge(headers)
86
+ }
87
+ RestClient::Request.execute(get_args) { |response, request, result, &block|
58
88
  handle_response(response, request, result)
59
89
  }
60
90
  end
61
91
  end
62
92
 
63
- def self.handle_response(response, request, result)
93
+ def default_path
94
+ self.class.to_s.split('::').last.underscore.pluralize
95
+ end
96
+
97
+ def path_with_id(id)
98
+ "#{default_path}/#{id}"
99
+ end
100
+
101
+ private
102
+
103
+ def default_headers
104
+ headers = { authorization: "Bearer #{access_token}", accept: :json }
105
+ headers = headers.merge('X-Forwarded-For': @xff) if @xff.present?
106
+ headers
107
+ end
108
+
109
+ def handle_response(response, request, result)
64
110
  case response.code
65
111
  when 200..299
66
112
  Oj.load(response)
@@ -77,14 +123,13 @@ module GlobalRegistry
77
123
  end
78
124
  end
79
125
 
80
- def self.default_path
81
- to_s.split('::').last.underscore.pluralize
126
+ def base_url
127
+ @base_url || GlobalRegistry.base_url
82
128
  end
83
129
 
84
- def self.path_with_id(id)
85
- "#{default_path}/#{id}"
130
+ def access_token
131
+ @access_token || GlobalRegistry.access_token
86
132
  end
87
-
88
133
  end
89
134
  end
90
135
 
@@ -1,4 +1,4 @@
1
1
  module GlobalRegistry
2
- VERSION = "1.0.8"
2
+ VERSION = '1.1.0'
3
3
  end
4
4
 
data/spec/base_spec.rb ADDED
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Base' do
4
+ describe '#get' do
5
+ before do
6
+ stub_request(:get, 'http://google.com/bases')
7
+ .with(headers: {authorization: 'Bearer asdf'})
8
+ .to_return(:body => {a: 'b'}.to_json)
9
+ end
10
+
11
+ it 'finds something' do
12
+ response = GlobalRegistry::Base.get
13
+ expect(response).to be_a Hash
14
+ end
15
+
16
+ it 'can be configured' do
17
+ @custom_gr_url = stub_request(:get, 'http://cru.org/bases')
18
+ .with(headers: { authorization: 'Bearer qwer',
19
+ 'X-Forwarded-For': '203.0.113.7' })
20
+ .to_return(:body => {a: 'b'}.to_json)
21
+ gr = GlobalRegistry::Base.new(access_token: 'qwer', base_url: 'cru.org', xff: '203.0.113.7')
22
+ expect(gr.get).to be_a Hash
23
+ expect(@custom_gr_url).to have_been_requested
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Entity' do
4
+ describe '#get' do
5
+ before do
6
+ stub_request(:get, 'http://google.com/entities')
7
+ .to_return(:body => {a: 'b'}.to_json)
8
+ end
9
+
10
+ it 'finds something' do
11
+ response = GlobalRegistry::Entity.get
12
+ expect(response).to be_a Hash
13
+ end
14
+
15
+ it 'can be configured' do
16
+ @custom_gr_url = stub_request(:get, 'http://cru.org/entities')
17
+ .to_return(:body => {a: 'b'}.to_json)
18
+ gr = GlobalRegistry::Entity.new(base_url: 'cru.org')
19
+ expect(gr.get).to be_a Hash
20
+ expect(@custom_gr_url).to have_been_requested
21
+ end
22
+ end
23
+
24
+ describe '#put' do
25
+ before do
26
+ stub_request(:get, 'http://google.com/entities')
27
+ .to_return(:body => {a: 'b'}.to_json)
28
+ end
29
+
30
+ it 'sends data' do
31
+ response = GlobalRegistry::Entity.get
32
+ expect(response).to be_a Hash
33
+ end
34
+ end
35
+
36
+ describe '#find' do
37
+ before do
38
+ stub_request(:get, 'http://google.com/entities/asdf')
39
+ .to_return(:body => {a: 'b'}.to_json)
40
+ end
41
+
42
+ it 'sends data' do
43
+ response = GlobalRegistry::Entity.find('asdf')
44
+ expect(response).to be_a Hash
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,16 @@
1
+ require 'bundler/setup'
2
+ Bundler.setup
3
+
4
+ require 'global_registry'
5
+ require 'active_support/core_ext/string'
6
+ require 'webmock/rspec'
7
+
8
+ RSpec.configure do |_config|
9
+ # some config here
10
+
11
+ end
12
+
13
+ GlobalRegistry.configure do |config|
14
+ config.access_token = 'asdf'
15
+ config.base_url = 'google.com/'
16
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: global_registry
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Starcher
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-04 00:00:00.000000000 Z
11
+ date: 2016-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -88,6 +88,7 @@ extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
90
  - ".gitignore"
91
+ - ".travis.yml"
91
92
  - Gemfile
92
93
  - LICENSE
93
94
  - README.md
@@ -104,6 +105,9 @@ files:
104
105
  - lib/global_registry/relationship_type.rb
105
106
  - lib/global_registry/system.rb
106
107
  - lib/global_registry/version.rb
108
+ - spec/base_spec.rb
109
+ - spec/entity_spec.rb
110
+ - spec/spec_helper.rb
107
111
  homepage: ''
108
112
  licenses: []
109
113
  metadata: {}
@@ -123,8 +127,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
127
  version: '0'
124
128
  requirements: []
125
129
  rubyforge_project:
126
- rubygems_version: 2.4.5
130
+ rubygems_version: 2.4.5.1
127
131
  signing_key:
128
132
  specification_version: 4
129
133
  summary: Push and pull data from the Global Registry
130
- test_files: []
134
+ test_files:
135
+ - spec/base_spec.rb
136
+ - spec/entity_spec.rb
137
+ - spec/spec_helper.rb
138
+ has_rdoc: