haruna 0.0.1.2 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -18,25 +18,53 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- client = Haruna::Client.new(token)
21
+ ```ruby
22
+ client = Haruna::Client.new(token, end_point)
22
23
 
23
- # to start a mission
24
- client.req_mission_start(deck_id, mission_id)
24
+ # start a mission
25
+ client.req_mission_start(deck_id, mission_id)
25
26
 
26
- # to obtain mission result
27
- client.req_mission_result(deck_id)
27
+ # obtain mission result
28
+ client.req_mission_result(deck_id)
28
29
 
29
- # to refill fuel & bullets
30
- client.req_hokyu_charge(kind, ship_id_arr)
30
+ # refill fuel & bullets
31
+ client.req_hokyu_charge(kind, ship_id_arr)
32
+ ```
31
33
 
32
- ### Parameter
34
+ ### Parameters
35
+
36
+ | Param | Description | Sample | Constraint |
37
+ | ------------- | -------------- | ------------------------------------------ | ---------- |
38
+ | token | Your API token | "835d2a8f2ca5fea2463248cc6910af96880fc29e" | |
39
+ | end_point | API endpoint | "http://125.6.189.215" | |
40
+ | ship_id | Ship's id | 35 | 1 |
41
+ | deck_id | Deck's id | 3 | 1 ~ 4 |
42
+ | kind | Refill mode - 1: fuel, 2: bullets, 3: fuel + bullets | 3 | 1 ~ 3 |
43
+
44
+ ### Configuration
45
+
46
+ You can configure a `Haruna::Client` by passing it options when it's initialized.
47
+
48
+ ```ruby
49
+ # specify proxy server
50
+ proxy_client = Haruna::Client.new(token, end_point, proxy: "http://127.0.0.1:8888")
51
+
52
+ # you can modify HTTP request header
53
+ client = Haruna::Client.new(token, end_point, user_agent: "My User Agent", accept_enc: "gzip")
54
+ # or you can rewrite the settings after initialization
55
+ client.user_agent = "Foo Bar"
56
+ ```
57
+
58
+ | Option | Description | Default |
59
+ | -------------- | ----------------- | ------------------------------------ |
60
+ | :proxy | Proxy server URL | nil |
61
+ | :api_ver | API version | 1 |
62
+ | :user_agent | User Agent | "Mozilla/5.0 (M..." |
63
+ | :referer | Referer | "/kcs/port.swf?version=1.5.5" |
64
+ | :accept_enc | Accept-Encoding | "gzip,deflate,sdch" |
65
+ | :accept_lang | Accept-Encoding | "ja,en-US;q=0.8,en;q=0.6" |
66
+ | :content_type | Content-Type | "application/x-www-form-urlencoded" |
33
67
 
34
- | Param | Description | Constraint |
35
- | ------------- | -------------- | ---------- |
36
- | token | Your API token | |
37
- | ship_id | Ship's id | 1 ~ |
38
- | deck_id | Deck's id | 1 ~ 4 |
39
- | kind | Refill mode - 1: oil, 2: bullets, 3: oil + bullets | 1 ~ 3 |
40
68
 
41
69
 
42
70
  ## Disclaimer
data/haruna.gemspec CHANGED
@@ -22,4 +22,5 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "bundler", "~> 1.3"
23
23
  spec.add_development_dependency "rspec"
24
24
  spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "pry"
25
26
  end
data/lib/haruna/api.rb CHANGED
@@ -1,42 +1,52 @@
1
1
  module Haruna
2
2
 
3
3
  class API
4
- # config req header
5
- API_VER = 1
6
- END_POINT = 'http://125.6.189.215'
7
- USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36'
8
- REFERER = 'http://125.6.189.215/kcs/port.swf?version=1.5.5'
9
- ACCEPT_ENCODING = 'gzip,deflate,sdch'
10
- ACCEPT_LANGUAGE = 'ja,en-US;q=0.8,en;q=0.6'
11
- CONTENT_TYPE = 'application/x-www-form-urlencoded'
12
-
13
- def initialize(token, proxy=nil)
4
+ attr_writer :conn # for testing, not really need to rewrite this
5
+ attr_accessor :proxy, :api_ver, :user_agent, :referer, :accept_enc, :accept_lang, :content_type
6
+
7
+ DEFAULT_OPTS = {
8
+ proxy: nil,
9
+ api_ver: 1,
10
+ user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36',
11
+ referer: '/kcs/port.swf?version=1.5.5', # 'http://125.6.189.215/kcs/port.swf?version=1.5.5'
12
+ accept_enc: 'gzip,deflate,sdch',
13
+ accept_lang: 'ja,en-US;q=0.8,en;q=0.6',
14
+ content_type: 'application/x-www-form-urlencoded'
15
+ }
16
+
17
+ def initialize(token, end_point, opts={})
14
18
  require 'faraday'
15
19
  @token = token
20
+ @end_point = end_point
21
+
22
+ self.setup(opts || {})
16
23
 
17
- @conn = Faraday.new(:url => END_POINT, :proxy => proxy) do |faraday|
24
+ @conn = Faraday.new(:url => @end_point, :proxy => @proxy) do |faraday|
18
25
  faraday.request :url_encoded
19
26
  # faraday.response :logger
20
27
  faraday.adapter Faraday.default_adapter
21
28
  end
22
29
  end
23
30
 
24
- attr_writer :conn # for testing, not really need to rewrite
25
-
26
31
  def call(action, target, param={})
27
32
  @conn.post do |req|
28
33
  req.url "/kcsapi/#{action}/#{target}"
29
- req.headers['User-Agent'] = USER_AGENT
30
- req.headers['Referer'] = REFERER
31
- req.headers['Accept-Encoding'] = ACCEPT_ENCODING
32
- req.headers['Accept-Language'] = ACCEPT_LANGUAGE
33
- req.headers['Content-Type'] = CONTENT_TYPE
34
+ req.headers['User-Agent'] = @user_agent
35
+ req.headers['Referer'] = "#{@end_point}#{@referer}"
36
+ req.headers['Accept-Encoding'] = @accept_enc
37
+ req.headers['Accept-Language'] = @accept_lang
38
+ req.headers['Content-Type'] = @content_type
34
39
  req.body = setup_param(param)
35
40
  end
36
41
  end
37
42
 
38
43
  def setup_param(param)
39
- param.merge(api_verno: API_VER, api_token: @token)
44
+ param.merge(api_verno: @api_ver, api_token: @token)
45
+ end
46
+
47
+ def setup(opts)
48
+ DEFAULT_OPTS.merge(opts).each { |key, value| instance_variable_set("@#{key}", value) }
49
+ self
40
50
  end
41
51
 
42
52
  end
data/lib/haruna/client.rb CHANGED
@@ -2,8 +2,8 @@ module Haruna
2
2
 
3
3
  class Client < API
4
4
 
5
- def initialize(token, proxy=nil)
6
- super(token, proxy)
5
+ def initialize(token, end_point, opts={})
6
+ super(token, end_point, opts)
7
7
  end
8
8
 
9
9
  def req_mission_start(deck_id, mission_id)
@@ -22,9 +22,9 @@ module Haruna
22
22
  end
23
23
 
24
24
  # kind
25
- # 1: oil?
26
- # 2: bullet?
27
- # 3: oil + bullet?
25
+ # 1: fuel
26
+ # 2: bullet
27
+ # 3: fuel + bullet
28
28
  def req_hokyu_charge(kind, ship_id_arr)
29
29
  validate_supply_kind(kind)
30
30
  validate_ship_ids(ship_id_arr)
@@ -1,3 +1,3 @@
1
1
  module Haruna
2
- VERSION = "0.0.1.2"
2
+ VERSION = "0.0.2"
3
3
  end
data/spec/api_spec.rb CHANGED
@@ -2,24 +2,44 @@
2
2
  require File.expand_path(File.join('./', 'spec_helper'), File.dirname(__FILE__))
3
3
 
4
4
  describe Haruna::API do
5
- describe "#new" do
5
+ before do
6
+ @token = "abcdefg"
7
+ @end_point = "http://125.6.189.215"
8
+ end
6
9
 
7
- context "when token is empty" do
10
+ describe "#new" do
11
+ context "when token & end_point are empty" do
8
12
  it "should raise error" do
9
13
  expect{ Haruna::API.new }.to raise_error(ArgumentError)
10
14
  end
11
15
  end
12
16
 
13
- context "when token is NOT empty" do
14
- subject { Haruna::API.new("abcdefg") }
17
+ context "when token & end_point are specified" do
18
+ subject { Haruna::API.new(@token, @end_point) }
15
19
  it { should be_an_instance_of Haruna::API }
16
20
  end
17
21
  end
18
22
 
23
+ describe "#setup_param" do
24
+ subject { Haruna::API.new(@token, @end_point, opts) }
25
+ context "when opt is empty" do
26
+ let(:opts) { nil }
27
+ describe "return value" do
28
+ it { should be_an_instance_of Haruna::API }
29
+ end
30
+ describe "default setting" do
31
+ its(:api_ver) { should eq 1 }
32
+ its(:accept_enc) { should eq "gzip,deflate,sdch" }
33
+ its(:accept_lang) { should eq "ja,en-US;q=0.8,en;q=0.6" }
34
+ its(:content_type) { should eq "application/x-www-form-urlencoded" }
35
+ end
36
+ end
37
+ end
38
+
19
39
  describe "#setup_param" do
20
40
  before do
21
- @token = "abcdefg"
22
- @api = Haruna::API.new(@token)
41
+ @token = @token
42
+ @api = Haruna::API.new(@token, @end_point)
23
43
  end
24
44
 
25
45
  subject { @api.setup_param(param) }
@@ -42,7 +62,7 @@ describe Haruna::API do
42
62
 
43
63
  describe "#call" do
44
64
  before do
45
- @api = Haruna::API.new("abcdefg")
65
+ @api = Haruna::API.new(@token, @end_point)
46
66
  @api.conn = create_stub_connection # overwrite faraday adapter
47
67
  end
48
68
 
data/spec/client_spec.rb CHANGED
@@ -3,22 +3,27 @@ require File.expand_path(File.join('./', 'spec_helper'), File.dirname(__FILE__))
3
3
 
4
4
  describe Haruna::Client do
5
5
 
6
+ before do
7
+ @token = "abcdefg"
8
+ @end_point = "http://125.6.189.215"
9
+ end
10
+
6
11
  describe "#new" do
7
- context "when token is empty" do
12
+ context "when token & end_point are empty" do
8
13
  it "should raise error" do
9
14
  expect{ Haruna::Client.new }.to raise_error(ArgumentError)
10
15
  end
11
16
  end
12
17
 
13
- context "when token is NOT empty" do
14
- subject { Haruna::Client.new("abcdefg") }
18
+ context "when token & end_point are NOT empty" do
19
+ subject { Haruna::Client.new(@token, @end_point) }
15
20
  it { should be_an_instance_of Haruna::Client }
16
21
  end
17
22
  end
18
23
 
19
24
  describe "client commands" do
20
25
  before do
21
- @client = Haruna::Client.new("abcdefg")
26
+ @client = Haruna::Client.new(@token, @end_point)
22
27
  @client.conn = create_stub_connection # overwrite faraday adapter
23
28
  end
24
29
 
@@ -30,7 +35,7 @@ describe Haruna::Client do
30
35
  end
31
36
  context "w/ two parameters" do
32
37
  subject { @client.req_mission_start(1, 1) }
33
- its(:body) { should eq "ok" }
38
+ its(:body) { should start_with "svdata" }
34
39
  end
35
40
  end
36
41
 
@@ -42,7 +47,7 @@ describe Haruna::Client do
42
47
  end
43
48
  context "w/ two parameters" do
44
49
  subject { @client.req_mission_result(1) }
45
- its(:body) { should eq "ok" }
50
+ its(:body) { should start_with "svdata" }
46
51
  end
47
52
  end
48
53
 
@@ -54,14 +59,14 @@ describe Haruna::Client do
54
59
  end
55
60
  context "w/ two parameters" do
56
61
  subject { @client.req_hokyu_charge(1, [1,2,3]) }
57
- its(:body) { should eq "ok" }
62
+ its(:body) { should start_with "svdata" }
58
63
  end
59
64
  end
60
65
 
61
66
  describe "#get_member_deck_port" do
62
67
  context "w/o parameters" do
63
68
  subject { @client.get_member_deck_port }
64
- its(:body) { should eq "ok" }
69
+ its(:body) { should start_with "svdata" }
65
70
  end
66
71
  context "w/ a parameter" do
67
72
  it "should raise an error" do
@@ -74,7 +79,7 @@ describe Haruna::Client do
74
79
 
75
80
  describe "validators" do
76
81
  before do
77
- @client = Haruna::Client.new("abcdefg")
82
+ @client = Haruna::Client.new(@token, @end_point)
78
83
  end
79
84
 
80
85
  describe "#validate_deck_id" do
data/spec/spec_helper.rb CHANGED
@@ -1,18 +1,30 @@
1
1
  # encoding: utf-8
2
2
  require 'rubygems'
3
3
  require 'haruna'
4
+ require 'pry'
4
5
 
5
6
  def create_stub_connection
7
+
8
+ resp_headers = {"date"=>"Sat, 21 Dec 2013 04:11:07 GMT", "server"=>"Apache", "x-powered-by"=>"PHP/5.3.3", "content-length"=>"149", "content-type"=>"text/plain", "proxy-connection"=>"Close"}
9
+
6
10
  stubs = Faraday::Adapter::Test::Stubs.new do |stub|
7
11
  # stub.post(url) { [status_code, response_header, response_body] }
8
12
  stub.post('/kcsapi/get_seafood/tamago') {[ 200, {}, 'egg' ]}
9
13
  stub.post('/kcsapi/get_seafood/ebi') {[ 200, {}, 'shrimp' ]}
10
14
  stub.post('/kcsapi/get_seafood/uni') {[ 200, {}, 'urchin' ]}
11
15
 
12
- stub.post('/kcsapi/api_req_mission/start') {[ 200, {}, 'ok' ]}
13
- stub.post('/kcsapi/api_req_mission/result') {[ 200, {}, 'ok' ]}
14
- stub.post('/kcsapi/api_req_hokyu/charge') {[ 200, {}, 'ok' ]}
15
- stub.post('/kcsapi/api_get_member/deck_port') {[ 200, {}, 'ok' ]}
16
+ # stub.post(url) { [status_code, response_header, response_body] }
17
+ stub.post('/kcsapi/api_req_mission/start') {[ 200, resp_headers,
18
+ "svdata={\"api_result\":1,\"api_result_msg\":\"\\u6210\\u529f\",\"api_data\":{\"api_complatetime\":1387604467275,\"api_complatetime_str\":\"2013-12-21 14:41:07\"}}" ]} # BOM: \xEF\xBB\xBF
19
+
20
+ stub.post('/kcsapi/api_req_mission/result') {[ 200, resp_headers,
21
+ "svdata={\"api_result\":1,\"api_result_msg\":\"\\u6210\\u529f\",\"api_data\":{\"api_ship_id\":[-1,54,78,71,50],\"api_clear_result\":1,\"api_get_exp\":20,\"api_member_lv\":28,\"api_member_exp\":40216,\"api_get_ship_exp\":[22,15,15,15],\"api_get_exp_lvup\":[[2157,2800],[1730,2100],[2230,2800],[1555,2100]],\"api_maparea_name\":\"\\u93ae\\u5b88\\u5e9c\\u6d77\\u57df\",\"api_detail\":\"\\u5916\\u6d77\\u307e\\u3067\\u8db3\\u3092\\u5ef6\\u3070\\u3057\\u3001\\u8266\\u968a\\u306e\\u7df4\\u5ea6\\u3092\\u9ad8\\u3081\\u3088\\u3046\\uff01\",\"api_quest_name\":\"\\u9577\\u8ddd\\u96e2\\u7df4\\u7fd2\\u822a\\u6d77\",\"api_quest_level\":1,\"api_get_material\":[0,100,30,0],\"api_useitem_flag\":[1,0],\"api_get_item1\":{\"api_useitem_id\":-1,\"api_useitem_name\":null,\"api_useitem_count\":1}}}" ]}
22
+
23
+ stub.post('/kcsapi/api_req_hokyu/charge') {[ 200, resp_headers,
24
+ "svdata={\"api_result\":1,\"api_result_msg\":\"\\u6210\\u529f\",\"api_data\":{\"api_ship\":[{\"api_id\":54,\"api_fuel\":15,\"api_bull\":15,\"api_onslot\":[0,0,0,0,0]},{\"api_id\":78,\"api_fuel\":15,\"api_bull\":15,\"api_onslot\":[0,0,0,0,0]},{\"api_id\":71,\"api_fuel\":15,\"api_bull\":15,\"api_onslot\":[0,0,0,0,0]},{\"api_id\":50,\"api_fuel\":15,\"api_bull\":15,\"api_onslot\":[0,0,0,0,0]}],\"api_material\":[2938,5864,4151,3933],\"api_use_bou\":0}}" ]}
25
+
26
+ stub.post('/kcsapi/api_get_member/deck_port') {[ 200, resp_headers,
27
+ "svdata={\"api_result\":1,\"api_result_msg\":\"\\u6210\\u529f\",\"api_data\":[{\"api_member_id\":15010331,\"api_id\":1,\"api_name\":\"First\",\"api_name_id\":\"\",\"api_mission\":[0,0,0,0],\"api_flagship\":\"0\",\"api_ship\":[109,156,177,31,194,30]},{\"api_member_id\":15010331,\"api_id\":2,\"api_name\":\"Second\",\"api_name_id\":\"\",\"api_mission\":[1,5,1387598754473,0],\"api_flagship\":\"0\",\"api_ship\":[15,66,57,83,-1,-1]},{\"api_member_id\":15010331,\"api_id\":3,\"api_name\":\"Third\",\"api_name_id\":\"\",\"api_mission\":[1,2,1387595310643,0],\"api_flagship\":\"0\",\"api_ship\":[54,78,71,50,-1,-1]}]}" ]}
16
28
 
17
29
  end
18
30
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haruna
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.2
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-12-20 00:00:00.000000000 Z
12
+ date: 2013-12-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -75,6 +75,22 @@ dependencies:
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: pry
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
78
94
  description: Write a gem description
79
95
  email:
80
96
  - kakipo@gmail.com