def __init__(self): ''' コンストラクタ input : none output: none raise : none ''' SabaniController.__init__(self) self.venue = Venue()
class VenueController(SabaniController): ''' Venueコントローラー・クラス 場所検索はこのクラスを使う。基本的にはfour square前提 [GET 引数] # TODO 暫定です、変わる可能性アリ lat : 緯度 lon : 経度 ''' def __init__(self): ''' コンストラクタ input : none output: none raise : none ''' SabaniController.__init__(self) self.venue = Venue() def __call__(self, environ, start_response): ''' WSGI アプリケーション ''' SabaniController.__call__(self, environ, start_response) # リクエストメソッドを取得 method = self.get_method(environ) if method == 'GET': # GET の場合 # パラメーター取得 params = self.get_parameter(environ) # パラメーターの必須チェック chk_dict = self.chk_param(params) # 何かしらのパラメーターエラーがあった場合 if chk_dict.has_key(self.API_MSG_KEY): start_response(self.HTTP_STS_200, self.HTTP_RESPONSE_HEADER_TEXT) self.create_http_responce_dict( self.API_STS_NG_PARAM, chk_dict[self.API_MSG_KEY], params, None, ) return self.json_dumps_utf8(self.ret_dict) # コンテンツを検索 ret_list,count = self.venue.venue_search({}, ll=(params[self.HTTP_REQUEST_GET_LAT], params[self.HTTP_REQUEST_GET_LON])) if count == 0: ret_list,count = self.venue.venue_search({}, ll=(params[self.HTTP_REQUEST_GET_LAT], params[self.HTTP_REQUEST_GET_LON]), radius=100000) start_response(self.HTTP_STS_200, self.HTTP_RESPONSE_HEADER_TEXT) self.create_http_responce_dict( self.API_STS_OK, None, ret_list, count, ) return self.json_dumps_utf8(self.ret_dict) else: # GET以外は501エラー扱い start_response(self.HTTP_STS_501, self.HTTP_RESPONSE_HEADER_TEXT) self.create_http_responce_dict( self.API_STS_NG_OTHER, self.API_MSG_BODY_NOT_IMPLEMENTED, {'method':method}, None, ) return self.json_dumps_utf8(self.ret_dict) def chk_param(self,params): ''' GET パラメータのチェックを行う input : GETパラメータ(dict) output: dict(エラー無しは空) raise : none ''' # チェック戻り値 chk_dict = {} # GETパラメーター存在チェック chk_dict.update(self.chk_is_params(params, [ # TODO self.HTTP_REQUEST_GET_LAT, self.HTTP_REQUEST_GET_LON, ])) return chk_dict