masheri 0.5.6 → 0.6.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.
- data/.gitignore +6 -0
- data/.yardoc/checksums +17 -0
- data/.yardoc/object_types +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/.yardoc/proxy_types +0 -0
- data/Gemfile +22 -0
- data/Gemfile.devtools +55 -0
- data/Gemfile.lock +255 -0
- data/Rakefile +9 -0
- data/VERSION +1 -0
- data/config/devtools.yml +2 -0
- data/config/flay.yml +3 -0
- data/config/flog.yml +2 -0
- data/config/mutant.yml +3 -0
- data/config/reek.yml +103 -0
- data/config/rubocop.yml +58 -0
- data/config/yardstick.yml +2 -0
- data/lib/masheri.rb +2 -1
- data/lib/masheri/key.rb +1 -1
- data/lib/masheri/member.rb +1 -1
- data/lib/masheri/{rest_client → rpc_client}/base.rb +2 -2
- data/lib/masheri/service.rb +1 -1
- data/masheri.gemspec +26 -0
- data/spec/fixtures/config.no_host.yml +4 -0
- data/spec/fixtures/config.no_key.yml +4 -0
- data/spec/fixtures/config.no_secret.yml +4 -0
- data/spec/fixtures/config.no_site_id.yml +4 -0
- data/spec/fixtures/config.yml +5 -0
- data/spec/fixtures/services.json +3 -0
- data/spec/masheri/config_spec.rb +38 -0
- data/spec/masheri/member_spec.rb +47 -0
- data/spec/masheri/query_builder_spec.rb +13 -0
- data/spec/masheri/rest_client_spec.rb +47 -0
- data/spec/masheri/rpc_client_spec.rb +29 -0
- data/spec/masheri/service_spec.rb +101 -0
- data/spec/masheri_spec.rb +5 -0
- data/spec/spec_helper.rb +49 -0
- data/tasks/mashery.thor +200 -0
- metadata +40 -102
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
require 'simplecov'
|
3
|
+
|
4
|
+
SimpleCov.start
|
5
|
+
|
6
|
+
$LOAD_PATH.unshift File.expand_path("./lib")
|
7
|
+
require 'masheri'
|
8
|
+
|
9
|
+
Bundler.require(:test)
|
10
|
+
|
11
|
+
RSpec.configure do |config|
|
12
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
13
|
+
config.run_all_when_everything_filtered = true
|
14
|
+
config.filter_run :focus
|
15
|
+
|
16
|
+
# Run specs in random order to surface order dependencies. If you find an
|
17
|
+
# order dependency and want to debug it, you can fix the order by providing
|
18
|
+
# the seed, which is printed after each run.
|
19
|
+
# --seed 1234
|
20
|
+
config.order = 'random'
|
21
|
+
|
22
|
+
config.before do
|
23
|
+
Timecop.freeze Time.now
|
24
|
+
end
|
25
|
+
|
26
|
+
config.before do
|
27
|
+
config = double("config")
|
28
|
+
|
29
|
+
key = "regular_key"
|
30
|
+
secret = "super_long_secret"
|
31
|
+
signature = Digest::MD5.hexdigest(key + secret + Time.now.to_f.to_i.to_s)
|
32
|
+
|
33
|
+
config.stub({
|
34
|
+
site_id: "987",
|
35
|
+
key: key,
|
36
|
+
secret: secret,
|
37
|
+
signature: signature,
|
38
|
+
host: "masheri.example.com",
|
39
|
+
})
|
40
|
+
|
41
|
+
Masheri.config = config
|
42
|
+
end
|
43
|
+
|
44
|
+
config.after do
|
45
|
+
Timecop.return
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
|
data/tasks/mashery.thor
ADDED
@@ -0,0 +1,200 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
Bundler.setup
|
4
|
+
|
5
|
+
# XXX: only do this when the task has not been installed
|
6
|
+
$: << 'lib'
|
7
|
+
|
8
|
+
require 'mashery'
|
9
|
+
|
10
|
+
module Mashery
|
11
|
+
class CLI < Thor
|
12
|
+
namespace :mashery
|
13
|
+
|
14
|
+
desc "echo VALUE", "Echo the provided value (tests connectivity and authentication)"
|
15
|
+
def echo(value)
|
16
|
+
run { ok(::Mashery.client.echo(value)) }
|
17
|
+
end
|
18
|
+
|
19
|
+
protected
|
20
|
+
def run(&block)
|
21
|
+
site_id = ENV['MASHERY_SITE_ID'] or
|
22
|
+
raise Exception, "Please set the MASHERY_SITE_ID environment variable."
|
23
|
+
key = ENV['MASHERY_API_KEY'] or
|
24
|
+
raise Exception, "Please set the MASHERY_API_KEY environment variable."
|
25
|
+
secret = ENV['MASHERY_SHARED_SECRET'] or
|
26
|
+
raise Exception, "Please set the MASHERY_SHARED_SECRET environment variable."
|
27
|
+
::Mashery.test_mode = ENV['MASHERY_PRODUCTION_MODE'].blank?
|
28
|
+
::Mashery.logger.level = Logger::DEBUG
|
29
|
+
::Mashery.client = ::Mashery::Client.new(site_id, key, secret)
|
30
|
+
begin
|
31
|
+
yield
|
32
|
+
rescue ::Mashery::HttpException => e
|
33
|
+
error("HTTP error: #{e.message}")
|
34
|
+
rescue ::Mashery::JsonRpcException => e
|
35
|
+
error(e.message)
|
36
|
+
rescue ::Mashery::ValidationException => e
|
37
|
+
e.errors.each {|err| warn("#{err['field']}: #{err['message']}")}
|
38
|
+
error("Unable to execute method due to validation errors")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def warn(msg)
|
43
|
+
say_status :WARN, msg, :yellow
|
44
|
+
end
|
45
|
+
|
46
|
+
def ok(msg)
|
47
|
+
say_status :OK, msg
|
48
|
+
end
|
49
|
+
|
50
|
+
def error(msg)
|
51
|
+
say_status :ERROR, msg, :red
|
52
|
+
end
|
53
|
+
|
54
|
+
def debug(msg)
|
55
|
+
say_status :DEBUG, msg, :cyan
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
class MemberCLI < CLI
|
60
|
+
namespace 'mashery:member'
|
61
|
+
|
62
|
+
desc "create USERNAME DISPLAY_NAME EMAIL [--fields ...]", "Create a member"
|
63
|
+
method_option :fields, :type => :hash
|
64
|
+
def create(username, display_name, email)
|
65
|
+
run do
|
66
|
+
begin
|
67
|
+
member = ::Mashery::Member.create(username, display_name, email, options[:fields])
|
68
|
+
ok("Member #{member.username} created")
|
69
|
+
rescue ::Mashery::DuplicateObjectException
|
70
|
+
error("The username #{username} has already been claimed")
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
desc "fetch USERNAME", "Fetch a member"
|
76
|
+
def fetch(username)
|
77
|
+
run do
|
78
|
+
member = ::Mashery::Member.fetch(username)
|
79
|
+
if member
|
80
|
+
ok("Member #{username} found")
|
81
|
+
say(member.to_yaml)
|
82
|
+
else
|
83
|
+
warn("Member #{username} not found")
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
desc "addrole USERNAME ROLE_ID", "Assign a role to a member"
|
89
|
+
def addrole(username, role_id)
|
90
|
+
run do
|
91
|
+
member = ::Mashery::Member.fetch(username)
|
92
|
+
if member
|
93
|
+
role = ::Mashery::Role.fetch(role_id.to_i)
|
94
|
+
if role
|
95
|
+
member.add_role(role)
|
96
|
+
ok("Role #{role.name} assigned to member #{username}")
|
97
|
+
else
|
98
|
+
warn("Role #{role_id} not found")
|
99
|
+
end
|
100
|
+
else
|
101
|
+
warn("Member #{username} not found")
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
desc "rmrole USERNAME ROLE_ID", "Revoke a role from a member"
|
107
|
+
def rmrole(username, role_id)
|
108
|
+
run do
|
109
|
+
member = ::Mashery::Member.fetch(username)
|
110
|
+
if member
|
111
|
+
role = ::Mashery::Role.fetch(role_id.to_i)
|
112
|
+
if role
|
113
|
+
member.remove_role(role)
|
114
|
+
ok("Role #{role.name} revoked from member #{username}")
|
115
|
+
else
|
116
|
+
warn("Role #{role_id} not found")
|
117
|
+
end
|
118
|
+
else
|
119
|
+
warn("Member #{username} not found")
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
desc "delete USERNAME", "Delete a member"
|
125
|
+
def delete(username)
|
126
|
+
run do
|
127
|
+
::Mashery::Member.delete(username)
|
128
|
+
ok("Member #{username} deleted")
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
class KeyCLI < CLI
|
134
|
+
namespace 'mashery:key'
|
135
|
+
|
136
|
+
desc "create SERVICE_KEY USERNAME [--fields ...]", "Create a key"
|
137
|
+
method_option :fields, :type => :hash
|
138
|
+
def create(service_key, username)
|
139
|
+
run do
|
140
|
+
key = ::Mashery::Key.create(service_key, username, options[:fields])
|
141
|
+
ok("Key #{key.id} created for member #{username} and service #{service_key}")
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
desc "fetch ID", "Fetch a key"
|
146
|
+
def fetch(id)
|
147
|
+
run do
|
148
|
+
key = ::Mashery::Key.fetch(id.to_i)
|
149
|
+
if key
|
150
|
+
ok("Key #{id} found")
|
151
|
+
say(key.to_yaml)
|
152
|
+
else
|
153
|
+
warn("Key #{id} not found")
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
desc "delete ID", "Delete a key"
|
159
|
+
def delete(id)
|
160
|
+
run do
|
161
|
+
::Mashery::Key.delete(id.to_i)
|
162
|
+
ok("Key #{id} deleted")
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
class RoleCLI < CLI
|
168
|
+
namespace 'mashery:role'
|
169
|
+
|
170
|
+
desc "create NAME [--fields ...]", "Create a role"
|
171
|
+
method_option :fields, :type => :hash
|
172
|
+
def create(name)
|
173
|
+
run do
|
174
|
+
role = ::Mashery::Role.create(name, options[:fields])
|
175
|
+
ok("Role #{role.id} created with name #{name}")
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
desc "fetch ID", "Fetch a role"
|
180
|
+
def fetch(id)
|
181
|
+
run do
|
182
|
+
role = ::Mashery::Role.fetch(id.to_i)
|
183
|
+
if role
|
184
|
+
ok("Role #{id} found")
|
185
|
+
say(role.to_yaml)
|
186
|
+
else
|
187
|
+
warn("Role #{id} not found")
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
desc "delete ID", "Delete a role"
|
193
|
+
def delete(id)
|
194
|
+
run do
|
195
|
+
::Mashery::Role.delete(id.to_i)
|
196
|
+
ok("Role #{id} deleted")
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: masheri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -59,102 +59,6 @@ dependencies:
|
|
59
59
|
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: redcarpet
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ! '>='
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '0'
|
70
|
-
type: :development
|
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: jeweler
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ! '>='
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: '0'
|
86
|
-
type: :development
|
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: devtools
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
|
-
requirements:
|
99
|
-
- - ! '>='
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: '0'
|
102
|
-
type: :development
|
103
|
-
prerelease: false
|
104
|
-
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
110
|
-
- !ruby/object:Gem::Dependency
|
111
|
-
name: rake
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
|
-
requirements:
|
115
|
-
- - ~>
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: 10.1.0
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
|
-
requirements:
|
123
|
-
- - ~>
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: 10.1.0
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
|
-
name: rspec
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
|
-
requirements:
|
131
|
-
- - ~>
|
132
|
-
- !ruby/object:Gem::Version
|
133
|
-
version: 2.14.1
|
134
|
-
type: :development
|
135
|
-
prerelease: false
|
136
|
-
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
|
-
requirements:
|
139
|
-
- - ~>
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: 2.14.1
|
142
|
-
- !ruby/object:Gem::Dependency
|
143
|
-
name: yard
|
144
|
-
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
|
-
requirements:
|
147
|
-
- - ~>
|
148
|
-
- !ruby/object:Gem::Version
|
149
|
-
version: 0.8.7
|
150
|
-
type: :development
|
151
|
-
prerelease: false
|
152
|
-
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
|
-
requirements:
|
155
|
-
- - ~>
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
version: 0.8.7
|
158
62
|
description:
|
159
63
|
email: farleyknight@gmail.com
|
160
64
|
executables: []
|
@@ -164,6 +68,26 @@ extra_rdoc_files:
|
|
164
68
|
- README.md
|
165
69
|
- README.textile
|
166
70
|
files:
|
71
|
+
- .gitignore
|
72
|
+
- .yardoc/checksums
|
73
|
+
- .yardoc/object_types
|
74
|
+
- .yardoc/objects/root.dat
|
75
|
+
- .yardoc/proxy_types
|
76
|
+
- Gemfile
|
77
|
+
- Gemfile.devtools
|
78
|
+
- Gemfile.lock
|
79
|
+
- LICENSE.txt
|
80
|
+
- README.md
|
81
|
+
- README.textile
|
82
|
+
- Rakefile
|
83
|
+
- VERSION
|
84
|
+
- config/devtools.yml
|
85
|
+
- config/flay.yml
|
86
|
+
- config/flog.yml
|
87
|
+
- config/mutant.yml
|
88
|
+
- config/reek.yml
|
89
|
+
- config/rubocop.yml
|
90
|
+
- config/yardstick.yml
|
167
91
|
- lib/masheri.rb
|
168
92
|
- lib/masheri/config.rb
|
169
93
|
- lib/masheri/exceptions.rb
|
@@ -174,14 +98,27 @@ files:
|
|
174
98
|
- lib/masheri/query_builder.rb
|
175
99
|
- lib/masheri/rails.rb
|
176
100
|
- lib/masheri/rest_client.rb
|
177
|
-
- lib/masheri/rest_client/base.rb
|
178
101
|
- lib/masheri/rest_client/query.rb
|
179
102
|
- lib/masheri/rpc_client.rb
|
103
|
+
- lib/masheri/rpc_client/base.rb
|
180
104
|
- lib/masheri/rpc_client/response.rb
|
181
105
|
- lib/masheri/service.rb
|
182
|
-
-
|
183
|
-
-
|
184
|
-
-
|
106
|
+
- masheri.gemspec
|
107
|
+
- spec/fixtures/config.no_host.yml
|
108
|
+
- spec/fixtures/config.no_key.yml
|
109
|
+
- spec/fixtures/config.no_secret.yml
|
110
|
+
- spec/fixtures/config.no_site_id.yml
|
111
|
+
- spec/fixtures/config.yml
|
112
|
+
- spec/fixtures/services.json
|
113
|
+
- spec/masheri/config_spec.rb
|
114
|
+
- spec/masheri/member_spec.rb
|
115
|
+
- spec/masheri/query_builder_spec.rb
|
116
|
+
- spec/masheri/rest_client_spec.rb
|
117
|
+
- spec/masheri/rpc_client_spec.rb
|
118
|
+
- spec/masheri/service_spec.rb
|
119
|
+
- spec/masheri_spec.rb
|
120
|
+
- spec/spec_helper.rb
|
121
|
+
- tasks/mashery.thor
|
185
122
|
homepage: http://github.com/farleyknight/masheri
|
186
123
|
licenses:
|
187
124
|
- MIT
|
@@ -197,7 +134,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
197
134
|
version: '0'
|
198
135
|
segments:
|
199
136
|
- 0
|
200
|
-
hash: -
|
137
|
+
hash: -3841780233226734084
|
201
138
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
202
139
|
none: false
|
203
140
|
requirements:
|
@@ -211,3 +148,4 @@ signing_key:
|
|
211
148
|
specification_version: 3
|
212
149
|
summary: Rails gem for Mashery. Clean config and includes tests with decent test coverage
|
213
150
|
test_files: []
|
151
|
+
has_rdoc:
|