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.
@@ -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: