yao 0.1.0 → 0.1.1

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: ba36ff08aa0365694cdd8b503c8f281326757bdd
4
- data.tar.gz: 5eb339c8efba8d3120407cbca1be572ca7caef2f
3
+ metadata.gz: 7de241c1b6e0fd16fbebd77ef168fb35672be6b6
4
+ data.tar.gz: 4985a66290b6ef759ebe5b010d86b94f2355db02
5
5
  SHA512:
6
- metadata.gz: c6c1910d273332de80491414bf07000ba0197b661e834bbd21c389af91b7ee4efe070719ef1a0da4945301d4122ef57acbd349215deb5020a4705ca0c8b25b5c
7
- data.tar.gz: 7740df0df2806e24a2ba621185abacca35c87df2187d367d304de70b1a96847eb20616adb3ceb50a9e81c6513d1dcc05c2e85715d3d434afe8aad21cff10392c
6
+ metadata.gz: 56ba2523368eaf6886d81b250f15e3b80b7c89919eec0e24c286129c991ede9518f10ffaab2400ecf661ebc0a2143114046b0c3c9af3e268b0f15d1ab859dbca
7
+ data.tar.gz: bfad2eef1088c14dc96cbc20a33838b687c8be6d17dbaf42a59d663186a3bd83b3524dd26a84cc41b90e459c5420bd3eda31483bf589f3b3e59b5eaefb4078b6
@@ -20,9 +20,16 @@ Faraday::Request.register_middleware os_token: -> { Faraday::Request::OSToken }
20
20
  class Faraday::Response::OSDumper < Faraday::Response::Middleware
21
21
  def on_complete(env)
22
22
  require 'pp'
23
+
24
+ body = if env.response_headers["content-type"] == "application/json"
25
+ JSON.parse(env.body)
26
+ else
27
+ env.body
28
+ end
29
+
23
30
  params = [
24
31
  env.url.to_s,
25
- JSON.parse(env.body),
32
+ body,
26
33
  env.request_headers,
27
34
  env.response_headers,
28
35
  env.method,
@@ -58,6 +58,15 @@ module Yao::Resources
58
58
  end
59
59
  end
60
60
 
61
+ def with_resources_path(path, &blk)
62
+ original = @resources_path
63
+ @resources_path = path
64
+ result = yield(blk)
65
+ @resources_path = original
66
+
67
+ result
68
+ end
69
+
61
70
  # restful methods
62
71
  def list(query={})
63
72
  json = GET(resources_path, query).body
@@ -7,5 +7,42 @@ module Yao::Resources
7
7
  self.resources_name = "roles"
8
8
  self.resources_path = "/OS-KSADM/roles"
9
9
  self.admin = true
10
+
11
+ class << self
12
+ def get_by_name(name)
13
+ self.list.find {|role| role.name == name }
14
+ end
15
+ alias find_by_name get_by_name
16
+
17
+ def list_for_user(user_name, on:)
18
+ user = Yao::User.get_by_name(user_name)
19
+ tenant = Yao::Tenant.get_by_name(on)
20
+ path = ["tenants", tenant.id, "users", user.id, "roles"].join("/")
21
+
22
+ with_resources_path(path) { self.list }
23
+ end
24
+
25
+ def grant(role_name, to:, on:)
26
+ role = Yao::Role.get_by_name(role_name)
27
+ user = Yao::User.get_by_name(to)
28
+ tenant = Yao::Tenant.get_by_name(on)
29
+
30
+ PUT path_for_grant_revoke(tenant, user, role)
31
+ end
32
+
33
+ def revoke(role_name, from:, on:)
34
+ role = Yao::Role.get_by_name(role_name)
35
+ user = Yao::User.get_by_name(from)
36
+ tenant = Yao::Tenant.get_by_name(on)
37
+
38
+ DELETE path_for_grant_revoke(tenant, user, role)
39
+ end
40
+
41
+ private
42
+
43
+ def path_for_grant_revoke(tenant, user, role)
44
+ ["tenants", tenant.id, "users", user.id, "roles", "OS-KSADM", role.id].join("/")
45
+ end
46
+ end
10
47
  end
11
48
  end
@@ -6,10 +6,11 @@ module Yao::Resources
6
6
  self.resource_name = "tenant"
7
7
  self.resources_name = "tenants"
8
8
  self.admin = true
9
+ self.return_single_on_querying = true
9
10
 
10
11
  class << self
11
12
  def get_by_name(name)
12
- self.get("", name: name)
13
+ self.list(name: name)
13
14
  end
14
15
  alias find_by_name get_by_name
15
16
 
data/lib/yao/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Yao
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yao
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Uchio, KONDO
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-04 00:00:00.000000000 Z
11
+ date: 2015-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json