mn_client 0.0.1

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: eced5763288b044ad30ee108159ac798d7af2e92
4
+ data.tar.gz: 774dacd12af135ddaf50961349d47b22a00b8da8
5
+ SHA512:
6
+ metadata.gz: 532b3329089333dbcf9d087c8b5395b1b9cdabfacc31bc6e4d3a75d3aaebd044b5c85a03bc9336d9216c6a8c34dc57d96fd0b11c6b0153988941406c4c3e78a6
7
+ data.tar.gz: effd1a2fb6703ed815f7882c56e509a9c303f06decd4a9a7839ae34e40f14c284f473976dc1259201751460257761dbc2e66e6c74a96b0e4aa966ce9d703c8a2
data/.gitignore ADDED
@@ -0,0 +1,27 @@
1
+ *~
2
+ *.swp
3
+ *.gem
4
+ *.rbc
5
+ .bundle
6
+ .config
7
+ .yardoc
8
+ *.bak
9
+ *.log
10
+ *.tar.bz2
11
+ *.tar.gz
12
+ *.zip
13
+ .settings
14
+ .svn
15
+ .project
16
+ InstalledFiles
17
+ _yardoc
18
+ coverage
19
+ doc/
20
+ lib/bundler/man
21
+ pkg
22
+ rdoc
23
+ spec/reports
24
+ test/tmp
25
+ test/version_tmp
26
+ tmp
27
+ nohub.out
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in mn_client.gemspec
4
+ gemspec
5
+
data/Gemfile.lock ADDED
@@ -0,0 +1,66 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ mn_client (0.0.1)
5
+ em-http-request
6
+ em-synchrony
7
+ faraday
8
+ multi_json
9
+ yajl-ruby
10
+
11
+ GEM
12
+ remote: https://rubygems.org/
13
+ specs:
14
+ addressable (2.3.2)
15
+ coderay (1.0.9)
16
+ cookiejar (0.3.0)
17
+ em-http-request (1.0.3)
18
+ addressable (>= 2.2.3)
19
+ cookiejar
20
+ em-socksify
21
+ eventmachine (>= 1.0.0.beta.4)
22
+ http_parser.rb (>= 0.5.3)
23
+ em-socksify (0.2.1)
24
+ eventmachine (>= 1.0.0.beta.4)
25
+ em-synchrony (1.0.3)
26
+ eventmachine (>= 1.0.0.beta.1)
27
+ eventmachine (1.0.1)
28
+ faraday (0.8.7)
29
+ multipart-post (~> 1.1)
30
+ ffi (1.7.0)
31
+ formatador (0.2.4)
32
+ guard (1.7.0)
33
+ formatador (>= 0.2.4)
34
+ listen (>= 0.6.0)
35
+ lumberjack (>= 1.0.2)
36
+ pry (>= 0.9.10)
37
+ thor (>= 0.14.6)
38
+ guard-minitest (0.5.0)
39
+ guard (>= 0.4)
40
+ http_parser.rb (0.5.3)
41
+ listen (0.7.3)
42
+ lumberjack (1.0.3)
43
+ method_source (0.8.1)
44
+ multi_json (1.7.2)
45
+ multipart-post (1.2.0)
46
+ pry (0.9.12)
47
+ coderay (~> 1.0.5)
48
+ method_source (~> 0.8)
49
+ slop (~> 3.4)
50
+ rake (10.0.4)
51
+ rb-inotify (0.9.0)
52
+ ffi (>= 0.5.0)
53
+ slop (3.4.4)
54
+ thor (0.18.1)
55
+ yajl-ruby (1.1.0)
56
+
57
+ PLATFORMS
58
+ ruby
59
+
60
+ DEPENDENCIES
61
+ bundler (~> 1.3)
62
+ guard-minitest
63
+ mn_client!
64
+ pry
65
+ rake
66
+ rb-inotify
data/Guardfile ADDED
@@ -0,0 +1,25 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard 'minitest' do
5
+ # with Minitest::Unit
6
+ watch(%r|^test/(.*)\/?test_(.*)\.rb|)
7
+ watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
8
+ watch(%r|^test/test_helper\.rb|) { "test" }
9
+
10
+ # with Minitest::Spec
11
+ # watch(%r|^spec/(.*)_spec\.rb|)
12
+ # watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
13
+ # watch(%r|^spec/spec_helper\.rb|) { "spec" }
14
+
15
+ # Rails 3.2
16
+ # watch(%r|^app/controllers/(.*)\.rb|) { |m| "test/controllers/#{m[1]}_test.rb" }
17
+ # watch(%r|^app/helpers/(.*)\.rb|) { |m| "test/helpers/#{m[1]}_test.rb" }
18
+ # watch(%r|^app/models/(.*)\.rb|) { |m| "test/unit/#{m[1]}_test.rb" }
19
+
20
+ # Rails
21
+ # watch(%r|^app/controllers/(.*)\.rb|) { |m| "test/functional/#{m[1]}_test.rb" }
22
+ # watch(%r|^app/helpers/(.*)\.rb|) { |m| "test/helpers/#{m[1]}_test.rb" }
23
+ # watch(%r|^app/models/(.*)\.rb|) { |m| "test/unit/#{m[1]}_test.rb" }
24
+ end
25
+
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Andersen Fan
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # MnClient
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'mn_client'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install mn_client
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ require "bundler/setup"
2
+ require "bundler/gem_tasks"
3
+ require "rake/testtask"
4
+ require 'yaml'
5
+
6
+ Rake::TestTask.new do |t|
7
+ t.libs << "test"
8
+ t.test_files = FileList["test/**/test*.rb"]
9
+ t.verbose = true
10
+ end
11
+
12
+ desc "Run tests"
13
+ task default: :test
14
+
data/config/mn_api.yml ADDED
@@ -0,0 +1,2 @@
1
+ #app_key: "30867601"
2
+ #app_secret: "8a714afa86dc4cbd898a4a19a587583d"
data/lib/mn_client.rb ADDED
@@ -0,0 +1,6 @@
1
+ require "mn_client/version"
2
+ require "mn_client/client"
3
+
4
+ module MnClient
5
+ # Your code goes here...
6
+ end
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+
3
+ require "digest/md5"
4
+
5
+ module MnClient
6
+ module API
7
+ module Auth
8
+
9
+ def generate_signature(params,app_key,app_secret)
10
+ params_str = params.keys.sort.map{|key| [key,params[key]] }.flatten.join
11
+ sign = app_key+params_str+app_secret
12
+ Digest::SHA1.hexdigest(sign).upcase
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+
@@ -0,0 +1,15 @@
1
+ module MnClient
2
+ module API
3
+ module Note
4
+
5
+ def all_notes(options={})
6
+ get "/notes/all", options
7
+ end
8
+
9
+ def find_notes(options={})
10
+ get "/notes/all", options
11
+ end
12
+ end
13
+ end
14
+ end
15
+
File without changes
@@ -0,0 +1,23 @@
1
+ require "faraday"
2
+ require "mn_client/connection"
3
+ require "mn_client/request"
4
+ require "mn_client/response/parse_json"
5
+ require "mn_client/response/raise_error"
6
+ require "mn_client/api/note"
7
+
8
+ module MnClient
9
+ class Client
10
+ include MnClient::Connection
11
+ include MnClient::Request
12
+ include MnClient::API::Note
13
+
14
+ # Initializes a new Client object
15
+ #
16
+ # @param options [Hash]
17
+ # @return [MnClient::Client]
18
+ def initialize(options={})
19
+ end
20
+
21
+ end
22
+ end
23
+
@@ -0,0 +1,21 @@
1
+ require "faraday"
2
+ require 'em-http'
3
+ require "mn_client/response/parse_json"
4
+ require "mn_client/response/raise_error"
5
+
6
+ module MnClient
7
+ module Connection
8
+
9
+ def connection
10
+ @connection ||= Faraday.new(url: "http://localhost:9000") do |faraday|
11
+ faraday.request :url_encoded
12
+ faraday.response :logger
13
+ faraday.use Faraday::Adapter::EMSynchrony # make http request with eventmachine and synchrony
14
+ faraday.use MnClient::Response::ParseJson # Parse JSON response bodies using MultiJson
15
+ faraday.use MnClient::Response::RaiseError
16
+ end
17
+ end
18
+
19
+ end
20
+ end
21
+
@@ -0,0 +1,26 @@
1
+ module MnClient
2
+ # Custom error class for rescuing from all MnClient errors
3
+ class Error < StandardError
4
+ end
5
+
6
+ # Raised when API returns the HTTP status code 4xx
7
+ class BadRequest < Error
8
+ end
9
+
10
+ # Raised when API returns the HTTP status code 401
11
+ class NotAuthorized < Error
12
+ end
13
+
14
+ # Raised when API returns the HTTP status code 404
15
+ class NotFound < Error
16
+ end
17
+
18
+ # Raised when API returns the HTTP status code 5xx
19
+ class InternalServerError < Error
20
+ end
21
+
22
+ # Raised when API returns the HTTP status code 503
23
+ class ServiceUnavailable < Error
24
+ end
25
+ end
26
+
File without changes
File without changes
@@ -0,0 +1,31 @@
1
+ module MnClient
2
+ module Request
3
+
4
+ # Perform an HTTP DELETE request
5
+ def delete(path, params={})
6
+ request(:delete, path, params)
7
+ end
8
+
9
+ # Perform an HTTP GET request
10
+ def get(path, params={})
11
+ request(:get, path, params)
12
+ end
13
+
14
+ # Perform an HTTP POST request
15
+ def post(path, params={})
16
+ signature_params = params.values.any?{|value| value.respond_to?(:to_io)} ? {} : params
17
+ request(:post, path, params, signature_params)
18
+ end
19
+
20
+ # Perform an HTTP PUT request
21
+ def put(path, params={})
22
+ request(:put, path, params)
23
+ end
24
+
25
+ def request(method, path, params={})
26
+ connection.send(method.to_sym, path, params).body
27
+ end
28
+
29
+ end
30
+ end
31
+
@@ -0,0 +1,25 @@
1
+ require 'faraday'
2
+ require 'multi_json'
3
+
4
+ module MnClient
5
+ module Response
6
+ class ParseJson < Faraday::Response::Middleware
7
+
8
+ def parse(body)
9
+ case body
10
+ when /\A^\s*$\z/, nil
11
+ nil
12
+ else
13
+ MultiJson.decode(body, :symbolize_keys => true)
14
+ end
15
+ end
16
+
17
+ def on_complete(env)
18
+ if respond_to?(:parse)
19
+ env[:body] = parse(env[:body]) unless [204, 301, 302, 304].include?(env[:status])
20
+ end
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,41 @@
1
+ require 'faraday'
2
+ require 'mn_client/error'
3
+
4
+ module MnClient
5
+ module Response
6
+ class RaiseError < Faraday::Response::Middleware
7
+
8
+ def on_complete(env)
9
+ case env[:status].to_i
10
+ when 400
11
+ raise MnClient::BadRequest.new(error_message(env))
12
+ when 401
13
+ raise MnClient::NotAuthorized.new(error_message(env))
14
+ when 404
15
+ raise MnClient::NotFound.new(error_message(env))
16
+ when 400...500
17
+ raise MnClient::BadRequest.new(error_message(env))
18
+ end
19
+ end
20
+
21
+ private
22
+ def error_message(env)
23
+ [
24
+ env[:method].to_s.upcase,
25
+ env[:url].to_s,
26
+ env[:status],
27
+ error_body(env[:body])
28
+ ].join(': ')
29
+ end
30
+
31
+ def error_body(body)
32
+ if body.nil?
33
+ nil
34
+ elsif body['meta'] && body['meta']['msg']
35
+ body['meta']['msg']
36
+ end
37
+ end
38
+
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,3 @@
1
+ module MnClient
2
+ VERSION = "0.0.1"
3
+ end
data/mn_client.gemspec ADDED
@@ -0,0 +1,35 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'mn_client/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "mn_client"
8
+ spec.version = MnClient::VERSION
9
+ spec.authors = ["Andersen Fan"]
10
+ spec.email = ["as181920@hotmail.com"]
11
+ spec.description = %q{micro_notes client}
12
+ spec.summary = %q{client for micro_notes api server}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ #spec.add_dependency "httparty"
22
+ spec.add_dependency 'faraday'
23
+ #spec.add_dependency 'faraday_middleware'
24
+ spec.add_dependency 'em-synchrony'
25
+ spec.add_dependency 'em-http-request'
26
+ spec.add_dependency 'yajl-ruby'
27
+ spec.add_dependency 'multi_json'
28
+
29
+ spec.add_development_dependency "bundler", "~> 1.3"
30
+ spec.add_development_dependency "rake"
31
+ spec.add_development_dependency "pry"
32
+ spec.add_development_dependency "guard-minitest"
33
+ spec.add_development_dependency "rb-inotify"
34
+ end
35
+
@@ -0,0 +1,22 @@
1
+ require 'minitest/autorun'
2
+ require 'mn_client'
3
+ require "pry"
4
+
5
+ describe MnClient do
6
+ before do
7
+ @client = MnClient::Client.new
8
+ end
9
+
10
+ describe "CRUD for Note" do
11
+ it "get notes with correct format" do
12
+ notes = @client.all_notes
13
+ notes.must_be_instance_of Array
14
+ notes.last.keys.must_include :note
15
+ notes.last[:note].keys.must_include :id
16
+ notes.last[:note].keys.must_include :name
17
+ notes.last[:note].keys.must_include :description
18
+ notes.last[:note].keys.must_include :created_at
19
+ notes.last[:note].keys.must_include :updated_at
20
+ end
21
+ end
22
+ end
metadata ADDED
@@ -0,0 +1,208 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mn_client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Andersen Fan
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-04-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: em-synchrony
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: em-http-request
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: yajl-ruby
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: multi_json
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '1.3'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '1.3'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: guard-minitest
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rb-inotify
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ description: micro_notes client
154
+ email:
155
+ - as181920@hotmail.com
156
+ executables: []
157
+ extensions: []
158
+ extra_rdoc_files: []
159
+ files:
160
+ - .gitignore
161
+ - Gemfile
162
+ - Gemfile.lock
163
+ - Guardfile
164
+ - LICENSE.txt
165
+ - README.md
166
+ - Rakefile
167
+ - config/mn_api.yml
168
+ - lib/mn_client.rb
169
+ - lib/mn_client/api/auth.rb
170
+ - lib/mn_client/api/note.rb
171
+ - lib/mn_client/api/utils.rb
172
+ - lib/mn_client/client.rb
173
+ - lib/mn_client/connection.rb
174
+ - lib/mn_client/error.rb
175
+ - lib/mn_client/error/client_error.rb
176
+ - lib/mn_client/error/not_found.rb
177
+ - lib/mn_client/request.rb
178
+ - lib/mn_client/response/parse_json.rb
179
+ - lib/mn_client/response/raise_error.rb
180
+ - lib/mn_client/version.rb
181
+ - mn_client.gemspec
182
+ - test/mn_client/test_mn.rb
183
+ homepage: ''
184
+ licenses:
185
+ - MIT
186
+ metadata: {}
187
+ post_install_message:
188
+ rdoc_options: []
189
+ require_paths:
190
+ - lib
191
+ required_ruby_version: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - '>='
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ required_rubygems_version: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - '>='
199
+ - !ruby/object:Gem::Version
200
+ version: '0'
201
+ requirements: []
202
+ rubyforge_project:
203
+ rubygems_version: 2.0.0.rc.2
204
+ signing_key:
205
+ specification_version: 4
206
+ summary: client for micro_notes api server
207
+ test_files:
208
+ - test/mn_client/test_mn.rb