Qiita API v2のapiをrubyで叩いてみた

Qiita API v2をrubyで叩いてみました

事前準備としてGemを2ついれました
bundlerを使って

$ bundle init
$ vim Gemfile

source "https://rubygems.org"

gem "faraday"
gem "json"

$ bundle install -j4

これでGemが入りました
faradayがHTTPクライアントで、
jsonはjsonを扱ってくれるものです

まず、ユーザーの情報を取ってみました
Qiita API v2ドキュメント – Qiita:Developer – Qiita

もっともストックされてるhirokidaichiさんをとってみました
ランキングは
qrank | Qiitaの人気記事ランキング
で確認しました

!#/usr/bin/env ruby

require 'faraday'
require 'json'

conn = Faraday::Connection.new(:url => 'http://qiita.com') do |builder|
  builder.use Faraday::Request::UrlEncoded
  builder.use Faraday::Response::Logger
  builder.use Faraday::Adapter::NetHttp
end

response = conn.get do |request|
  request.url '/api/v2/teams'
end
json = JSON.parser.new(response.body)
p json.parse

jsonがこちら

{"description"=>"", "facebook_id"=>"hirokidaichi", "followees_count"=>80, "followers_count"=>1102, "github_login_name"=>"hirokidaichi", "id"=>"hirokidaichi", "items_count"=>30, "linkedin_id"=>"", "location"=>"", "name"=>"daichi hiroki", "organization"=>"", "permanent_id"=>35671, "profile_image_url"=>"https://gravatar.com/avatar/cc08756798ff94dad86ebc51c1701195?d=https%3A%2F%2Fidenticons.github.com%2F35dce29cf91a19ead1de07e2c3616bd1.png&r=x", "twitter_screen_name"=>"hiroki_daichi", "website_url"=>""}

今度は投稿してみます
アクセストークンがいるので、Qiitaにログインして発行します
プロフィール編集の中に有ります
https://qiita.com/settings/tokens/new
投稿できる権限を与えます

qiita-token

保存するとアクセストークンがもらえます

そして、投稿
Qiita API v2ドキュメント – Qiita:Developer – Qiita
Authorizationのxxxxxxxxxxxxxxxxxxxにアクセストークンをセットします

!#/usr/bin/env ruby

require 'faraday'
require 'json'

param = {
  body: '#sample', coediting: false, gist: false, private: false,
  tags: [], title: 'sample', tweet: false
}

conn = Faraday::Connection.new(:url => 'http://qiita.com') do |builder|
  builder.use Faraday::Request::UrlEncoded
  builder.use Faraday::Response::Logger 
  builder.use Faraday::Adapter::NetHttp 
end

response = conn.post do |request|
  request.url '/api/v2/items'
  request.headers = {
    'Authorization' => 'Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    'Content-Type' => 'application/json'
  }
  request.body = JSON.generate(param)
end
json = JSON.parser.new(response.body)
p json.parse

これを実行すると無事、投稿されました
Qiita:Teamに投稿するには、URLをチームのURLに変えれば投稿できました

locateでファイルを探す

Linuxでファイルを探すときfindコマンドでもいいけどlocateコマンドも便利です

sample.txtを探すとき

$ locate sample.txt

/home/user/sample.txt

これだけでOK
部分一致で検索してくれます

ファイルの場所をデータベースに持ってるので、作ったばかりのファイルは探せません

updatedbコマンドでデータベースが更新されるようで、通常は毎日cronで動いてるらしいです

コマンドでDNSのmxレコードを確認する

コマンドでDNSの反映を確認するに引き続き、MXレコードを確認
google.co.jpをサンプルに

$ nslookup -type=mx google.co.jp

Server:         127.0.1.1
Address:        127.0.1.1#53

Non-authoritative answer:
google.co.jp    mail exchanger = 10 aspmx.l.google.com.
google.co.jp    mail exchanger = 40 alt3.aspmx.l.google.com.
google.co.jp    mail exchanger = 30 alt2.aspmx.l.google.com.
google.co.jp    mail exchanger = 50 alt4.aspmx.l.google.com.
google.co.jp    mail exchanger = 20 alt1.aspmx.l.google.com.

Authoritative answers can be found from:
google.co.jp    nameserver = ns3.google.com.
google.co.jp    nameserver = ns4.google.com.
google.co.jp    nameserver = ns2.google.com.
google.co.jp    nameserver = ns1.google.com.
ns4.google.com  internet address = 216.239.38.10
ns3.google.com  internet address = 216.239.36.10
ns2.google.com  internet address = 216.239.34.10
ns1.google.com  internet address = 216.239.32.10

$ dig google.co.jp mx

; <<>> DiG 9.9.5-3ubuntu0.3-Ubuntu <<>> google.co.jp mx
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28586
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 4, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.co.jp.                  IN      MX

;; ANSWER SECTION:
google.co.jp.           553     IN      MX      10 aspmx.l.google.com.
google.co.jp.           553     IN      MX      30 alt2.aspmx.l.google.com.
google.co.jp.           553     IN      MX      40 alt3.aspmx.l.google.com.
google.co.jp.           553     IN      MX      50 alt4.aspmx.l.google.com.
google.co.jp.           553     IN      MX      20 alt1.aspmx.l.google.com.

;; AUTHORITY SECTION:
google.co.jp.           2371    IN      NS      ns3.google.com.
google.co.jp.           2371    IN      NS      ns4.google.com.
google.co.jp.           2371    IN      NS      ns1.google.com.
google.co.jp.           2371    IN      NS      ns2.google.com.

;; ADDITIONAL SECTION:
ns4.google.com.         2374    IN      A       216.239.38.10
ns3.google.com.         2397    IN      A       216.239.36.10
ns2.google.com.         2378    IN      A       216.239.34.10
ns1.google.com.         2371    IN      A       216.239.32.10

;; Query time: 15 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Mon Aug 03 12:12:14 JST 2015
;; MSG SIZE  rcvd: 295

コマンドでDNSの反映を確認する

ドメインをとってDNSレジストラに設定したあと、反映されたか確認しました
サンプルにgoogle.co.jpで確認

$ nslookup google.co.jp

Server:         127.0.1.1
Address:        127.0.1.1#53

Non-authoritative answer:
Name:   google.co.jp
Address: 173.194.117.175
Name:   google.co.jp
Address: 173.194.117.191
Name:   google.co.jp
Address: 173.194.117.183
Name:   google.co.jp
Address: 173.194.117.184

これでも確認できます

$ dig google.co.jp

; <<>> DiG 9.9.5-3ubuntu0.3-Ubuntu <<>> google.co.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8459
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 4, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.co.jp.                  IN      A

;; ANSWER SECTION:
google.co.jp.           300     IN      A       173.194.117.175
google.co.jp.           300     IN      A       173.194.117.184
google.co.jp.           300     IN      A       173.194.117.183
google.co.jp.           300     IN      A       173.194.117.191

;; AUTHORITY SECTION:
google.co.jp.           2207    IN      NS      ns1.google.com.
google.co.jp.           2207    IN      NS      ns3.google.com.
google.co.jp.           2207    IN      NS      ns4.google.com.
google.co.jp.           2207    IN      NS      ns2.google.com.

;; ADDITIONAL SECTION:
ns4.google.com.         2206    IN      A       216.239.38.10
ns3.google.com.         2200    IN      A       216.239.36.10
ns2.google.com.         2200    IN      A       216.239.34.10
ns1.google.com.         2197    IN      A       216.239.32.10

;; Query time: 48 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Mon Aug 03 11:55:02 JST 2015
;; MSG SIZE  rcvd: 251