Giter Site home page Giter Site logo

docbase-ruby's People

Contributors

ecpplus avatar j-sakamoto avatar mochizuki-pg avatar ttakuru88 avatar yamashush avatar yoshihirow avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docbase-ruby's Issues

バージョン指定でundefined method `strip' for 1:Integerが発生する

現在公開されているgemのバージョンを0.3.0.1→1.0.0にアップデートしたところ、表題のエラーが発生しましたのでご報告いたします。原因はheadersでのバージョン指定('X-Api-Version')の値で数値型を渡してしまっていることのようです。("1"と文字列型を送信することで問題なく動作しました)

def headers
{
'Accept' => 'application/json',
'User-Agent' => USER_AGENT,
'X-DocBaseToken' => @access_token,
'X-Api-Version' => 1,
}
end

エラー発生箇所はdocbase→faraday→ruby net/httpの以下の箇所(value.strip)です。

https://github.com/ruby/ruby/blob/ddf5020e4fcae5ed28a064af10124a032590452f/lib/net/http/header.rb#L13-L28

  def initialize_http_header(initheader)
    @header = {}
    return unless initheader
    initheader.each do |key, value|
      warn "net/http: duplicated HTTP header: #{key}", uplevel: 3 if key?(key) and $VERBOSE
      if value.nil?
        warn "net/http: nil HTTP header: #{key}", uplevel: 3 if $VERBOSE
      else
        value = value.strip # raise error for invalid byte sequences
        if value.count("\r\n") > 0
          raise ArgumentError, "header #{key} has field value #{value.inspect}, this cannot include CR/LF"
        end
        @header[key.downcase.to_s] = [value]
      end
    end
  end

リファレンス
https://docs.ruby-lang.org/ja/latest/class/Net=3a=3aHTTP.html

header が nil でなければ、リクエストを送るときにその内容を HTTP ヘッダとして 送ります。 header は { 'Accept' = > '/', ... } という 形のハッシュでなければいけません。

利用制限時にリトライする機能を組み込みたい

DocBase APIでは1時間に300回までしかリクエストを受け付けず、それ以上のリクエストについてはステータスコード429を返すという仕様が存在します。(参考)
このケースについて、現状ではFaraday Responseがそのまま返されますが、レスポンス�に含まれるX-RateLimit-Resetまで待機する処理をgemに組み込むほうが使い勝手が良いと思います。

esa-rubyではresponse.statusに応じてwait処理を挟んでおり、同様の対応を行うことで実現できるはずです。
また用途によっては待たずにエラーを返してほしい場合もありそうですが、こちらもesa-rubyと同様にinitializeで利用制限時の挙動を制御するフラグを渡すのが良いかと思います。

groupsでnameやpageの指定ができない

グループ検索APIではnameを指定したグループ名完全一致での取得や取得ページの指定ができますが、#groups メソッドでは引数を受け付けておらず、最初のページの取得しかできません。
これだと全件の取得や、目的とするグループが2ページ目以降にある場合のグループID取得などが行えないため、#users メソッド と同様に引数を受け付けるようにしたいです。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.