Class: Narou::API
- Inherits:
-
Object
- Object
- Narou::API
- Defined in:
- lib/narou/api.rb
Overview
小説家になろうデベロッパーAPI操作クラス
Instance Method Summary collapse
- #[](key) ⇒ Object
-
#initialize(setting, of) ⇒ API
constructor
なろうデベロッパーAPIから情報を取得.
- #request_api(of, gzip = 5) ⇒ Object
Constructor Details
#initialize(setting, of) ⇒ API
なろうデベロッパーAPIから情報を取得
setting: なろうの SiteSetting of: 出力パラメータ(dev.syosetu.com/man/api/#of_parm 参照)
21 22 23 24 25 26 |
# File 'lib/narou/api.rb', line 21 def initialize(setting, of) @setting = setting @api_url = @setting["narou_api_url"] @ncode = @setting["ncode"] request_api(of) end |
Instance Method Details
#[](key) ⇒ Object
28 29 30 |
# File 'lib/narou/api.rb', line 28 def [](key) @api_result[key] end |
#request_api(of, gzip = 5) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/narou/api.rb', line 32 def request_api(of, gzip = 5) # Ruby 2.0 以上だと gzip 自動デコード gzip_opt = RUBY_VERSION >= "2.0.0" ? "gzip=#{gzip}&" : "" url = "#{@api_url}?#{gzip_opt}ncode=#{@ncode}&of=#{of}" open(url) do |fp| result = YAML.load(fp.read.force_encoding(Encoding::UTF_8)) if result[0]["allcount"] == 1 @api_result = result[1] if of.length > 0 @api_result["novel_type"] = @api_result["noveltype"] # なろうAPIが返すデータが数値の場合があるため強制変換 @api_result["writer"] = @api_result["writer"].to_s stat_end = @api_result["end"] if stat_end @api_result["end"] = stat_end == 0 end end else # なろうAPIからデータを取得出来なかった # 開示設定が検索から除外に設定されるとAPIからはアクセスできなくなる result = NovelInfo.load(@setting) unless result error "小説家になろうからデータを取得出来ませんでした" exit Narou::EXIT_ERROR_CODE end @api_result = result end end end |