dmm 0.0.2.1 → 0.0.3
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/README.md +1 -1
- data/dmm.gemspec +1 -0
- data/lib/dmm/api/items.rb +30 -0
- data/lib/dmm/client.rb +18 -23
- data/lib/dmm/item.rb +7 -0
- data/lib/dmm/price.rb +7 -2
- data/lib/dmm/result.rb +10 -1
- data/lib/dmm/version.rb +1 -1
- data/spec/dmm/client_spec.rb +2 -2
- data/spec/spec_helper.rb +6 -0
- metadata +20 -3
data/README.md
CHANGED
data/dmm.gemspec
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'dmm/response'
|
2
|
+
require 'dmm/core_ext/hash'
|
3
|
+
require 'dmm/core_ext/string'
|
4
|
+
|
5
|
+
module Dmm
|
6
|
+
module API
|
7
|
+
module Items
|
8
|
+
|
9
|
+
# Returns a Dmm::Response object
|
10
|
+
#
|
11
|
+
# @param options [Hash]
|
12
|
+
# @return [Dmm::Response]
|
13
|
+
def item_list(options={})
|
14
|
+
res = Hash.from_xml(get('/', params(options)))
|
15
|
+
raise Dmm::Error, error_message(res) if res[:response][:result][:errors]
|
16
|
+
Dmm::Response.new(res)
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def error_message(response)
|
22
|
+
result = response[:response][:result]
|
23
|
+
message = result[:message] || "Error"
|
24
|
+
error_name = "\s(#{result[:errors][:error][:name]})"
|
25
|
+
error_val = result[:errors][:error][:value] || ""
|
26
|
+
"#{message.camelize}: #{error_val.capitalize}#{error_name}"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/dmm/client.rb
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
require 'dmm'
|
2
|
-
require 'dmm/response'
|
3
|
-
require 'dmm/item'
|
4
2
|
require 'dmm/error'
|
5
|
-
require 'dmm/
|
6
|
-
require 'dmm/core_ext/string'
|
3
|
+
require 'dmm/api/items'
|
7
4
|
require 'faraday'
|
8
5
|
require 'faraday_middleware'
|
9
6
|
require 'faraday/response/raise_dmm_error'
|
10
7
|
|
11
8
|
module Dmm
|
12
9
|
class Client
|
10
|
+
include Dmm::API::Items
|
11
|
+
|
13
12
|
ROOT_URL = 'http://affiliate-api.dmm.com'
|
14
13
|
API_VERSION = '2.00'
|
15
14
|
COM = 'DMM.com'
|
@@ -18,20 +17,17 @@ module Dmm
|
|
18
17
|
|
19
18
|
attr_accessor *OPTIONS
|
20
19
|
|
21
|
-
|
20
|
+
# Initialize a new Client object
|
21
|
+
#
|
22
|
+
# @param options [Hash]
|
23
|
+
# @return [Dmm::Client]
|
24
|
+
def initialize(options={})
|
22
25
|
OPTIONS.each do |id|
|
23
|
-
send("#{id}=",
|
26
|
+
send("#{id}=", options[id])
|
24
27
|
end
|
25
28
|
end
|
26
29
|
|
27
|
-
#
|
28
|
-
def item_list(options={})
|
29
|
-
res = get('/', params(options))
|
30
|
-
raise Dmm::Error, error_message(res) if res[:response][:result][:errors]
|
31
|
-
Dmm::Response.new(res)
|
32
|
-
end
|
33
|
-
|
34
|
-
# @return [Hash]
|
30
|
+
# Perform an HTTP GET request
|
35
31
|
def get(path, params={})
|
36
32
|
request(:get, path, params)
|
37
33
|
end
|
@@ -42,9 +38,12 @@ module Dmm
|
|
42
38
|
response = connection.send(method.to_sym, path, params) do |request|
|
43
39
|
request.url(path, params)
|
44
40
|
end
|
45
|
-
|
41
|
+
response.body
|
46
42
|
end
|
47
43
|
|
44
|
+
# Returns a Faraday::Connection object
|
45
|
+
#
|
46
|
+
# @return [Faraday::Connection]
|
48
47
|
def connection
|
49
48
|
@connection ||= Faraday.new(:url => ROOT_URL) do |builder|
|
50
49
|
builder.request :url_encoded
|
@@ -53,6 +52,10 @@ module Dmm
|
|
53
52
|
end
|
54
53
|
end
|
55
54
|
|
55
|
+
# Returns a Hash containing API query parameters
|
56
|
+
#
|
57
|
+
# @param [Hash]
|
58
|
+
# @return [Hash]
|
56
59
|
def params(options={})
|
57
60
|
params = {
|
58
61
|
:api_id => @api_id,
|
@@ -65,13 +68,5 @@ module Dmm
|
|
65
68
|
options.each_value {|val| val.encode! 'euc-jp' if val.kind_of? String}
|
66
69
|
params.merge!(options)
|
67
70
|
end
|
68
|
-
|
69
|
-
def error_message(response)
|
70
|
-
result = response[:response][:result]
|
71
|
-
message = result[:message] || "Error"
|
72
|
-
error_name = "\s(#{result[:errors][:error][:name]})"
|
73
|
-
error_val = result[:errors][:error][:value] || ""
|
74
|
-
"#{message.camelize}: #{error_val.capitalize}#{error_name}"
|
75
|
-
end
|
76
71
|
end
|
77
72
|
end
|
data/lib/dmm/item.rb
CHANGED
@@ -15,17 +15,24 @@ module Dmm
|
|
15
15
|
alias :url_sp :URLsp
|
16
16
|
alias :affiliate_url_sp :affiliateURLsp
|
17
17
|
|
18
|
+
# Returns an Array of sampleimage url
|
19
|
+
#
|
20
|
+
# @return [Array<String>]
|
18
21
|
def sampleImageURL
|
19
22
|
@attrs[:sampleImageURL][:sample_s][:image]
|
20
23
|
end
|
21
24
|
alias :sample_image_url :sampleImageURL
|
22
25
|
|
26
|
+
# Returns a Dmm::Price object
|
27
|
+
#
|
23
28
|
# @return [Dmm::Price]
|
24
29
|
def prices
|
25
30
|
@price ||= Dmm::Price.new(@attrs[:prices])
|
26
31
|
@price
|
27
32
|
end
|
28
33
|
|
34
|
+
# Returns a Dmm::Iteminfo object
|
35
|
+
#
|
29
36
|
# @return [Dmm::Iteminfo]
|
30
37
|
def iteminfo
|
31
38
|
@iteminfo ||= Dmm::Iteminfo.new(@attrs[:iteminfo])
|
data/lib/dmm/price.rb
CHANGED
@@ -4,24 +4,29 @@ module Dmm
|
|
4
4
|
class Price < Dmm::Base
|
5
5
|
attr_reader :price
|
6
6
|
|
7
|
+
# Returns minimum price of item
|
8
|
+
#
|
7
9
|
# @return [Integer]
|
8
10
|
def min_price
|
9
11
|
@attrs[:price].to_i
|
10
12
|
end
|
11
13
|
|
12
|
-
#
|
14
|
+
# Returns an array of hashes with a type of delivery as key and price as value
|
15
|
+
#
|
16
|
+
# @return [Array<Hash>]
|
13
17
|
def deliveries
|
14
18
|
return [] unless @attrs[:deliveries]
|
15
19
|
@attrs[:deliveries][:delivery]
|
16
20
|
end
|
17
21
|
|
22
|
+
# Returns an array containing type of delivery
|
23
|
+
#
|
18
24
|
# @return [Array]
|
19
25
|
def delivery_types
|
20
26
|
@delivery_types ||= deliveries.map { |price| price[:type] }
|
21
27
|
@delivery_types
|
22
28
|
end
|
23
29
|
|
24
|
-
# ex) item.price_stream #=> 1980
|
25
30
|
def method_missing(method)
|
26
31
|
if method.to_s =~ /^price_(\w+)$/
|
27
32
|
array = deliveries.select{ |hash| hash[:type] == $1 }
|
data/lib/dmm/result.rb
CHANGED
@@ -3,22 +3,31 @@ require 'dmm/item'
|
|
3
3
|
|
4
4
|
module Dmm
|
5
5
|
class Result < Dmm::Base
|
6
|
+
|
7
|
+
# Returns a count of result data
|
8
|
+
#
|
6
9
|
# @return [Integer]
|
7
10
|
def result_count
|
8
11
|
@attrs[:result_count].to_i
|
9
12
|
end
|
10
13
|
|
14
|
+
# Returns a count of total data
|
15
|
+
#
|
11
16
|
# @return [Integer]
|
12
17
|
def total_count
|
13
18
|
@attrs[:total_count].to_i
|
14
19
|
end
|
15
20
|
|
21
|
+
# Returns a position of first item
|
22
|
+
#
|
16
23
|
# @return [Integer]
|
17
24
|
def first_position
|
18
25
|
@attrs[:first_position].to_i
|
19
26
|
end
|
20
27
|
|
21
|
-
#
|
28
|
+
# Returns a array containing Dmm::Item object
|
29
|
+
#
|
30
|
+
# @return [Array<Dmm::Item>]
|
22
31
|
def items
|
23
32
|
return [] unless @attrs[:items]
|
24
33
|
item_list = @attrs[:items][:item]
|
data/lib/dmm/version.rb
CHANGED
data/spec/dmm/client_spec.rb
CHANGED
@@ -37,7 +37,7 @@ describe Dmm::Client do
|
|
37
37
|
|
38
38
|
share_examples_for '#error_message with wrong api_id' do
|
39
39
|
it 'should equal "LoginError: No existing account (login)"' do
|
40
|
-
res = subject.get('/', subject.send(:params))
|
40
|
+
res = Hash.from_xml(subject.get('/', subject.send(:params)))
|
41
41
|
subject.send(:error_message, res).should eq 'LoginError: No existing account (login)'
|
42
42
|
end
|
43
43
|
end
|
@@ -63,7 +63,7 @@ describe Dmm::Client do
|
|
63
63
|
|
64
64
|
describe '#error_message' do
|
65
65
|
it 'should equal "RequestError: Parameter not found (affiliate_id)"' do
|
66
|
-
res = subject.get('/', subject.send(:params))
|
66
|
+
res = Hash.from_xml(subject.get('/', subject.send(:params)))
|
67
67
|
subject.send(:error_message, res).should eq 'RequestError: Parameter not found (affiliate_id)'
|
68
68
|
end
|
69
69
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dmm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
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
|
+
date: 2013-03-06 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: simplecov
|
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: Ruby wrapper for DMM Web Service API ver2
|
79
95
|
email:
|
80
96
|
- sugaishun@gmail.com
|
@@ -90,6 +106,7 @@ files:
|
|
90
106
|
- Rakefile
|
91
107
|
- dmm.gemspec
|
92
108
|
- lib/dmm.rb
|
109
|
+
- lib/dmm/api/items.rb
|
93
110
|
- lib/dmm/base.rb
|
94
111
|
- lib/dmm/client.rb
|
95
112
|
- lib/dmm/core_ext/hash.rb
|
@@ -129,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
146
|
version: '0'
|
130
147
|
requirements: []
|
131
148
|
rubyforge_project:
|
132
|
-
rubygems_version: 1.8.
|
149
|
+
rubygems_version: 1.8.25
|
133
150
|
signing_key:
|
134
151
|
specification_version: 3
|
135
152
|
summary: Ruby wrapper for DMM Web Service API ver2
|