mushikago-sdk 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  require 'singleton'
2
2
  module Mushikago
3
+ # Mushikago SDK for Rubyの各設定
3
4
  class Config
4
5
  include Singleton
5
6
 
@@ -39,6 +40,7 @@ module Mushikago
39
40
  add_option :secret_key, ENV['MUSHIKAGO_SECRET_KEY'] || ENV['MUSHIKAGO_SECRET_ACCESS_KEY']
40
41
  add_option :tombo_endpoint, 'tombo.mushikago.org'
41
42
 
43
+ # @private
42
44
  private
43
45
  def supplied
44
46
  @supplied ||= {}
@@ -2,6 +2,7 @@ require 'net/http'
2
2
  require 'json'
3
3
  module Mushikago
4
4
  module Http
5
+ # Mushikagoサービスに接続するクライアント
5
6
  class Client
6
7
  # @return [String] api_key
7
8
  attr_reader :api_key
@@ -2,6 +2,7 @@ require 'net/http'
2
2
  require 'cgi'
3
3
  module Mushikago
4
4
  module Http
5
+ # MushikagoサービスのHTTPリクエストを表すクラス
5
6
  class Request
6
7
  # @return [Hash] headers
7
8
  attr_reader :headers
@@ -25,19 +26,26 @@ module Mushikago
25
26
  @http_method = new_http_request.method
26
27
  end
27
28
 
29
+ # @param [String] key パラメータのキー
30
+ # @param [String] value パラメータの値
28
31
  def set_param key, value
29
32
  params[key] = value
30
33
  end
31
34
 
35
+ # @param [String] key パラメータのキー
36
+ # @return [String] パラメータの値
32
37
  def get_param key
33
38
  param = params.detect{|p| p[0] == key}
34
39
  param ? param[1] : nil
35
40
  end
36
41
 
42
+ # @return [String] URLエンコードされ、&で接続されたパラメータの文字列
37
43
  def url_encoded_params
38
44
  params.sort.collect{|pp| pp.map{|p| encode p}.join('=')}.join('&')
39
45
  end
40
46
 
47
+ # HTTPリクエストオブジェクトに変換する
48
+ # @return [Net::HTTPRequest] HTTPリクエスト
41
49
  def to_http_request
42
50
  http_request = new_http_request
43
51
  headers.each do |key, value|
@@ -47,17 +55,29 @@ module Mushikago
47
55
  return http_request
48
56
  end
49
57
 
58
+ # @private
59
+ # @return [Net::HTTPRequest] HTTPリクエスト
50
60
  protected
51
61
  def new_http_request
52
62
  Net::HTTP::Get.new("#{path}?#{url_encoded_params}")
53
63
  end
54
64
 
65
+ # URLエンコードされた文字列を取得する
66
+ # @private
67
+ # @param [String] s URLエンコード対象の文字列
68
+ # @return [String] URLエンコードされた文字列
55
69
  private
56
70
  def encode s
57
71
  CGI.escape(s).gsub('+', '%20')
58
72
  end
59
73
 
60
74
  class << self
75
+ # リクエストパラメータへのアクセサを定義する
76
+ # @param [String] name パラメータ名
77
+ # @yield [value] アクセサを通して渡された値を変換するブロック
78
+ # @yieldreturn [Object] 変換された値
79
+ # @example
80
+ # add_param :price do |v| v.to_i end
61
81
  def add_param name, &transform
62
82
  attr_accessor name
63
83
  define_method("#{name}=") do |value|
@@ -1,6 +1,9 @@
1
1
  module Mushikago
2
2
  module Tombo
3
+ # キャプチャリクエスト
3
4
  class CaptureRequest < Request
5
+ def method_name; 'capture.json' end
6
+
4
7
  add_param :url
5
8
  add_param :image_format
6
9
  add_param :image_quality do |v| v.to_i.to_s end
@@ -20,10 +23,10 @@ module Mushikago
20
23
  self.image_quality = options[:image_quality] if options.has_key?(:image_quality)
21
24
  self.thumbnail = options[:thumbnail] if options.has_key?(:thumbnail)
22
25
  self.tags = options[:tags] if options.has_key?(:tags)
23
- @path = "/#{api_version}/capture.json"
24
26
  @headers['Content-type'] = 'application/x-www-form-urlencoded; charset=utf-8'
25
27
  end
26
28
 
29
+ # @private
27
30
  def new_http_request
28
31
  Net::HTTP::Post.new(path)
29
32
  end
@@ -1,6 +1,9 @@
1
1
  module Mushikago
2
2
  module Tombo
3
+ # キャプチャ一覧取得リクエスト
3
4
  class CapturesRequest < Request
5
+ def method_name; 'captures.json' end
6
+
4
7
  add_param :id
5
8
  add_param :limit
6
9
  add_param :offset
@@ -20,7 +23,6 @@ module Mushikago
20
23
  self.offset = options[:offset] if options.has_key?(:offset)
21
24
  self.domain = options[:domain] if options.has_key?(:domain)
22
25
  self.tag = options[:tag] if options.has_key?(:tag)
23
- @path = "/#{api_version}/captures.json"
24
26
  end
25
27
  end
26
28
  end
@@ -1,6 +1,9 @@
1
1
  module Mushikago
2
2
  module Tombo
3
+ # Deleteリクエスト
3
4
  class DeleteRequest < Request
5
+ def method_name; 'delete.json' end
6
+
4
7
  add_param :id
5
8
 
6
9
  # @param [String] id 画像のID
@@ -8,9 +11,9 @@ module Mushikago
8
11
  def initialize id, options={}
9
12
  super(options)
10
13
  self.id = id
11
- @path = "/#{api_version}/delete.json"
12
14
  end
13
15
 
16
+ # @private
14
17
  def new_http_request
15
18
  Net::HTTP::Delete.new("#{path}?#{url_encoded_params}")
16
19
  end
@@ -1,10 +1,12 @@
1
1
  module Mushikago
2
2
  module Tombo
3
+ # API使用状況取得リクエスト
3
4
  class InfoRequest < Request
5
+ def method_name; 'info.json' end
6
+
4
7
  # @param [Hash] options リクエストのオプション
5
8
  def initialize options={}
6
9
  super(options)
7
- @path = "/#{api_version}/info.json"
8
10
  end
9
11
  end
10
12
  end
@@ -1,19 +1,31 @@
1
1
  module Mushikago
2
2
  module Tombo
3
+ # Tomboのリクエストを表す抽象クラス
3
4
  class Request < Mushikago::Http::Request
4
5
  include Mushikago::Auth::Signature
5
6
 
7
+ # @param [Hash] options オプション
8
+ # @option options [String] :endpoint('tombo.mushikago.org') Tomboのエンドポイント
6
9
  def initialize options={}
7
10
  super()
8
11
  endpoint = options[:endpoint] || Mushikago.config.tombo_endpoint
9
12
  host, port = endpoint.split(':')
10
- self.host = host
11
- self.port = port if port
13
+ @host = host
14
+ @port = port if port
15
+ @path = "/#{api_version}/#{method_name}"
12
16
  end
13
17
 
18
+ # @private
19
+ private
14
20
  def api_version
15
21
  1
16
22
  end
23
+
24
+ # @private
25
+ private
26
+ def method_name
27
+ ''
28
+ end
17
29
  end
18
30
  end
19
31
  end
@@ -1,3 +1,4 @@
1
1
  module Mushikago
2
- VERSION = '0.1.4'
2
+ # Mushikago SDK for Ruby のバージョン
3
+ VERSION = '0.1.5'
3
4
  end
@@ -1,5 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
+ class SampleRequest < Mushikago::Http::Request
4
+ add_param :sample1
5
+ add_param :sample2 do |v| v.to_i end
6
+ add_param :sample3 do |v| 'sample3' end
7
+ end
8
+
3
9
  describe Mushikago::Http::Request do
4
10
  before :all do
5
11
  @request = Mushikago::Http::Request.new
@@ -38,5 +44,23 @@ describe Mushikago::Http::Request do
38
44
  subject{ @request.to_http_request }
39
45
  it{ should be_a_kind_of(Net::HTTPRequest) }
40
46
  end
47
+
48
+ context 'extend with add_param' do
49
+ before :all do
50
+ @request = SampleRequest.new
51
+ @request.sample1 = 'hoge'
52
+ @request.sample2 = '20'
53
+ @request.sample3 = 'fuga'
54
+ end
55
+
56
+ subject{ @request }
57
+
58
+ it{ should respond_to(:sample1, :sample1=) }
59
+ it{ should respond_to(:sample2, :sample2=) }
60
+
61
+ it{ subject.sample1.should == 'hoge' }
62
+ it{ subject.sample2.should == 20 }
63
+ it{ subject.sample3.should == 'sample3' }
64
+ end
41
65
  end
42
66
 
@@ -7,8 +7,6 @@ describe Mushikago::Tombo::Request do
7
7
 
8
8
  subject{ @request }
9
9
 
10
- it{ should respond_to(:api_version) }
11
- it{ subject.api_version.should == 1 }
12
10
  it{ subject.host.should == Mushikago.config.tombo_endpoint }
13
11
 
14
12
  context 'construct with options' do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mushikago-sdk
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 4
10
- version: 0.1.4
9
+ - 5
10
+ version: 0.1.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Toru Matsuoka