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.
- data/lib/mushikago/configuration.rb +2 -0
- data/lib/mushikago/http/client.rb +1 -0
- data/lib/mushikago/http/request.rb +20 -0
- data/lib/mushikago/tombo/capture_request.rb +4 -1
- data/lib/mushikago/tombo/captures_request.rb +3 -1
- data/lib/mushikago/tombo/delete_request.rb +4 -1
- data/lib/mushikago/tombo/info_request.rb +3 -1
- data/lib/mushikago/tombo/request.rb +14 -2
- data/lib/mushikago/version.rb +2 -1
- data/spec/mushikago/http/request_spec.rb +24 -0
- data/spec/mushikago/tombo/request_spec.rb +0 -2
- metadata +3 -3
@@ -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 '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
|
-
|
11
|
-
|
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
|
data/lib/mushikago/version.rb
CHANGED
@@ -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
|
|
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:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 5
|
10
|
+
version: 0.1.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Toru Matsuoka
|