地方でリモートワーク

プログラミング、先物、fx,仮想通貨なんでもやります

RailsでebayのAPIを叩いてみた!

スポンサーリンク

f:id:ihatov08:20160901214507j:plain

RailsでebayのAPIを使う方法です。

gem rebay

gemを作ってくれた人がいるので、使わせてもらいます。

github.com

Gemfile

gem 'rebay'
bundle intall

configファイル

設定ファイルを作ります。

config/initializers/rebay.rb

Rebay::Api.configure do |rebay|
  rebay.app_id = ENV['ebay_application_id']
end

.env

環境変数にapplication_idを記述します。

.env

ebay_application_id=取得したapplication_idを記述

vagrantを使用している場合は以下の記述も必要みたいです。

vagrantfile

config.vm.provision "file", source: ".env", destination: ".env"

vagrantを再起動しましょう。

rspecを使っているならrequireする必要があるようです。

spec_helper.rb

require 'dotenv'
 Dotenv.load('.env')



ルーティング

routes.rb

 get 'ebay_search' => 'ebay#search'

コントローラ

今回は商品キーワード検索機能を実装してみたいと思います。gem rrbayに定義されているfind_items_by_keywordsメソッドを使います。 viewで入力してもらったparams[:keyword]を受け取るようにしています。

ebay_controller.rb

class EbayController < ApplicationController
  def search
    finder = Rebay::Finding.new
    if params[:keyword]
      @items = finder.find_items_by_keywords({ :keywords => "#{params[:keyword]}" })
    end
  end
end

viewのフォーム

<%= form_tag :ebay_search, method: :get do  %>
  <table>
    <tbody>
      <tr>
        <th><%= label_tag :keyword, 'キーワード検索' %></th>
        <td><%= text_field_tag 'keyword', params[:keyword] %></td>
      </tr>
        <div class="btn-toolbar">
          <div class="btn-group">
            <td colspan="2"><%= submit_tag "検索", class: 'btn btn-default' %></td>
          </div>
        </div>
    </tbody>
  </table>
<% end %>

viewの検索結果

データ構造的にactive record的には取得できなかったです。 今回は商品名を表示してリンクにして、価格と商品画像を表示してみました。 他にも表示できる項目やflagがあるのでinspectメソッドで確認するか、コンソールでRebay::Finding.find_items_by_keywords({ :keywords => "iphone" })と入力して出力を確認するといいと思います。

<% if @items.present? %>
  <% @items.each do |item| %>
    <tr>
      <td><%= link_to item["title"], "#{item["viewItemURL"]}" %></td>
      <td>$<%= item["sellingStatus"]["currentPrice"]["__value__"] %></td>
      <td><%= image_tag item["galleryURL"] %></td>
    </tr>
  <% end %>
<% end %>

APIって意外と簡単

APIってなんだか難しいイメージがありましたが、URLを叩いて情報を取得もしくは投稿する機能なんですね。仕組みさえわかれば意外と簡単に操作できます。肝心なのはAPIを使って情報をどう活用するかですね。