masheri 0.5.6 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe Masheri do
4
+ # Test configuration?
5
+ end
@@ -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
+
@@ -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.5.6
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
- - LICENSE.txt
183
- - README.md
184
- - README.textile
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: -705859118272118547
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: