Omisego Ruby SDKを触ってみる。

# Omisego Ruby SDKを触ってみる。

#### 初期データを投入する。

```
mix seed
```
```
What email address should we set for your first admin user?
最初のアドミンユーザのために、emailアドレスをセットしてください。
This email is required for logging into the admin panel.
Eメールは、アドミンパネルにログインするために使われます。
If a user with this email already exists, it will escalate the user to admin role.
もし、このEメールのユーザがすでに存在するなら、アドミン権限に移行するでしょう。


E-mail (admin@example.com): coffeeandcode.tokyo@gmail.com

                               Setting up the OmiseGO eWallet Server
                               セットアップOmiseGo eWallet サーバ            

This seeder seeds the minimum amount of data needed to start a production environment.
このシーダーは、製品環境を始めるための最小の量のデータをシードします。


If you would like to seed the database with sample data so that you can play around with the
system, we recommend running mix seed --sample instead.


## Manage your eWallet system via the Admin Panel

We have just seeded your eWallet system with an API key and an Admin Panel user. To save your time,
we have also configured the Admin Panel with the seeded API key. If you want to, you can look up
the configuration file at apps/admin_panel/assets/.env.

私たちは、APIキーとAdminユーザを作って、シードしました。あなたの時間を節約するために、シードされたAPIキーを
設定しています。


Now it's your turn to login to your Admin Panel with the following credentials:

  ~ Login URL : http://localhost:4000/admin
  ~ Email     : coffeeandcode.tokyo@gmail.com
  ~ Password  : GaCPfXxgdAz7F1ytTjhMZA

Please take note of the above password. We won't be able to retrieve it again after the initial
seed, as it will be one-way encrypted for your security.

Now that you are logged in to the Admin Panel, you can:

  ~ Change your password immediately! The password will show in the seed only once.
  ~ Create other Admin Panel users
  ~ Manage access and secret keys for your application servers to connect to OmiseGO eWallet
    API
  ~ Manage API keys for your mobile apps and the Admin Panel
  ~ Always come back and access your Admin Panel at http://localhost:4000/admin
  ~ etc.

## Manage your eWallet system via the Admin API

The Admin API is the entry point to manage the entire OmiseGO eWallet system. Follow the steps
below to authenticate your Swagger UI requests:

  1. Browse to http://localhost:4000/admin/api/docs and click Authorize
  2. Use the value below for ClientAuth and click Authorize:
         OMGAdmin NzBiYzJkYmEtY2UwNy00N2ZmLTk5MzgtN2YyMTc3ODUwMGZiOnlRbFdEcU1VMEdKQTVMQkdXeWhXTkdKTm5WRVRZX2NjUUMwbnVtQUdsdEk=

     Note: You can also make requests from your favorite API client by building your own
     Authorization header:

     ~ Authorization header : OMGAdmin base64(api_key_id:api_key)
     ~ API key ID           : 70bc2dba-ce07-47ff-9938-7f21778500fb
     ~ API key              : yQlWDqMU0GJA5LBGWyhWNGJNnVETY_ccQC0numAGltI

  3. Now you can call the /login endpoint with the above Authorization header and the
     following request body:
         {
          "email": "coffeeandcode.tokyo@gmail.com",
          "password": "GaCPfXxgdAz7F1ytTjhMZA"
         }

     Please take note of the above password. We won't be able to retrieve it again after the
     initial seed, as it will be one-way encrypted for your security.

  4. To get started quickly, we have seeded the user's authentication token and generated the
     Authorization header for you. Browse to http://localhost:4000/admin/api/docs again and click
     Authorize. This time, use the value below for UserAuth:
         OMGAdmin NzBiYzJkYmEtY2UwNy00N2ZmLTk5MzgtN2YyMTc3ODUwMGZiOnlRbFdEcU1VMEdKQTVMQkdXeWhXTkdKTm5WRVRZX2NjUUMwbnVtQUdsdEk6M2M1NTI5YTEtYzViOC00YWFlLWIzZGItOTU5OGY5Mzk1ZmE0OmdjRTVPV3hycnZqRVN0ODRvRjgwNDZkV2FBejNMR05rOG1nVV92Yll6bGM=

     The above header is for you to get started quickly. To integrate the eWallet SDK to your
     application, you must build your own Authorization header using the information below:

     ~ Authorization header : OMGAdmin base64(api_key_id:api_key:user_id:auth_token)
     ~ API key ID           : 70bc2dba-ce07-47ff-9938-7f21778500fb
     ~ API key              : yQlWDqMU0GJA5LBGWyhWNGJNnVETY_ccQC0numAGltI
     ~ User ID              : <the returned user_id in step 3>
     ~ User's auth token    : <the returned authentication_token in step 3>

  5. Test your authentication by calling /me.get. You should see your user information.

## Using the eWallet API

Now that you are authenticated, you have the full access to the eWallet system via the Admin API.
You can now use the Authorization header above with the rest of the Swagger specification at
http://localhost:4000/admin/api/docs to:

  ~ Generate a pair of access/secret key for your application servers via /access_key.create
  ~ Generate a pair of API key for your clients such as your mobile app, via /api_key.create
  ~ Use the API key generated above to make requests to the eWallet API. Learn more at
    http://localhost:4000/api/docs
  ~ etc.

Database seeding completed. Enjoy!
```

#### OmiseGo eWallet SDKの起動

```
mix omg.server &
```

#### OmiseGo eWallet SDKにアクセス

```
lynx http://localhost:4000/api
```
```
{"success":true,"services":{"local_ledger":true,"ewallet":true}}
```

#### Web APIについては、下記を読むこと

- Admin API: http://localhost:4000/admin/api/docs
- eWallet API: http://localhost:4000/api/docs

#### 最初のリクエストを作る

ここに楽しんで始めるステップを書きます。それらは下記のリンクのSwagger UIにアクセスすることで動く

1. AdminAPIで、シーディングステップで作成されたキーを使って、認証を設定します。

1. ログインし、認証トークンが返ります。間違った認証方法をとっている場合は、BASE64によってエンコードされたAPI_KEY_ID:API_KEYのバージョンとともに、OMGAdminを利用しているかダブルチェックします。

1. 前回のステップのなかで受信した認証トークンをつかって、ユーザトークンを設定します。

1. /minted_token.createをつかって、鋳造トークンを作成します。鋳造の初期化に、任意の数量を指定することができます。

1. eWallet APIをつかって、遊ぶ準備ができたあと、トークンの貸借とサーバーコルの一つをつかって、あなた自身のユーザを作成することができます。

#### eWalletとコミュニケーションする。

Swagger UIが十分でないなら、あなたが選択したプログラミング言語を使うか、または、直接endpointsにダイレクトにHTTP-RPCを使って、web APIでのコミュニケーションをスタートできます。

#### rubyとomisego Ruby SDKをインストール

```
yum install ruby
gem install omisego
```
```
Fetching: multipart-post-2.0.0.gem (100%)
Successfully installed multipart-post-2.0.0
Fetching: faraday-0.13.1.gem (100%)
Successfully installed faraday-0.13.1
Fetching: omisego-0.9.5.gem (100%)
Successfully installed omisego-0.9.5
invalid options: -SHN
(invalid options are ignored)
Parsing documentation for multipart-post-2.0.0
Installing ri documentation for multipart-post-2.0.0
Parsing documentation for faraday-0.13.1
Installing ri documentation for faraday-0.13.1
Parsing documentation for omisego-0.9.5
Installing ri documentation for omisego-0.9.5
3 gems installed
```