gc-restful-api 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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e57a6fc96b3ae1f71f3be3f8e82b43861e73b82f
4
+ data.tar.gz: 56c5b4d61a62bf650cfb38dccc66958098707f1d
5
+ SHA512:
6
+ metadata.gz: ce538681d63503fe9c225d696eb670809eebfd2736da8a6d2d37305422260baad5babe436ba783c7cb734321f1331007362ecc72e2bdf22802ee750c06984a20
7
+ data.tar.gz: f2e68419eece3f8b8b17780536cf06a4104e45fa014b56bcd283ad9fefc78cef242db9b8db9a125519c3c85e98596bcf623b06d48673c6bb3dae209f442f871d
@@ -0,0 +1,5 @@
1
+ *.lock
2
+ *.gem
3
+ cookies
4
+ storage
5
+ pkg
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in gc-restful-api.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 Ran
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.
@@ -0,0 +1,40 @@
1
+ # Gc::Restful::Api
2
+
3
+ A Rack middleware of RESTful API for Git-Contacts.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'gc-restful-api'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install gc-restful-api
20
+
21
+ ## Usage
22
+
23
+ ```ruby
24
+ require "erb"
25
+ require 'sinatra'
26
+ require "sinatra/config_file"
27
+ require "gc-restful-api"
28
+
29
+ register Sinatra::ConfigFile
30
+
31
+ # load configration
32
+ config_file "config.yml"
33
+
34
+ get '/' do
35
+ content_type 'text/html'
36
+ erb :index
37
+ end
38
+
39
+ use App
40
+ ```
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'api/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "gc-restful-api"
8
+ spec.version = Api::VERSION
9
+ spec.authors = ["Ran"]
10
+ spec.email = ["abbshr@outlook.com"]
11
+ spec.summary = %q{Git-Contacts Restful API}
12
+ spec.description = %q{Git-Contacts Restful API}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
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_runtime_dependency "gitcontacts", "~> 0.1.4"
22
+ spec.add_runtime_dependency "sinatra", "~> 1.4.5"
23
+ spec.add_runtime_dependency "thin", "~> 1.6.3"
24
+ spec.add_runtime_dependency "sinatra-contrib", "~> 1.4.2"
25
+ spec.add_runtime_dependency "moneta", "~> 0.8.0"
26
+
27
+ spec.add_development_dependency "bundler", "~> 1.7"
28
+ spec.add_development_dependency "rake", "~> 10.0"
29
+ end
@@ -0,0 +1,115 @@
1
+ class App
2
+ # code review: @abbshr
3
+ # 获取cards
4
+ # => /contacts/id/cards?keyword=ninja_2000
5
+ get '/contacts/:contacts_id/cards' do
6
+ if uid = session[:uid]
7
+ @return_message[:cards] = GitContacts::get_contacts_cards_by_related(uid, params[:contacts_id], params[:keyword] || '')
8
+ case GitContacts::errsym
9
+ when :ok
10
+ @return_message[:success] = 1
11
+ when :forbidden
12
+ @return_message[:errmsg] = 'Access Forbidden'
13
+ status 403
14
+ end
15
+ else
16
+ @return_message[:errmsg] = "Token invalid."
17
+ status 401
18
+ end
19
+ @return_message.to_json
20
+ end
21
+
22
+ # code review: @abbshr
23
+ get '/contacts/:contacts_id/card/:card_id' do
24
+ if uid = session[:uid]
25
+ @return_message[:card] = GitContacts::get_contacts_card(uid, params[:contacts_id], params[:card_id])
26
+ case GitContacts::errsym
27
+ when :ok
28
+ @return_message[:success] = 1
29
+ when :forbidden
30
+ @return_message[:errmsg] = 'Access Forbidden'
31
+ status 403
32
+ when :non_exist
33
+ @return_message[:errmsg] = 'Card Not Found'
34
+ status 404
35
+ end
36
+ else
37
+ @return_message[:errmsg] = "Token invalid."
38
+ status 401
39
+ end
40
+ @return_message.to_json
41
+ end
42
+
43
+ # code review: @abbshr
44
+ post '/contacts/:contacts_id/card' do
45
+ if uid = session[:uid]
46
+ ret = GitContacts::add_contacts_card(uid, params[:contacts_id], @body[:payload])
47
+ case GitContacts::errsym
48
+ when :ok
49
+ @return_message[:success] = 1
50
+ @return_message[:card_id] = ret
51
+ when :pend
52
+ @return_message[:pending] = 1
53
+ @return_message[:qid] = ret
54
+ status 202
55
+ when :forbidden
56
+ @return_message[:errmsg] = 'Access Forbidden'
57
+ status 403
58
+ end
59
+ else
60
+ @return_message[:errmsg] = "Token invalid."
61
+ status 401
62
+ end
63
+ @return_message.to_json
64
+ end
65
+
66
+ # code review: @abbshr
67
+ patch '/contacts/:contacts_id/card/:card_id' do
68
+ if uid = session[:uid]
69
+ ret = GitContacts::edit_contacts_card(uid, params[:contacts_id], params[:card_id], @body[:payload])
70
+ case GitContacts::errsym
71
+ when :ok
72
+ @return_message[:success] = 1
73
+ when :pend
74
+ @return_message[:pending] = 1
75
+ @return_message[:qid] = ret
76
+ status 202
77
+ when :forbidden
78
+ @return_message[:errmsg] = 'Access Forbidden'
79
+ status 403
80
+ when :non_exist
81
+ @return_message[:errmsg] = 'Card Not Found'
82
+ status 404
83
+ end
84
+ else
85
+ @return_message[:errmsg] = "Token invalid."
86
+ status 401
87
+ end
88
+ @return_message.to_json
89
+ end
90
+
91
+ # code review: @abbshr
92
+ delete '/contacts/:contacts_id/card/:card_id' do
93
+ if uid = session[:uid]
94
+ ret = GitContacts::delete_contacts_card(uid, params[:contacts_id], params[:card_id])
95
+ case GitContacts::errsym
96
+ when :ok
97
+ @return_message[:success] = 1
98
+ when :pend
99
+ @return_message[:pending] = 1
100
+ @return_message[:qid] = ret
101
+ status 202
102
+ when :forbidden
103
+ @return_message[:errmsg] = 'Access Forbidden'
104
+ status 403
105
+ when :non_exist
106
+ @return_message[:errmsg] = 'Card Not Found'
107
+ status 404
108
+ end
109
+ else
110
+ @return_message[:errmsg] = "Token invalid"
111
+ status 401
112
+ end
113
+ @return_message.to_json
114
+ end
115
+ end
@@ -0,0 +1,119 @@
1
+ class App
2
+ # code review: @abbshr
3
+ # => /contacts?count=20&filter=gt&name=family
4
+ get '/contacts' do
5
+ if uid = session[:uid]
6
+ params[:name] ||= ''
7
+ params[:count] = params[:count].to_i || 0
8
+ @return_message[:contacts] = GitContacts::get_contacts_if uid do |contacts|
9
+ case params[:filter]
10
+ when 'eq'
11
+ cond = contacts[:count] == params[:count]
12
+ when 'gt'
13
+ cond = contacts[:count] >= params[:count]
14
+ when 'lt'
15
+ cond = contacts[:count] <= params[:count]
16
+ else
17
+ cond = true
18
+ end
19
+ cond && contacts[:name].include?(params[:name])
20
+ end
21
+ @return_message[:success] = 1 if GitContacts::errsym == :ok
22
+ else
23
+ @return_message[:errmsg] = "Token invalid."
24
+ status 401
25
+ end
26
+ @return_message.to_json
27
+ end
28
+
29
+ # code review: @abbshr
30
+ post '/contacts' do
31
+ if uid = session[:uid]
32
+ @return_message[:contacts_id] = GitContacts::add_contacts(uid, @body[:contacts_name])
33
+ case GitContacts::errsym
34
+ when :ok
35
+ @return_message[:success] = 1
36
+ when :miss_args
37
+ @return_message[:errmsg] = 'Contacts Name is Required'
38
+ status 400
39
+ end
40
+ else
41
+ @return_message[:errmsg] = "Token invalid."
42
+ status 401
43
+ end
44
+ @return_message.to_json
45
+ end
46
+
47
+ get '/contacts/:contacts_id' do
48
+ if uid = session[:uid]
49
+ @return_message[:contact] = GitContacts::get_contacts_if uid do |contact|
50
+ contact[:gid] == params[:contacts_id]
51
+ end.first
52
+ @return_message[:success] = 1 if GitContacts::errsym == :ok
53
+ else
54
+ @return_message[:errmsg] = 'Token invalid'
55
+ status 401
56
+ end
57
+ @return_message.to_json
58
+ end
59
+
60
+ # code review: @abbshr
61
+ patch '/contacts/:contacts_id' do
62
+ if uid = session[:uid]
63
+ GitContacts::edit_contacts_meta(uid, params[:contacts_id], @body[:metadata])
64
+ case GitContacts::errsym
65
+ when :ok
66
+ @return_message[:success] = 1
67
+ when :miss_args
68
+ @return_message[:errmsg] = 'Metadata is Required'
69
+ status 400
70
+ when :forbidden
71
+ @return_message[:errmsg] = "Access Forbidden"
72
+ status 403
73
+ end
74
+ else
75
+ @return_message[:errmsg] = "Token invalid."
76
+ status 401
77
+ end
78
+ @return_message.to_json
79
+ end
80
+
81
+ # code review: @abbshr
82
+ get '/contacts/:contacts_id/history' do
83
+ if uid = session[:uid]
84
+ @return_message[:history] = GitContacts::get_contacts_history(uid, params[:contacts_id])
85
+ case GitContacts::errsym
86
+ when :ok
87
+ @return_message[:success] = 1
88
+ when :forbidden
89
+ @return_message[:errmsg] = 'Access Forbidden'
90
+ status 403
91
+ end
92
+ else
93
+ @return_message[:errmsg] = "Token invalid."
94
+ status 401
95
+ end
96
+ @return_message.to_json
97
+ end
98
+
99
+ # code review: @abbshr
100
+ post '/contacts/:contacts_id/revert' do
101
+ if uid = session[:uid]
102
+ @return_message[:oid] = GitContacts::revert_to(uid, params[:contacts_id], @body[:oid])
103
+ case GitContacts::errsym
104
+ when :ok
105
+ @return_message[:success] = 1
106
+ when :forbidden
107
+ @return_message[:errmsg] = 'Access Forbidden'
108
+ status 403
109
+ when :non_exist
110
+ @return_message[:errmsg] = 'Commit Not Found'
111
+ status 404
112
+ end
113
+ else
114
+ @return_message[:errmsg] = "Token invalid."
115
+ status 401
116
+ end
117
+ @return_message.to_json
118
+ end
119
+ end
@@ -0,0 +1,51 @@
1
+ class App
2
+ # code review: @AustinChou
3
+ get '/contacts/:contacts_id/requests' do
4
+ if uid = session[:uid]
5
+ @return_message[:requests] = GitContacts::get_all_requests params[:contacts_id]
6
+ @return_message[:success] = 1 if GitContacts::errsym == :ok
7
+ else
8
+ @return_message[:errmsg] = "Token invalid."
9
+ status 401
10
+ end
11
+ @return_message.to_json
12
+ end
13
+
14
+ get '/contacts/:contacts_id/request/:request_id' do
15
+ if uid = session[:uid]
16
+ @return_message[:request] = GitContacts::get_a_request params[:contacts_id], params[:request_id]
17
+ case GitContacts::errsym
18
+ when :ok
19
+ @return_message[:success] = 1
20
+ when :non_exist
21
+ @return_message[:errmsg] = 'Request Not Found'
22
+ status 404
23
+ end
24
+ else
25
+ @return_message[:errmsg] = "Token invalid"
26
+ status 401
27
+ end
28
+ @return_message.to_json
29
+ end
30
+
31
+ # code review: @AustinChou
32
+ patch '/contacts/:contacts_id/request/:request_id/status' do
33
+ if uid = session[:uid]
34
+ GitContacts::edit_request_status(uid, params[:contacts_id], params[:request_id], @body[:action])
35
+ case GitContacts::errsym
36
+ when :ok
37
+ @return_message[:success] = 1
38
+ when :forbidden
39
+ @return_message[:errmsg] = 'Access Forbidden'
40
+ status 403
41
+ when :non_exist
42
+ @return_message[:errmsg] = 'Request Not Found'
43
+ status 404
44
+ end
45
+ else
46
+ @return_message[:errmsg] = "Token invalid."
47
+ status 401
48
+ end
49
+ @return_message.to_json
50
+ end
51
+ end
@@ -0,0 +1,174 @@
1
+ class App
2
+ # code review: @abbshr
3
+ post '/login' do
4
+ unless session[:uid]
5
+ if GitContacts::password_valid?(@body[:email], @body[:password])
6
+ # mark email as uid
7
+ session[:uid] = @body[:email]
8
+ @return_message[:success] = 1
9
+ else
10
+ status 401
11
+ @return_message[:errmsg] = "Email and password combination incorrect."
12
+ end
13
+ else
14
+ status 403
15
+ @return_message[:errmsg] = 'has been login'
16
+ end
17
+ @return_message.to_json
18
+ end
19
+
20
+ post '/register' do
21
+ unless session[:uid]
22
+ GitContacts::create_user(@body)
23
+ case GitContacts::errsym
24
+ when :ok
25
+ @return_message[:success] = 1
26
+ session[:uid] = @body[:email]
27
+ when :miss_args
28
+ @return_message[:errmsg] = 'Missing Email or Password'
29
+ status 400
30
+ when :exist
31
+ @return_message[:errmsg] = 'Email has been Taken'
32
+ status 409
33
+ end
34
+ else
35
+ @return_message[:errmsg] = "has been login"
36
+ status 403
37
+ end
38
+ @return_message.to_json
39
+ end
40
+
41
+ # code review: @abbshr
42
+ get '/logout' do
43
+ if session[:uid]
44
+ @return_message[:success] = 1
45
+ session.clear
46
+ else
47
+ @return_message[:errmsg] = "Not login."
48
+ status 403
49
+ end
50
+ @return_message.to_json
51
+ end
52
+
53
+ get '/users' do
54
+ if uid = session[:uid]
55
+ @return_message[:users] = GitContacts::get_users uid
56
+ @return_message[:success] = 1 if GitContacts::errsym == :ok
57
+ else
58
+ @return_message[:errmsg] = "Token invalid"
59
+ status 401
60
+ end
61
+ @return_message.to_json
62
+ end
63
+
64
+ get '/user/:user_id' do
65
+ if uid = session[:uid]
66
+ @return_message[:user] = GitContacts::get_a_user uid, params[:user_id]
67
+ case GitContacts::errsym
68
+ when :ok
69
+ @return_message[:success] = 1
70
+ when :non_exist
71
+ @return_message[:errmsg] = "User Not Found"
72
+ status 404
73
+ end
74
+ else
75
+ @return_message[:errmsg] = "Token invalid"
76
+ status 401
77
+ end
78
+ @return_message.to_json
79
+ end
80
+
81
+ # code review: @abbshr
82
+ get '/contacts/:contacts_id/users' do
83
+ if uid = session[:uid]
84
+ @return_message[:users] = GitContacts::get_contacts_users uid, params[:contacts_id]
85
+ case GitContacts::errsym
86
+ when :ok
87
+ @return_message[:success] = 1
88
+ when :forbidden
89
+ @return_message[:errmsg] = 'Access Forbidden'
90
+ status 403
91
+ end
92
+ else
93
+ @return_message[:errmsg] = "Token invalid."
94
+ status 401
95
+ end
96
+ @return_message.to_json
97
+ end
98
+
99
+ post '/contacts/:contacts_id/user' do
100
+ if uid = session[:uid]
101
+ GitContacts::add_contacts_user uid, params[:contacts_id], @body[:uid]
102
+ case GitContacts::errsym
103
+ when :ok
104
+ @return_message[:success] = 1
105
+ when :non_exist
106
+ @return_message[:errmsg] = 'User Not Found'
107
+ status 404
108
+ when :forbidden
109
+ @return_message[:errmsg] = 'Access Forbidden'
110
+ status 403
111
+ end
112
+ else
113
+ @return_message[:errmsg] = 'Token invalid'
114
+ status 401
115
+ end
116
+ @return_message.to_json
117
+ end
118
+
119
+ get '/contacts/:contacts_id/user/:user_id/privilege' do
120
+ if uid = session[:uid]
121
+ @return_message[:privilege] = GitContacts::get_contacts_user_privileges(uid, params[:contacts_id], params[:user_id])
122
+ case GitContacts::errsym
123
+ when :ok
124
+ @return_message[:success] = 1
125
+ when :forbidden
126
+ @return_message[:errmsg] = 'Access Forbidden'
127
+ status 403
128
+ end
129
+ else
130
+ status 401
131
+ @return_message[:errmsg] = "Token invaild"
132
+ end
133
+ @return_message.to_json
134
+ end
135
+
136
+ # code review: @AustinChou
137
+ delete '/contacts/:contacts_id/user/:user_id' do
138
+ if uid = session[:uid]
139
+ GitContacts::remove_contacts_user(uid, params[:contacts_id], params[:user_id])
140
+ case GitContacts::errsym
141
+ when :ok
142
+ @return_message[:success] = 1
143
+ when :forbidden
144
+ @return_message[:errmsg] = 'Access Forbidden'
145
+ status 403
146
+ end
147
+ else
148
+ @return_message[:errmsg] = "Token invalid."
149
+ status 401
150
+ end
151
+ @return_message.to_json
152
+ end
153
+
154
+ # code review: @AustinChou
155
+ patch '/contacts/:contacts_id/user/:user_id/privilege' do
156
+ if uid = session[:uid]
157
+ GitContacts::edit_contacts_user_privileges(uid, params[:contacts_id], params[:user_id], @body[:role])
158
+ case GitContacts::errsym
159
+ when :ok
160
+ @return_message[:success] = 1
161
+ when :bad_args
162
+ @return_message[:errmsg] = 'Invalid role'
163
+ status 400
164
+ when :forbidden
165
+ @return_message[:errmsg] = 'Access Forbidden'
166
+ status 403
167
+ end
168
+ else
169
+ @return_message[:errmsg] = "Token invalid."
170
+ status 401
171
+ end
172
+ @return_message.to_json
173
+ end
174
+ end
@@ -0,0 +1,3 @@
1
+ module Api
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,37 @@
1
+ require 'sinatra'
2
+ require 'sinatra/base'
3
+ require "sinatra/cookies"
4
+ require "sinatra/config_file"
5
+ require "rack/session/moneta"
6
+ require 'json'
7
+ require 'gitcontacts'
8
+
9
+ class Hash
10
+ def to_json
11
+ JSON.generate self
12
+ end
13
+ end
14
+
15
+ # session control
16
+ use Rack::Session::Moneta, store: Moneta.new(:Redis, expires: 60 * 60 * 24 * 7)
17
+
18
+ class App < Sinatra::Base
19
+ # before each request
20
+ before do
21
+ # TODO: a pretty way to get request json
22
+ begin
23
+ @body = JSON.parse request.body.read, { symbolize_names: true }
24
+ rescue => e
25
+ puts "Error: [ #{e} ]"
26
+ end
27
+ content_type 'application/json'
28
+ status 200
29
+ @return_message = {}
30
+ end
31
+
32
+ # routes
33
+ require 'api/routes/contacts'
34
+ require 'api/routes/card'
35
+ require 'api/routes/user'
36
+ require 'api/routes/request'
37
+ end
metadata ADDED
@@ -0,0 +1,154 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gc-restful-api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Ran
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: gitcontacts
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.1.4
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.1.4
27
+ - !ruby/object:Gem::Dependency
28
+ name: sinatra
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.4.5
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.4.5
41
+ - !ruby/object:Gem::Dependency
42
+ name: thin
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 1.6.3
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 1.6.3
55
+ - !ruby/object:Gem::Dependency
56
+ name: sinatra-contrib
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.4.2
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 1.4.2
69
+ - !ruby/object:Gem::Dependency
70
+ name: moneta
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.8.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.8.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.7'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.7'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '10.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '10.0'
111
+ description: Git-Contacts Restful API
112
+ email:
113
+ - abbshr@outlook.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - ".gitignore"
119
+ - Gemfile
120
+ - LICENSE.txt
121
+ - README.md
122
+ - Rakefile
123
+ - gc-restful-api.gemspec
124
+ - lib/api/routes/card.rb
125
+ - lib/api/routes/contacts.rb
126
+ - lib/api/routes/request.rb
127
+ - lib/api/routes/user.rb
128
+ - lib/api/version.rb
129
+ - lib/gc-restful-api.rb
130
+ homepage: ''
131
+ licenses:
132
+ - MIT
133
+ metadata: {}
134
+ post_install_message:
135
+ rdoc_options: []
136
+ require_paths:
137
+ - lib
138
+ required_ruby_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ required_rubygems_version: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ requirements: []
149
+ rubyforge_project:
150
+ rubygems_version: 2.2.2
151
+ signing_key:
152
+ specification_version: 4
153
+ summary: Git-Contacts Restful API
154
+ test_files: []