Web貨幣化APIのためのラックミドルウェア


最初に、私は、私がこのdev hackathonに参加するための適切な方法があるかどうか知りませんでした.
しかし、私はそれから仲間のdevのコミュニティメンバーKinyanjui Wangonyaからこのアイデアを読んで、Webの貨幣化APIのためのPythonの結合を作成し、私はインスピレーションの瞬間を持っていた!


APIから返された異なる状態を扱うために、Ruby生態系のためのミドルウェアを構築する時間でした.

私の作ったもの


ラックミドルウェアを作りました.rack-monetize , スタンドアローンのRubyアプリケーションで使用するか、Railsアプリケーションにマウントできます.
ミドルウェアは他のミドルウェアのように機能し、スタックの真ん中に位置し、アプリケーションに要求されているリクエストパラメータを監視します.
ミドルウェアがWebの収益化APIに関連するパラメータを見つけたら、それを傍受して処理します.パラメータのデータ値がdocumented in the API その後、データは、アプリのスタックの下で続行することができます.しかし、データが期待状態のいずれかではない場合、それは、アプリケーションのフローを停止し、403 HTTPステータス.
この機能は、WebのマネタイリングAPIを統合している各アプリケーションのRuby開発者ごとに構築することができますが、それらのために処理するミドルウェアの概要は、それを含むように簡単になりますuse Rack::Monetize::ProcessMonetizeState 彼らのconfig.ru or config.middleware.use Rack::Monetize::ProcessMonetizeState 彼らのconfig/application.rb ファイルが柵の中にあるならば.
宝石は入手可能ですRubyGems このコードはgithubで入手できます:

ベングバーグ / ラックにする


Webサーバ化ミドルウェア


提出カテゴリ


基礎技術

デモ


アプリ(v 0.1.0)を見つけることができますRubyGems .
クライアントアプリケーションは、Web MoniceAPI API状態をバックエンドにrack-monetize インストール.国家は国家とともに送られる必要があるmonetization_state キー.

コードへのリンク


ベングバーグ / ラックにする


Webサーバ化ミドルウェア


どうやって


バンドルで新しいGEM機能を使って最初にビルドしました.
$ bundle gem rack-monetize
これは一連の質問を開始します.これらの質問は、ライセンス、行為のコードなどについてです.
一旦それが完了したならば、私はrack-monetize.gemspec , これは宝石を構築するために使用され、私はrack 実行時依存
spec.add_runtime_dependency('rack', '~> 2.2', '>= 2.2.2')
その時点で、私はコード自体を書く準備ができました/lib/rack/monetize/process_monetize_state.rb .
The ProcessMonetizeState#initialize メソッドは引数としてアプリケーションを受け取り、インスタンス変数に代入します.@app , コードの残りの部分で使用するには.
The #call メソッドウィルreturn 環境がスタックに戻る場合params 含まれないmonetization_state .
If the params 含めるmonetization_state それは#check_monetization_state メソッド.
このメソッドはtruestopped , pending , started or undefined . によるとAPI Documentation undefined ブラウザにWeb版化が行われるまで存在します.
ミドルウェアは403 HTTPステータスmonetization_state が、その値は前述の状態の一つではない.