lib/growi/client/apireq/api_request_pages.rb in growi-client-0.9.0 vs lib/growi/client/apireq/api_request_pages.rb in growi-client-1.0.0

- old
+ new

@@ -1,10 +1,11 @@ require_relative 'api_request_base' require 'growi/client/model/growi_page' +require 'growi/client/logger' # ページ一覧リクエスト用クラス -# @ref https://github.com/growi/growi/blob/master/lib/routes/page.js +# @ref https://github.com/weseek/growi/blob/master/src/server/routes/page.js class GApiRequestPagesList < GApiRequestBase # コンストラクタ # @override # @param [Hash] param APIリクエストのパラメータ @@ -12,10 +13,11 @@ super('/_api/pages.list', METHOD_GET, { path: param[:path_exp], user: param[:user] }) end # リクエストを実行する + # [TODO] pagination に対応する # @override # @param [String] entry_point APIのエントリーポイントとなるURL(ex. http://localhost:3000/_api/pages.list) # @param [Hash] rest_client_param RestClientのパラメータ # @return [Array] リクエスト実行結果 def execute(entry_point, rest_client_param: {}) @@ -23,32 +25,48 @@ if invalid? return validation_msg end params = { method: :get, url: entry_point, headers: { params: @param } }.merge(rest_client_param) - ret = JSON.parse RestClient::Request.execute params - if (ret['ok'] == false) - return CPInvalidRequest.new "API return false with msg: #{ret['msg']}" + GCLogger.logger.debug('Request: ' + params.to_s) + + begin + raw_ret = RestClient::Request.execute params + GCLogger.logger.debug('Return: ' + raw_ret.to_s) + ret = JSON.parse raw_ret + rescue Exception => e + GCLogger.logger.error(e) + return GCInvalidRequest.new "Unknown error occured: #{e}" end - pages = [] - ret['pages'].each do |page| - pages.push(GrowiPage.new(page)) + + if (!ret['ok'].nil? && ret['ok'] == false) + return GCInvalidRequest.new "API return false with msg: #{ret['msg']}" end - return GApiReturn.new(ok: ret['ok'], data: pages) + + begin + pages = [] + ret['pages'].each do |page| + pages.push(GrowiPage.new(page)) + end + return GApiReturn.new(ok: ret['ok'], data: pages) + rescue Exception => e + GCLogger.logger.error(e) + return GCInvalidRequest.new "Fail to parse: #{e}" + end end protected # バリデーションエラーを取得する # @override - # @return [nil/CPInvalidRequest] バリデーションエラー結果 + # @return [nil/GCInvalidRequest] バリデーションエラー結果 def _invalid if ! (@param[:path] || @param[:user]) - return CPInvalidRequest.new 'Parameter path or user is required.' + return GCInvalidRequest.new 'Parameter path or user is required.' end if (@param[:path] && @param[:user]) - return CPInvalidRequest.new 'Parameter path and user can not be specified both.' + return GCInvalidRequest.new 'Parameter path and user can not be specified both.' end end end @@ -74,26 +92,38 @@ def execute(entry_point, rest_client_param: {}) if invalid? return validation_msg end + params = { method: :get, url: entry_point, headers: { params: @param } }.merge(rest_client_param) - ret = JSON.parse RestClient::Request.execute params - if (ret['ok'] == false) - return CPInvalidRequest.new "API return false with msg: #{ret['msg']}" + GCLogger.logger.debug('Request: ' + params.to_s) + + begin + raw_ret = RestClient::Request.execute params + GCLogger.logger.debug('Return: ' + raw_ret.to_s) + ret = JSON.parse raw_ret + rescue Exception => e + GCLogger.logger.error(e) + return GCInvalidRequest.new "Unknown error occured: #{e}" end + + if (!ret['ok'].nil? && ret['ok'] == false) + return GCInvalidRequest.new "API return false with msg: #{ret['msg']}" + end + return GApiReturn.new(ok: ret['ok'], data: GrowiPage.new(ret['page'])) end protected # バリデーションエラーを取得する # @override - # @return [nil/CPInvalidRequest] バリデーションエラー結果 + # @return [nil/GCInvalidRequest] バリデーションエラー結果 def _invalid if ! (@param[:path] || @param[:page_id]) - return CPInvalidRequest.new 'Parameter path or page_id is required.' + return GCInvalidRequest.new 'Parameter path or page_id is required.' end end end @@ -123,25 +153,36 @@ params = { method: :post, url: entry_point, payload: @param.to_json, headers: { content_type: :json, accept: :json } }.merge(rest_client_param) - ret = JSON.parse RestClient::Request.execute params - if (ret['ok'] == false) - return CPInvalidRequest.new "API return false with msg: #{ret['msg']}" + GCLogger.logger.debug('Request: ' + params.to_s) + + begin + raw_ret = RestClient::Request.execute params + GCLogger.logger.debug('Return: ' + raw_ret.to_s) + ret = JSON.parse raw_ret + rescue Exception => e + GCLogger.logger.error(e) + return GCInvalidRequest.new "Unknown error occured: #{e}" end + + if (!ret['ok'].nil? && ret['ok'] == false) + return GCInvalidRequest.new "API return false with msg: #{ret['msg']}" + end + return GApiReturn.new(ok: ret['ok'], data: GrowiPage.new(ret['page'])) end protected # バリデーションエラーを取得する # @override - # @return [nil/CPInvalidRequest] バリデーションエラー結果 + # @return [nil/GCInvalidRequest] バリデーションエラー結果 def _invalid if ! (@param[:body] && @param[:path]) - return CPInvalidRequest.new 'Parameters body and path are required.' + return GCInvalidRequest.new 'Parameters body and path are required.' end end end @@ -170,25 +211,36 @@ end params = { method: :post, url: entry_point, payload: @param.to_json, headers: { content_type: :json, accept: :json } }.merge(rest_client_param) - ret = JSON.parse RestClient::Request.execute params - if (ret['ok'] == false) - return CPInvalidRequest.new "API return false with msg: #{ret['msg']}" + GCLogger.logger.debug('Request: ' + params.to_s) + + begin + raw_ret = RestClient::Request.execute params + GCLogger.logger.debug('Return: ' + raw_ret.to_s) + ret = JSON.parse raw_ret + rescue Exception => e + GCLogger.logger.error(e) + return GCInvalidRequest.new "Unknown error occured: #{e}" end + + if (!ret['ok'].nil? && ret['ok'] == false) + return GCInvalidRequest.new "API return false with msg: #{ret['msg']}" + end + return GApiReturn.new(ok: ret['ok'], data: GrowiPage.new(ret['page'])) end protected # バリデーションエラーを取得する # @override - # @return [nil/CPInvalidRequest] バリデーションエラー結果 + # @return [nil/GCInvalidRequest] バリデーションエラー結果 def _invalid - if ! (@param[:page_id] && @param[:body]) - return CPInvalidRequest.new 'Parameters page_id and body are required.' + if ! (@param[:page_id] && @param[:revision_id] && @param[:body]) + return GCInvalidRequest.new 'Parameters page_id, revision_id and body are required.' end end end @@ -216,25 +268,44 @@ end params = { method: :post, url: entry_point, payload: @param.to_json, headers: { content_type: :json, accept: :json } }.merge(rest_client_param) - ret = JSON.parse RestClient::Request.execute params - if (ret['ok'] == false) - return CPInvalidRequest.new "API return false with msg: #{ret['msg']}" + GCLogger.logger.debug('Request: ' + params.to_s) + + begin + raw_ret = RestClient::Request.execute params + GCLogger.logger.debug('Return: ' + raw_ret.to_s) + ret = JSON.parse raw_ret + rescue Exception => e + GCLogger.logger.error(e) + return GCInvalidRequest.new "Unknown error occured: #{e}" end - return GApiReturn.new(ok: ret['ok'], data: GrowiPage.new(ret['seenUser'])) + + if (!ret['ok'].nil? && ret['ok'] == false) + return GCInvalidRequest.new "API return false with msg: #{ret['msg']}" + end + + begin + users = ret['seenUser'].map do |user| + user.is_a?(String) ? user : GrowiUser.new(user) + end + return GApiReturn.new(ok: ret['ok'], data: users) + rescue Exception => e + GCLogger.logger.error(e) + return GCInvalidRequest.new "Fail to parse: #{e}" + end end protected # バリデーションエラーを取得する # @override - # @return [nil/CPInvalidRequest] バリデーションエラー結果 + # @return [nil/GCInvalidRequest] バリデーションエラー結果 def _invalid if ! (@param[:page_id]) - return CPInvalidRequest.new 'Parameter page_id required.' + return GCInvalidRequest.new 'Parameter page_id required.' end end end @@ -257,29 +328,41 @@ def execute(entry_point, rest_client_param: {}) if invalid? return validation_msg end + params = { method: :post, url: entry_point, payload: @param.to_json, headers: { content_type: :json, accept: :json } }.merge(rest_client_param) - ret = JSON.parse RestClient::Request.execute params - if (ret['ok'] == false) - return CPInvalidRequest.new "API return false with msg: #{ret['msg']}" + GCLogger.logger.debug('Request: ' + params.to_s) + + begin + raw_ret = RestClient::Request.execute params + GCLogger.logger.debug('Return: ' + raw_ret.to_s) + ret = JSON.parse raw_ret + rescue Exception => e + GCLogger.logger.error(e) + return GCInvalidRequest.new "Unknown error occured: #{e}" end + + if (!ret['ok'].nil? && ret['ok'] == false) + return GCInvalidRequest.new "API return false with msg: #{ret['msg']}" + end + return GApiReturn.new(ok: ret['ok'], data: GrowiPage.new(ret['page'])) end protected # バリデーションエラーを取得する # @override - # @return [nil/CPInvalidRequest] バリデーションエラー結果 + # @return [nil/GCInvalidRequest] バリデーションエラー結果 def _invalid if ! (@param[:page_id]) - return CPInvalidRequest.new 'Parameter page_id required.' + return GCInvalidRequest.new 'Parameter page_id required.' end end end @@ -306,25 +389,36 @@ end params = { method: :post, url: entry_point, payload: @param.to_json, headers: { content_type: :json, accept: :json } }.merge(rest_client_param) - ret = JSON.parse RestClient::Request.execute params - if (ret['ok'] == false) - return CPInvalidRequest.new "API return false with msg: #{ret['msg']}" + GCLogger.logger.debug('Request: ' + params.to_s) + + begin + raw_ret = RestClient::Request.execute params + GCLogger.logger.debug('Return: ' + raw_ret.to_s) + ret = JSON.parse raw_ret + rescue Exception => e + GCLogger.logger.error(e) + return GCInvalidRequest.new "Unknown error occured: #{e}" end + + if (!ret['ok'].nil? && ret['ok'] == false) + return GCInvalidRequest.new "API return false with msg: #{ret['msg']}" + end + return GApiReturn.new(ok: ret['ok'], data: GrowiPage.new(ret['page'])) end protected # バリデーションエラーを取得する # @override - # @return [nil/CPInvalidRequest] バリデーションエラー結果 + # @return [nil/GCInvalidRequest] バリデーションエラー結果 def _invalid if ! (@param[:page_id]) - return CPInvalidRequest.new 'Parameter page_id required.' + return GCInvalidRequest.new 'Parameter page_id required.' end end end @@ -349,29 +443,45 @@ if invalid? return validation_msg end params = { method: :get, url: entry_point, headers: { params: @param } }.merge(rest_client_param) - ret = JSON.parse RestClient::Request.execute params - if (ret['ok'] == false) - return CPInvalidRequest.new "API return false with msg: #{ret['msg']}" + GCLogger.logger.debug('Request: ' + params.to_s) + + begin + raw_ret = RestClient::Request.execute params + GCLogger.logger.debug('Return: ' + raw_ret.to_s) + ret = JSON.parse raw_ret + rescue Exception => e + GCLogger.logger.error(e) + return GCInvalidRequest.new "Unknown error occured: #{e}" end - posts = [] - ret['updatePost'].each do |post| - pages.push(GrowiPage.new(post)) + + if (!ret['ok'].nil? && ret['ok'] == false) + return GCInvalidRequest.new "API return false with msg: #{ret['msg']}" end - return GApiReturn.new(ok: ret['ok'], data: posts) + + begin + posts = [] + ret['updatePost'].each do |post| + pages.push(GrowiPage.new(post)) + end + return GApiReturn.new(ok: ret['ok'], data: posts) + rescue Exception => e + GCLogger.logger.error(e) + return GCInvalidRequest.new "Fail to parse: #{e}" + end end protected # バリデーションエラーを取得する # @override - # @return [nil/CPInvalidRequest] バリデーションエラー結果 + # @return [nil/GCInvalidRequest] バリデーションエラー結果 def _invalid if ! (@param[:path]) - return CPInvalidRequest.new 'Parameter path required.' + return GCInvalidRequest.new 'Parameter path required.' end end end @@ -396,25 +506,37 @@ def execute(entry_point, rest_client_param: {}) if invalid? return validation_msg end + param = { method: :get, url: entry_point, headers: { params: @param } }.merge(rest_client_param) - ret = JSON.parse RestClient::Request.execute param - if (ret['ok'] == false) - return CPInvalidRequest.new "API return false with msg: #{ret['msg']}" + GCLogger.logger.debug('Request: ' + params.to_s) + + begin + raw_ret = RestClient::Request.execute params + GCLogger.logger.debug('Return: ' + raw_ret.to_s) + ret = JSON.parse raw_ret + rescue Exception => e + GCLogger.logger.error(e) + return GCInvalidRequest.new "Unknown error occured: #{e}" end + + if (!ret['ok'].nil? && ret['ok'] == false) + return GCInvalidRequest.new "API return false with msg: #{ret['msg']}" + end + return GApiReturn.new(ok: ret['ok'], data: GrowiPage.new(ret['page'])) end protected # バリデーションエラーを取得する # @override - # @return [nil/CPInvalidRequest] バリデーションエラー結果 + # @return [nil/GCInvalidRequest] バリデーションエラー結果 def _invalid if ! (@param[:page_id] || @param[:revision_id]) - return CPInvalidRequest.new 'Parameter page_id or revision_id is required.' + return GCInvalidRequest.new 'Parameter page_id or revision_id is required.' end end end