aviator 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c8e26c692d08f4a3414f7b3ff14b120cee73bad5
4
- data.tar.gz: 9d60456a3afe9eed57d27acd626a08c3a987b3be
3
+ metadata.gz: 9e05d6303dec010925adaadef7852044aec4dbc0
4
+ data.tar.gz: 76d05e1271d60e2040ed6e752c79d8641556ab1a
5
5
  SHA512:
6
- metadata.gz: ffae1b956dc180c585cfa847889a9e0e8267843600e9bac5471a25e8781797ebf6eccb3cedeb05501375372aeedc15348d7b963790bd18682eddce2387cc5a95
7
- data.tar.gz: f9ebba7e141c1f886d17573b04b0dd60b1708e7c814b3cbbaf6493096be8d78dd4bbc76a52a83c308df63d0fe9e0e8eaacbffc76f907d617b1e9ea7d68cefceb
6
+ metadata.gz: c2bae7d16b1364ee57d72c69d2e3449419315cd0702c9ab0fb2ae1a38f78f2025624c8b65b61faa1c22348848b67ad7588826c49a0f742a19b4ab260d311ae9d
7
+ data.tar.gz: 3e586d5770779da16528ff1a7ed924318c2a71bd5e1146afa4f079889439b91f14da4e4973ce56a54d8415bd9ebc2f285d9458b5487bce5a01f3aa575e1da2f2
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  ![Aviator](https://raw.github.com/aviator/www/gh-pages/images/logo-small.png)
2
- <br/>An elegantly designed OpenStack SDK for Ruby
2
+ <br/>A Framework for Writing REST API Clients
3
3
 
4
4
  [![Build Status](https://travis-ci.org/aviator/aviator.png?branch=master)](https://travis-ci.org/aviator/aviator)
5
5
  [![Coverage Status](https://coveralls.io/repos/aviator/aviator/badge.png?branch=master)](https://coveralls.io/r/aviator/aviator?branch=master)
@@ -33,8 +33,9 @@ module Aviator
33
33
 
34
34
  def self.describe_request(provider_name, service_name, api_version, endpoint_type, request_name)
35
35
  service = Aviator::Service.new :provider => provider_name, :service => service_name
36
- request_class = "Aviator::#{ provider_name.camelize }::#{ service_name.camelize }::Requests::"\
37
- "#{ api_version.camelize }::#{ endpoint_type.camelize }::#{ request_name.camelize }".constantize
36
+ request_class = "Aviator::#{ StrUtil.camelize(provider_name) }::#{ StrUtil.camelize(service_name) }::Requests::"\
37
+ "#{ StrUtil.camelize(api_version) }::#{ StrUtil.camelize(endpoint_type) }::#{ StrUtil.camelize(request_name) }"
38
+ request_class = StrUtil.constantize(request_class)
38
39
 
39
40
  display = "Request: #{ request_name }\n"
40
41
 
@@ -119,7 +120,7 @@ module Aviator
119
120
  str = "Available requests for #{ provider_name } #{ service_name }_service:\n"
120
121
 
121
122
  requests.each do |klass|
122
- str << " #{ klass.api_version } #{ klass.endpoint_type } #{ klass.name.split('::').last.underscore }\n"
123
+ str << " #{ klass.api_version } #{ klass.endpoint_type } #{ StrUtil.underscore(klass.name.split('::').last) }\n"
123
124
  end
124
125
 
125
126
  str
@@ -40,12 +40,12 @@ module Aviator
40
40
  ]
41
41
 
42
42
  namespace = namespace_arr.inject(root_namespace) do |namespace, sym|
43
- const_name = sym.to_s.camelize
43
+ const_name = StrUtil.camelize(sym.to_s)
44
44
  namespace.const_set(const_name, Module.new) unless namespace.const_defined?(const_name, false)
45
45
  namespace.const_get(const_name, false)
46
46
  end
47
47
 
48
- klassname = request_name.to_s.camelize
48
+ klassname = StrUtil.camelize(request_name.to_s)
49
49
 
50
50
  if namespace.const_defined?(klassname, false)
51
51
  raise RequestAlreadyDefinedError.new(namespace, klassname)
@@ -66,11 +66,11 @@ module Aviator
66
66
  end
67
67
 
68
68
  full_request_class_arr.inject(root_namespace) do |namespace, sym|
69
- namespace.const_get(sym.to_s.camelize, false)
69
+ namespace.const_get(StrUtil.camelize(sym.to_s), false)
70
70
  end
71
71
  rescue NameError => e
72
- if Aviator.const_defined?(full_request_class_arr[0].to_s.camelize)
73
- provider = "Aviator::#{ full_request_class_arr[0] }::Provider".constantize
72
+ if Aviator.const_defined?(StrUtil.camelize(full_request_class_arr[0].to_s))
73
+ provider = StrUtil.constantize("Aviator::#{ full_request_class_arr[0] }::Provider")
74
74
  arr = ['..'] + full_request_class_arr
75
75
  arr[-1,1] = arr.last.to_s + '.rb'
76
76
  path = Pathname.new(provider.root_dir).join(*arr.map{|i| i.to_s }).expand_path
@@ -79,7 +79,7 @@ module Aviator
79
79
  if provider && path.exist?
80
80
  require path
81
81
  full_request_class_arr.inject(root_namespace) do |namespace, sym|
82
- namespace.const_get(sym.to_s.camelize, false)
82
+ namespace.const_get(StrUtil.camelize(sym.to_s), false)
83
83
  end
84
84
  else
85
85
  raise BaseRequestNotFoundError.new(request_class_arr)
@@ -99,4 +99,4 @@ module Aviator
99
99
 
100
100
  end # class << self
101
101
 
102
- end
102
+ end
@@ -47,7 +47,7 @@ module Aviator
47
47
 
48
48
  class MissingServiceEndpointError < StandardError
49
49
  def initialize(service_name, request_name)
50
- request_name = request_name.to_s.split('::').last.underscore
50
+ request_name = StrUtil.underscore(request_name.to_s.split('::').last)
51
51
  super "The session's service catalog does not have an entry for the #{ service_name } "\
52
52
  "service. Therefore, I don't know to which base URL the request should be sent. "\
53
53
  "This may be because you are using a default or unscoped token. If this is not your "\
@@ -147,10 +147,10 @@ module Aviator
147
147
 
148
148
  constant_parts = request_file_paths \
149
149
  .map{|rf| rf.to_s.match(/#{provider}\/#{service}\/([\w\/]+)\.rb$/) } \
150
- .map{|rf| rf[1].split('/').map{|c| c.camelize }.join('::') }
150
+ .map{|rf| rf[1].split('/').map{|c| StrUtil.camelize(c) }.join('::') }
151
151
 
152
152
  @request_classes = constant_parts.map do |cp|
153
- "Aviator::#{provider.camelize}::#{service.camelize}::#{cp}".constantize
153
+ StrUtil.constantize("Aviator::#{StrUtil.camelize(provider)}::#{StrUtil.camelize(service)}::#{cp}")
154
154
  end
155
155
  end
156
156
 
@@ -161,7 +161,7 @@ module Aviator
161
161
 
162
162
 
163
163
  def provider_module
164
- @provider_module ||= "Aviator::#{provider.camelize}::Provider".constantize
164
+ @provider_module ||= StrUtil.constantize("Aviator::#{StrUtil.camelize(provider)}::Provider")
165
165
  end
166
166
 
167
167
  end
@@ -1,24 +1,26 @@
1
- class String
1
+ module Aviator
2
2
 
3
- unless instance_methods.include? 'camelize'
4
- define_method :camelize do
5
- word = self.slice(0,1).capitalize + self.slice(1..-1)
6
- word.gsub(/_([a-zA-Z\d])/) { "#{$1.capitalize}" }
7
- end
8
- end
3
+ class StrUtil
4
+
5
+ class <<self
9
6
 
10
- unless instance_methods.include? 'constantize'
11
- define_method :constantize do
12
- self.split("::").inject(Object) do |namespace, sym|
13
- namespace.const_get(sym.to_s.camelize, false)
7
+ def camelize(str)
8
+ word = str.slice(0,1).capitalize + str.slice(1..-1)
9
+ word.gsub(/_([a-zA-Z\d])/) { "#{$1.capitalize}" }
10
+ end
11
+
12
+ def constantize(str)
13
+ str.split("::").inject(Object) do |namespace, sym|
14
+ namespace.const_get(self.camelize(sym.to_s), false)
15
+ end
16
+ end
17
+
18
+ def underscore(str)
19
+ str.gsub(/([a-z\d])([A-Z])/, '\1_\2').downcase
14
20
  end
15
- end
16
- end
17
21
 
18
- unless instance_methods.include? 'underscore'
19
- define_method :underscore do
20
- self.gsub(/([a-z\d])([A-Z])/, '\1_\2').downcase
21
22
  end
23
+
22
24
  end
23
25
 
24
26
  end
@@ -95,24 +95,24 @@ EOF
95
95
  service = service.to_s
96
96
  endpoint_type = options[:endpoint_type]
97
97
  endpoint_types = if endpoint_type
98
- [endpoint_type.to_s.camelize]
98
+ [StrUtil.camelize(endpoint_type.to_s)]
99
99
  else
100
100
  ['Public', 'Admin']
101
101
  end
102
102
 
103
103
  namespace = Aviator.const_get('Openstack') \
104
- .const_get(service.camelize) \
104
+ .const_get(StrUtil.camelize(service)) \
105
105
  .const_get('Requests')
106
106
 
107
107
  if options[:api_version]
108
108
  m = options[:api_version].to_s.match(/(v\d+)\.?\d*/)
109
- version = m[1].to_s.camelize unless m.nil?
109
+ version = StrUtil.camelize(m[1].to_s) unless m.nil?
110
110
  end
111
111
 
112
112
  version ||= infer_version(session_data, name, service)
113
113
 
114
114
  unless version.nil?
115
- version = version.to_s.camelize
115
+ version = StrUtil.camelize(version.to_s)
116
116
  end
117
117
 
118
118
  return nil unless version && namespace.const_defined?(version)
@@ -120,7 +120,7 @@ EOF
120
120
  namespace = namespace.const_get(version, name)
121
121
 
122
122
  endpoint_types.each do |endpoint_type|
123
- name = name.to_s.camelize
123
+ name = StrUtil.camelize(name.to_s)
124
124
 
125
125
  next unless namespace.const_defined?(endpoint_type)
126
126
  next unless namespace.const_get(endpoint_type).const_defined?(name)
@@ -1,3 +1,3 @@
1
1
  module Aviator
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
@@ -13,7 +13,7 @@ class Aviator::Test
13
13
  request_path = [provider_name, service_name, :requests, base_ver, base_ept, base_name]
14
14
 
15
15
  @base = request_path.inject(Aviator) do |namespace, sym|
16
- const_name = sym.to_s.camelize
16
+ const_name = Aviator::StrUtil.camelize(sym.to_s)
17
17
 
18
18
  if namespace && namespace.const_defined?(const_name, false)
19
19
  namespace.const_get(const_name, false)
@@ -91,7 +91,7 @@ class Aviator::Test
91
91
  expected = "Available requests for #{ provider } #{ service }_service:\n"
92
92
 
93
93
  requests.each do |klass|
94
- expected << " #{ klass.api_version } #{ klass.endpoint_type } #{ klass.name.split('::').last.underscore }\n"
94
+ expected << " #{ klass.api_version } #{ klass.endpoint_type } #{ Aviator::StrUtil.underscore(klass.name.split('::').last) }\n"
95
95
  end
96
96
 
97
97
  klass.describe_service(provider, service).must_equal expected
@@ -26,7 +26,7 @@ class Aviator::Test
26
26
  end
27
27
 
28
28
  [provider, service, :requests, api_ver, ep_type, _name_].inject(builder) do |namespace, sym|
29
- const_name = sym.to_s.camelize
29
+ const_name = Aviator::StrUtil.camelize(sym.to_s)
30
30
 
31
31
  namespace.const_defined?(const_name, false).must_equal true
32
32
 
@@ -50,7 +50,7 @@ class Aviator::Test
50
50
  end
51
51
 
52
52
  [provider, service, :requests, api_ver, ep_type, _name_].inject(builder) do |namespace, sym|
53
- const_name = sym.to_s.camelize
53
+ const_name = Aviator::StrUtil.camelize(sym.to_s)
54
54
 
55
55
  namespace.const_defined?(const_name, false).must_equal true,
56
56
  "Expected #{ const_name } to be defined in #{ namespace }"
@@ -96,7 +96,7 @@ class Aviator::Test
96
96
  ]
97
97
 
98
98
  child_request = child_req_hierarchy.inject(builder) do |namespace, sym|
99
- namespace.const_get(sym.to_s.camelize, false)
99
+ namespace.const_get(Aviator::StrUtil.camelize(sym.to_s), false)
100
100
  end
101
101
 
102
102
  child_request.wont_be_nil
@@ -154,7 +154,7 @@ class Aviator::Test
154
154
  error = the_method.call rescue $!
155
155
 
156
156
  error.message.wont_be_nil
157
- error.request_name.must_equal request[:name].to_s.camelize
157
+ error.request_name.must_equal Aviator::StrUtil.camelize(request[:name].to_s)
158
158
  end
159
159
 
160
160
 
@@ -165,11 +165,11 @@ class Aviator::Test
165
165
  builder.define_request child_arr.last, :inherit => base_arr do; end
166
166
 
167
167
  base_klass = base_arr.insert(2, :requests).inject(builder) do |namespace, sym|
168
- namespace.const_get(sym.to_s.camelize, false)
168
+ namespace.const_get(Aviator::StrUtil.camelize(sym.to_s), false)
169
169
  end
170
170
 
171
171
  child_klass = child_arr.insert(2, :requests).inject(builder) do |namespace, sym|
172
- namespace.const_get(sym.to_s.camelize, false)
172
+ namespace.const_get(Aviator::StrUtil.camelize(sym.to_s), false)
173
173
  end
174
174
 
175
175
  base_klass.wont_be_nil
@@ -180,4 +180,4 @@ class Aviator::Test
180
180
 
181
181
  end
182
182
 
183
- end
183
+ end
@@ -83,17 +83,18 @@ class Aviator::Test
83
83
  it 'returns an array of the request classes' do
84
84
  provider_name = config[:provider]
85
85
  service_name = config[:auth_service][:name]
86
- provider_module = "Aviator::#{ provider_name.camelize }::Provider".constantize
86
+ provider_module = "Aviator::#{ Aviator::StrUtil.camelize(provider_name) }::Provider"
87
+ provider_module = Aviator::StrUtil.constantize(provider_module)
87
88
 
88
89
  request_file_paths = provider_module.request_file_paths(service_name)
89
90
  request_file_paths.each{ |path| require path }
90
91
 
91
92
  constant_parts = request_file_paths \
92
93
  .map{|rf| rf.to_s.match(/#{ provider_name }\/#{ service_name }\/([\w\/]+)\.rb$/) } \
93
- .map{|rf| rf[1].split('/').map{|c| c.camelize }.join('::') }
94
+ .map{|rf| rf[1].split('/').map{|c| Aviator::StrUtil.camelize(c) }.join('::') }
94
95
 
95
96
  classes = constant_parts.map do |cp|
96
- "Aviator::#{ provider_name.camelize }::#{ service_name.camelize }::#{ cp }".constantize
97
+ Aviator::StrUtil.constantize("Aviator::#{ Aviator::StrUtil.camelize(provider_name) }::#{ Aviator::StrUtil.camelize(service_name) }::#{ cp }")
97
98
  end
98
99
 
99
100
  service.request_classes.must_equal classes
@@ -8,8 +8,8 @@ module Provider
8
8
  class << self
9
9
 
10
10
  def find_request(service, name, session_data, options)
11
- fqrn = "Aviator::Dummy::#{service.to_s.camelize}::Requests::V1::Public::#{name.to_s.camelize}"
12
- fqrn.constantize
11
+ fqrn = "Aviator::Dummy::#{Aviator::StrUtil.camelize(service.to_s)}::Requests::V1::Public::#{Aviator::StrUtil.camelize(name.to_s)}"
12
+ Aviator::StrUtil.constantize(fqrn)
13
13
  rescue NameError => e
14
14
  raise NameError.new("#{fqrn} not found: #{e.message}")
15
15
  end
@@ -50,7 +50,7 @@ class Test
50
50
 
51
51
 
52
52
  def get_request_class(parent, *path)
53
- const_name = path.shift.to_s.camelize.gsub(/\.rb$/, '')
53
+ const_name = Aviator::StrUtil.camelize(path.shift.to_s).gsub(/\.rb$/, '')
54
54
 
55
55
  const = if parent.const_defined?(const_name)
56
56
  parent.const_get(const_name)
@@ -17,8 +17,9 @@ class Test < MiniTest::Spec
17
17
  .gsub(/^Aviator::Test::/, '') \
18
18
  .gsub(/::#/, '/i_') \
19
19
  .gsub(/::::/, '/c_') \
20
- .gsub(/::/, '/') \
21
- .underscore
20
+ .gsub(/::/, '/')
21
+
22
+ path = Aviator::StrUtil.underscore(path)
22
23
 
23
24
  basename = __name__.gsub(/test_\d+_/, '')
24
25
 
@@ -50,7 +50,7 @@ VCR.configure do |c|
50
50
  [:username, :password, :tenantName, :tokenId].each do |key|
51
51
  configs.each do |config|
52
52
  c.filter_sensitive_data("<#{ config.to_s.upcase }_#{key.to_s.upcase}>") do
53
- env.send(config)[:auth_credentials][key] || env.send(config)[:auth_credentials][key.to_s.underscore]
53
+ env.send(config)[:auth_credentials][key] || env.send(config)[:auth_credentials][Aviator::StrUtil.underscore(key.to_s)]
54
54
  end
55
55
  end
56
56
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aviator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Maglana
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-14 00:00:00.000000000 Z
11
+ date: 2015-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday