:; #-*- mode: nendo; syntax: scheme -*-;; ;;; ;;; google-imd.nnd - google-imdを使ってひらがなから、漢字変換候補を取得する ;;; ;;; Copyright (c) 2010 Kiyoka Nishiyama ;;; ;;; Redistribution and use in source and binary forms, with or without ;;; modification, are permitted provided that the following conditions ;;; are met: ;;; ;;; 1. Redistributions of source code must retain the above copyright ;;; notice, this list of conditions and the following disclaimer. ;;; ;;; 2. Redistributions in binary form must reproduce the above copyright ;;; notice, this list of conditions and the following disclaimer in the ;;; documentation and/or other materials provided with the distribution. ;;; ;;; 3. Neither the name of the authors nor the names of its contributors ;;; may be used to endorse or promote products derived from this ;;; software without specific prior written permission. ;;; ;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ;;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ;;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ;;; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ;;; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ;;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED ;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR ;;; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF ;;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING ;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ;;; ;;; $Id: ;;; (use srfi-1) (use rfc.json) (require "net/http") (define (json-string->sekka-result-string jsonstr) (let* ((obj (parse-json-string jsonstr)) (kouho-list (filter-map (lambda (entry) (if (vector? entry) (vector->list (vector-ref entry 1)) false)) (vector->list obj)))) (if (null? kouho-list) kouho-list (map (lambda (x) (string-join x)) (apply zip kouho-list))))) (define (request-google-ime keyword unit-test proxy-host proxy-port) (let* ((body "") (target "google-ime-api-normalizer.heroku.com") (_ (Net::HTTP.version_1_2)) (http (if proxy-host (let1 proxy-class (Net::HTTP.Proxy proxy-host proxy-port) (proxy-class.new target)) (Net::HTTP.new target)))) (set! http.open_timeout 20) (set! http.read_timeout 20) (http.start (&block () (let* ((path (sprintf "/transliterate%s?langpair=%s&text=%s" (if unit-test "_test" "") "ja-Hira|ja" (URI.encode keyword))) (response (http.get path))) (set! body response.body)))) (json-string->sekka-result-string body)))