dech 0.1.0 → 0.1.1
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.
- checksums.yaml +4 -4
- data/.travis.yml +2 -2
- data/Guardfile +1 -1
- data/README.md +1 -1
- data/dech.gemspec +3 -0
- data/lib/dech/dena/ftp.rb +7 -1
- data/lib/dech/rakuten.rb +1 -0
- data/lib/dech/rakuten/api.rb +45 -0
- data/lib/dech/rakuten/ftp.rb +4 -1
- data/lib/dech/version.rb +1 -1
- data/lib/dech/yahoo/ftp.rb +4 -1
- data/spec/dech/csv_spec.rb +5 -5
- data/spec/dech/dena/ftp_spec.rb +0 -1
- data/spec/dech/ponpare/ftps_spec.rb +1 -1
- data/spec/dech/rakuten/api_spec.rb +78 -0
- data/spec/dech/rakuten/ftp_spec.rb +1 -1
- data/spec/dech/yahoo/ftp_spec.rb +1 -1
- metadata +47 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 616d6829ec3eac2ee411e098b60d383570e56790
|
4
|
+
data.tar.gz: 762ee5f6c4ac69009b39239e72d38b7f89e1a7d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3969c78544589f3182f234382c14e6d64609bfacf0375b1e756962f68ce2ca3eba8e66bb6e085c18bc74b89033246417bf733ebc78a97391841ac60cfedaa93
|
7
|
+
data.tar.gz: 078104e6104c4ce3663fa4a4211eb91c05948518721b0b79434241214709cd9ec64f704ab58d9cb3ad1354796cb89a8a130794ae93791ef67c3913f58dd13915
|
data/.travis.yml
CHANGED
data/Guardfile
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Dech
|
2
2
|
|
3
3
|
[](http://badge.fury.io/rb/dech)
|
4
|
-
](https://travis-ci.org/e-maido/dech)
|
5
5
|
[](https://coveralls.io/r/e-maido/dech?branch=master)
|
6
6
|
|
7
7
|
## Installation
|
data/dech.gemspec
CHANGED
@@ -20,9 +20,12 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_dependency "double-bag-ftps"
|
22
22
|
spec.add_dependency "emmental"
|
23
|
+
spec.add_dependency "rms_web_service"
|
24
|
+
spec.add_dependency "net-ftp-port_command"
|
23
25
|
|
24
26
|
spec.add_development_dependency "bundler", "~> 1.5"
|
25
27
|
spec.add_development_dependency "rake"
|
26
28
|
spec.add_development_dependency "rspec"
|
27
29
|
spec.add_development_dependency "guard-rspec"
|
30
|
+
spec.add_development_dependency "webmock"
|
28
31
|
end
|
data/lib/dech/dena/ftp.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
require 'net/ftp'
|
3
|
+
require 'net/ftp/port_command'
|
3
4
|
require 'dech/dena/csv'
|
4
5
|
|
5
6
|
module Dech
|
@@ -16,6 +17,8 @@ module Dech
|
|
16
17
|
@password = args[:password]
|
17
18
|
@host = args[:host] || DEFAULT_HOST
|
18
19
|
@path = args[:path] || DEFAULT_PATH
|
20
|
+
@local_address = args[:local_address]
|
21
|
+
@local_port = args[:local_port]
|
19
22
|
end
|
20
23
|
|
21
24
|
def csv
|
@@ -38,7 +41,10 @@ module Dech
|
|
38
41
|
private
|
39
42
|
|
40
43
|
def ftp_connection
|
41
|
-
Net::FTP.open(@host, @username, @password)
|
44
|
+
Net::FTP.open(@host, @username, @password) do |ftp|
|
45
|
+
ftp.port(@local_address, @local_port) if @local_address || @local_port
|
46
|
+
yield(ftp)
|
47
|
+
end
|
42
48
|
end
|
43
49
|
end
|
44
50
|
end
|
data/lib/dech/rakuten.rb
CHANGED
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'rms_web_service'
|
2
|
+
|
3
|
+
class RakutenUploadError < StandardError; end
|
4
|
+
|
5
|
+
module Dech
|
6
|
+
class Rakuten
|
7
|
+
class API
|
8
|
+
HEADER_MAPPINGS = {
|
9
|
+
id: "item_url",
|
10
|
+
price: "item_price"
|
11
|
+
}
|
12
|
+
|
13
|
+
def initialize(args)
|
14
|
+
@client = ::RmsWebService::Client::Item.new(
|
15
|
+
:service_secret => args[:service_secret],
|
16
|
+
:license_key => args[:license_key],
|
17
|
+
:endpoint => args[:endpoint]
|
18
|
+
)
|
19
|
+
@products = args[:products]
|
20
|
+
end
|
21
|
+
|
22
|
+
def upload
|
23
|
+
upload! rescue false
|
24
|
+
end
|
25
|
+
|
26
|
+
def upload!
|
27
|
+
formatted_products.each do |product|
|
28
|
+
item = @client.update(product)
|
29
|
+
raise RakutenUploadError, "#{item.errors}" unless item.success?
|
30
|
+
end
|
31
|
+
true
|
32
|
+
end
|
33
|
+
|
34
|
+
def ready?
|
35
|
+
true
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def formatted_products
|
41
|
+
@products.map{|product| Dech::HashKeyMapper.map(product, HEADER_MAPPINGS) }
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/dech/rakuten/ftp.rb
CHANGED
data/lib/dech/version.rb
CHANGED
data/lib/dech/yahoo/ftp.rb
CHANGED
data/spec/dech/csv_spec.rb
CHANGED
@@ -16,7 +16,7 @@ describe Dech::CSV do
|
|
16
16
|
it { is_expected.to be(Encoding::Windows_31J) }
|
17
17
|
end
|
18
18
|
|
19
|
-
context :given, Encoding::UTF_8 do
|
19
|
+
context :given, Encoding::UTF_8.to_s do
|
20
20
|
subject{ Dech::CSV.new([], encoding: Encoding::UTF_8).external_encoding }
|
21
21
|
it { is_expected.to be(Encoding::UTF_8) }
|
22
22
|
end
|
@@ -25,12 +25,12 @@ describe Dech::CSV do
|
|
25
25
|
describe "headers" do
|
26
26
|
array = [[:col1, :col2, :col3], [1, 2, 3]]
|
27
27
|
|
28
|
-
context "default with", array.first do
|
28
|
+
context "default with", array.first.to_s do
|
29
29
|
subject{ Dech::CSV.new(array).headers }
|
30
30
|
it { is_expected.to eq(array.first) }
|
31
31
|
end
|
32
32
|
|
33
|
-
context "given false with", array.first do
|
33
|
+
context "given false with", array.first.to_s do
|
34
34
|
subject{ Dech::CSV.new(array, headers: false).headers }
|
35
35
|
it { is_expected.to eq(nil) }
|
36
36
|
end
|
@@ -44,7 +44,7 @@ describe Dech::CSV do
|
|
44
44
|
|
45
45
|
it { is_expected.to be_an_instance_of(Array) }
|
46
46
|
|
47
|
-
context :given, array do
|
47
|
+
context :given, array.to_s do
|
48
48
|
it { is_expected.to eq(array) }
|
49
49
|
end
|
50
50
|
end
|
@@ -55,7 +55,7 @@ describe Dech::CSV do
|
|
55
55
|
|
56
56
|
it { is_expected.to be_an_instance_of(String) }
|
57
57
|
|
58
|
-
context :given, array do
|
58
|
+
context :given, array.to_s do
|
59
59
|
array.each do |row|
|
60
60
|
row.each do |cell|
|
61
61
|
it { is_expected.to include(cell.to_s) }
|
data/spec/dech/dena/ftp_spec.rb
CHANGED
@@ -14,7 +14,7 @@ describe Dech::Ponpare::FTPS do
|
|
14
14
|
|
15
15
|
let(:ftps) {
|
16
16
|
ftps = double("ftps")
|
17
|
-
|
17
|
+
expect(ftps).to receive(:passive=).with(true)
|
18
18
|
allow(ftps).to receive(:ssl_context=)
|
19
19
|
allow(ftps).to receive(:connect)
|
20
20
|
allow(ftps).to receive(:login)
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "webmock/rspec"
|
3
|
+
|
4
|
+
describe Dech::Rakuten::API do
|
5
|
+
let(:api) {
|
6
|
+
described_class.new(
|
7
|
+
products: [{id: "PRODUCT-CODE", price: 9800, "item_name" => 'PRODUCT-NAME'}],
|
8
|
+
service_secret: "service_secret",
|
9
|
+
license_key: "license_key"
|
10
|
+
)
|
11
|
+
}
|
12
|
+
let(:response) {"<itemUpdateResult><code>N000</code></itemUpdateResult>"}
|
13
|
+
|
14
|
+
describe "initialize" do
|
15
|
+
subject {api}
|
16
|
+
it { is_expected.to be_a Dech::Rakuten::API}
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#formatted_products (private)" do
|
20
|
+
let(:formatted_products){ [{'item_url'=> 'PRODUCT-CODE', 'item_price'=> 9800, 'item_name' => 'PRODUCT-NAME'}] }
|
21
|
+
subject{ api.send(:formatted_products) }
|
22
|
+
it{ is_expected.to eq(formatted_products)}
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "#ready?" do
|
26
|
+
subject {api.ready?}
|
27
|
+
it { is_expected.to be true }
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "#upload!" do
|
31
|
+
let!(:request){stub_request(:post, "https://api.rms.rakuten.co.jp/es/1.0/item/update")}
|
32
|
+
|
33
|
+
it "should access to API" do
|
34
|
+
api.upload! rescue true
|
35
|
+
expect(request).to have_been_made
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'API access is success' do
|
39
|
+
before do
|
40
|
+
stub_request(:post, "https://api.rms.rakuten.co.jp/es/1.0/item/update").to_return(:body => response)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "" do
|
44
|
+
expect(api.upload!).to be true
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'API access is failure' do
|
49
|
+
it "should raise RakuteUploadError" do
|
50
|
+
expect{api.upload!}.to raise_error ::RakutenUploadError
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "#upload" do
|
56
|
+
let!(:request){stub_request(:post, "https://api.rms.rakuten.co.jp/es/1.0/item/update")}
|
57
|
+
it 'should access to API' do
|
58
|
+
api.upload
|
59
|
+
expect(request).to have_been_made
|
60
|
+
end
|
61
|
+
|
62
|
+
context 'API access is success' do
|
63
|
+
before do
|
64
|
+
stub_request(:post, "https://api.rms.rakuten.co.jp/es/1.0/item/update").to_return(:body => response)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "" do
|
68
|
+
expect(api.upload).to be true
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'API access is failure' do
|
73
|
+
it "" do
|
74
|
+
expect(api.upload).to be false
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -14,7 +14,7 @@ describe Dech::Rakuten::FTP do
|
|
14
14
|
|
15
15
|
let(:net_ftp) {
|
16
16
|
net_ftp = double("net_ftp")
|
17
|
-
|
17
|
+
expect(net_ftp).to receive(:passive=).with(true)
|
18
18
|
allow(net_ftp).to receive(:connect)
|
19
19
|
allow(net_ftp).to receive(:login)
|
20
20
|
allow(net_ftp).to receive(:close)
|
data/spec/dech/yahoo/ftp_spec.rb
CHANGED
@@ -13,7 +13,7 @@ describe Dech::Yahoo::FTP do
|
|
13
13
|
|
14
14
|
let(:net_ftp) {
|
15
15
|
net_ftp = double("net_ftp")
|
16
|
-
|
16
|
+
expect(net_ftp).to receive(:passive=).with(true)
|
17
17
|
allow(net_ftp).to receive(:connect)
|
18
18
|
allow(net_ftp).to receive(:login)
|
19
19
|
allow(net_ftp).to receive(:close)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dech
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OSA Shunsuke
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: double-bag-ftps
|
@@ -38,6 +38,34 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rms_web_service
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: net-ftp-port_command
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: bundler
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +122,20 @@ dependencies:
|
|
94
122
|
- - ">="
|
95
123
|
- !ruby/object:Gem::Version
|
96
124
|
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: webmock
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
97
139
|
description: Dech enables to upload product information easily.
|
98
140
|
email:
|
99
141
|
- hhelibebcnofnenamg@gmail.com
|
@@ -121,6 +163,7 @@ files:
|
|
121
163
|
- lib/dech/ponpare/ftps.rb
|
122
164
|
- lib/dech/price_uploader.rb
|
123
165
|
- lib/dech/rakuten.rb
|
166
|
+
- lib/dech/rakuten/api.rb
|
124
167
|
- lib/dech/rakuten/csv.rb
|
125
168
|
- lib/dech/rakuten/ftp.rb
|
126
169
|
- lib/dech/version.rb
|
@@ -135,6 +178,7 @@ files:
|
|
135
178
|
- spec/dech/ponpare/csv_spec.rb
|
136
179
|
- spec/dech/ponpare/ftps_spec.rb
|
137
180
|
- spec/dech/ponpare_spec.rb
|
181
|
+
- spec/dech/rakuten/api_spec.rb
|
138
182
|
- spec/dech/rakuten/csv_spec.rb
|
139
183
|
- spec/dech/rakuten/ftp_spec.rb
|
140
184
|
- spec/dech/rakuten_spec.rb
|
@@ -176,6 +220,7 @@ test_files:
|
|
176
220
|
- spec/dech/ponpare/csv_spec.rb
|
177
221
|
- spec/dech/ponpare/ftps_spec.rb
|
178
222
|
- spec/dech/ponpare_spec.rb
|
223
|
+
- spec/dech/rakuten/api_spec.rb
|
179
224
|
- spec/dech/rakuten/csv_spec.rb
|
180
225
|
- spec/dech/rakuten/ftp_spec.rb
|
181
226
|
- spec/dech/rakuten_spec.rb
|