From 5eba06ddf9f056ef973059461b47cd040731febb Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Wed, 10 Dec 2014 15:11:10 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=8A=A0=E5=85=A5api=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + Gemfile | 1 + Gemfile.lock | 4 ++++ app/api/mobile/api.rb | 1 + app/api/mobile/apis/auth.rb | 14 ++++++++++++-- app/api/mobile/apis/users.rb | 2 +- 6 files changed, 20 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 061314adc..f1eed7367 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ /config/configuration.yml .rbenv-gemsets .DS_Store +public/api_doc/ diff --git a/Gemfile b/Gemfile index 34a1a7956..1fe5b6c0f 100644 --- a/Gemfile +++ b/Gemfile @@ -20,6 +20,7 @@ gem "builder", "3.0.0" gem 'acts-as-taggable-on', '2.4.1' group :development do + gem 'grape-swagger' gem 'puma' gem 'better_errors', path: 'lib/better_errors' gem 'rack-mini-profiler', path: 'lib/rack-mini-profiler' diff --git a/Gemfile.lock b/Gemfile.lock index 377ded53e..95ea5b6e2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -110,6 +110,9 @@ GEM grape-entity (0.4.4) activesupport multi_json (>= 1.3.2) + grape-swagger (0.8.0) + grape + grape-entity guard (2.6.1) formatador (>= 0.2.4) listen (~> 2.7) @@ -307,6 +310,7 @@ DEPENDENCIES fastercsv (~> 1.5.0) grape (~> 0.9.0) grape-entity + grape-swagger guard-rails (~> 0.5.3) guard-spork (~> 1.5.1) guard-test (~> 1.0.0) diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index b540c73d3..548793f3e 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -28,6 +28,7 @@ module Mobile mount Apis::Users mount Apis::Courses + add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) end end diff --git a/app/api/mobile/apis/auth.rb b/app/api/mobile/apis/auth.rb index fa6fec6e2..136e5b171 100644 --- a/app/api/mobile/apis/auth.rb +++ b/app/api/mobile/apis/auth.rb @@ -10,12 +10,12 @@ module Mobile module Apis class Auth < Grape::API resource :auth do - desc "Creates and returns access_token if valid login" + desc "用户登录" params do requires :login, type: String, desc: 'Username or email' requires :password, type: String, desc: 'Password' end - post :login do + post do user,last_logon = ::User.try_to_login(params[:login], params[:password]) if user ::ApiKey.delete_all(user_id: user.id) @@ -27,6 +27,16 @@ module Mobile {status: 1, message: 'Unauthorized.'} end end + + desc "用户登出" + params do + end + delete do + authenticate! + ::ApiKey.delete_all(user_id: current_user.id) + {status: 0} + end + end end end diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index 9b5bf8c73..5dc25d401 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -40,7 +40,7 @@ module Mobile authenticate! us = UsersService.new begin - ue = us.edit_user params + ue = us.edit_user params.merge(id: current_user.id) {status: 0, data: ue} rescue => e {status: 1, message: e.message} From 6a3ebb5e94d5c40bed8bac0c4d15504bbb4447a2 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Wed, 10 Dec 2014 16:23:56 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=85=B3=E6=B3=A8=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/api.rb | 1 + app/api/mobile/apis/auth.rb | 1 + app/api/mobile/apis/courses.rb | 10 ++-- app/api/mobile/apis/users.rb | 9 ++-- app/api/mobile/apis/watches.rb | 53 +++++++++++++++++++ app/controllers/watchers_controller.rb | 4 +- .../{service.rb => watches_service.rb} | 2 +- 7 files changed, 66 insertions(+), 14 deletions(-) create mode 100644 app/api/mobile/apis/watches.rb rename app/services/{service.rb => watches_service.rb} (96%) diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index 548793f3e..64016458e 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -27,6 +27,7 @@ module Mobile mount Apis::Auth mount Apis::Users mount Apis::Courses + mount Apis::Watches add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) end diff --git a/app/api/mobile/apis/auth.rb b/app/api/mobile/apis/auth.rb index 136e5b171..ae233a853 100644 --- a/app/api/mobile/apis/auth.rb +++ b/app/api/mobile/apis/auth.rb @@ -30,6 +30,7 @@ module Mobile desc "用户登出" params do + requires :token, type: String end delete do authenticate! diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 1084e8cbc..9aeea5176 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -2,11 +2,11 @@ module Mobile module Apis class Courses < Grape::API resource :courses do - desc "get all courses" + desc "获取所有课程" params do - optional :school_id, type: Integer, desc: 'school number' - requires :per_page_count, type: Integer - requires :page, type: Integer, desc: 'current page no' + optional :school_id, type: Integer, desc: '传入学校id,返回该学校课程列表' + requires :per_page_count, type: Integer, desc: '每页总数' + requires :page, type: Integer, desc: '当前页码' end get do cs = CoursesService.new @@ -15,7 +15,7 @@ module Mobile present :status, 0 end - desc "Return a course" + desc "返回单个课程" params do requires :id, type: Integer end diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index 5dc25d401..d05809726 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -2,12 +2,8 @@ module Mobile module Apis class Users < Grape::API resource :users do - desc "get all users" - get do - ['hello'] - end - desc "add a user" + desc "注册用户" params do requires :login, type: String, desc: 'username' requires :mail, type: String, desc: 'mail' @@ -27,8 +23,9 @@ module Mobile end - desc "modify user" + desc "修改用户" params do + requires :token, type: String #optional :file, type: File, desc: 'avatar' optional :occupation, type: String optional :brief_introduction, type: String diff --git a/app/api/mobile/apis/watches.rb b/app/api/mobile/apis/watches.rb new file mode 100644 index 000000000..0715ff4a2 --- /dev/null +++ b/app/api/mobile/apis/watches.rb @@ -0,0 +1,53 @@ +module Mobile + module Apis + class Watches < Grape::API + resource :watches do + + desc "获取所有关注" + params do + requires :token, type: String + end + get do + authenticate! + ws = UsersService.new + ws.user_watcher(id: current_user.id) + end + + + desc "关注某人" + params do + requires :token, type: String + requires :object_id, type: Integer, desc: '关注的用户的id' + end + post do + authenticate! + ws = WatchesService.new + begin + o = ws.watch(params.merge({current_user_id:current_user.id, object_type:'user' }) ) + {status:0 , data: o} + rescue =>e + {status:1, message: e.message} + end + end + + + desc "取消关注" + params do + requires :token, type: String + requires :object_id, type: Integer, desc: '取消关注的用户的id' + end + delete do + authenticate! + ws = WatchesService.new + begin + ws.unwatch(params.merge({current_user_id:current_user.id, object_type:'user' }) ) + {status:0} + rescue =>e + {status:1, message: e.message} + end + end + + end + end + end +end \ No newline at end of file diff --git a/app/controllers/watchers_controller.rb b/app/controllers/watchers_controller.rb index 096e44f06..f6d01a03d 100644 --- a/app/controllers/watchers_controller.rb +++ b/app/controllers/watchers_controller.rb @@ -17,7 +17,7 @@ class WatchersController < ApplicationController before_filter :require_login#, :find_watchables, :only => [:watch, :unwatch] def watch - s = Service.new + s = WatchesService.new watchables = s.watch params.merge(:current_user_id => User.current.id) respond_to do |format| format.html { redirect_to_referer_or {render :text => (true ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} @@ -33,7 +33,7 @@ class WatchersController < ApplicationController end def unwatch - s = Service.new + s = WatchesService.new watchables = s.unwatch params.merge(:current_user_id => User.current.id) respond_to do |format| format.html { redirect_to_referer_or {render :text => (false ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} diff --git a/app/services/service.rb b/app/services/watches_service.rb similarity index 96% rename from app/services/service.rb rename to app/services/watches_service.rb index 413d9bfb8..2b9bed3cd 100644 --- a/app/services/service.rb +++ b/app/services/watches_service.rb @@ -1,4 +1,4 @@ -class Service +class WatchesService def watch params @current_user = User.find(params[:current_user_id]) @watchables = find_watchables params