LoginSignup
1
2

More than 3 years have passed since last update.

Rubyの標準ライブラリ net/http を使って cybozu.com の User API を叩いてみる

Last updated at Posted at 2019-10-05

kintone(日本の) は cybozu.com という運用基盤の上で動いています。
kintone を設定するには、この運用基盤の理解が必要になってくるので、提供されている User API を Ruby から叩いて試してみました。

エクスポート

ユーザーエクスポート API(JSON)

users.rb
require 'rubygems'
require 'bundler/setup'
require 'dotenv/load'
require 'net/http'
require 'uri'
require 'json'
require 'base64'
require 'pp'

url = "https://#{ENV['SUBDOMAIN']}.cybozu.com/v1/users.json?size=100"
uri = URI.parse(url)
pass_auth = Base64.strict_encode64("#{ENV['UID']}:#{ENV['PASS']}")

Net::HTTP.start(uri.host, uri.port, :use_ssl => true) {|http|
  res = http.get("#{uri.path}?#{uri.query}", {'X-Cybozu-Authorization' => pass_auth})
  res.each_header do |name, val|
    puts "name=#{name}, val=#{val}"
  end
  case res.code.to_i
  when 200
    pp JSON.parse(res.body)
  else
    pp %Q(#{res.code} #{res.message})
    pp JSON.parse(res.body)
  end
}

役職エクスポートAPI

  • CSVのみです。
csv_title.rb
url = "https://#{ENV['SUBDOMAIN']}.cybozu.com/v1/csv/title.csv"
uri = URI.parse(url)
pass_auth = Base64.strict_encode64("#{ENV['UID']}:#{ENV['PASS']}")

Net::HTTP.start(uri.host, uri.port, :use_ssl => true) {|http|
  res = http.get(uri.path, {'X-Cybozu-Authorization' => pass_auth})
  res.each_header do |name, val|
    puts "name=#{name}, val=#{val}"
  end
  case res.code.to_i
  when 200
    puts res.body
  else
    pp %Q(#{res.code} #{res.message})
    pp JSON.parse(res.body)
  end
}

組織エクスポート API(JSON)

organizations.rb
url = "https://#{ENV['SUBDOMAIN']}.cybozu.com/v1/organizations.json?size=100"
uri = URI.parse(url)
pass_auth = Base64.strict_encode64("#{ENV['UID']}:#{ENV['PASS']}")

Net::HTTP.start(uri.host, uri.port, :use_ssl => true) {|http|
  res = http.get("#{uri.path}?#{uri.query}", {'X-Cybozu-Authorization' => pass_auth})
  res.each_header do |name, val|
    puts "name=#{name}, val=#{val}"
  end
  case res.code.to_i
  when 200
    pp JSON.parse(res.body)
  else
    pp %Q(#{res.code} #{res.message})
    pp JSON.parse(res.body)
  end
}

グループエクスポート API(JSON)

group.rb
url = "https://#{ENV['SUBDOMAIN']}.cybozu.com/v1/groups.json?size=100"

ユーザーの所属組織エクスポート API(JSON)

  • リクエストパラメーターにユーザーのコードを渡します。
user_organizations.rb
url = "https://#{ENV['SUBDOMAIN']}.cybozu.com/v1/user/organizations.json?code=honda"

ユーザーの所属グループエクスポート API(JSON)

  • リクエストパラメーターにユーザーのコードを渡します。
user_groups.rb
url = "https://#{ENV['SUBDOMAIN']}.cybozu.com/v1/user/groups.json?code=honda"

組織の所属ユーザーエクスポート API(JSON出力のみ)

  • リクエストパラメーターに組織のコードを渡します(必須)
organization_users.rb
url = "https://#{ENV['SUBDOMAIN']}.cybozu.com/v1/organization/users.json?code=0001"

環境

  • macOS 10.13.6
  • ruby 2.5.0

リンク

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2