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 CHANGED
@@ -16,7 +16,7 @@ Or install it yourself as:
16
16
 
17
17
  $ gem install dmm
18
18
 
19
- ## ChnageLog
19
+ ## ChangeLog
20
20
 
21
21
  ### Version 0.0.2
22
22
 
data/dmm.gemspec CHANGED
@@ -21,4 +21,5 @@ Gem::Specification.new do |gem|
21
21
  gem.add_dependency 'faraday_middleware', '~> 0.8'
22
22
  gem.add_dependency 'nokogiri', '~> 1.5.6'
23
23
  gem.add_development_dependency 'rspec'
24
+ gem.add_development_dependency 'simplecov'
24
25
  end
@@ -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/core_ext/hash'
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
- def initialize(args)
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}=", args[id])
26
+ send("#{id}=", options[id])
24
27
  end
25
28
  end
26
29
 
27
- # @return [Dmm::Response]
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
- Hash.from_xml(response.body)
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
- # @return [Array]
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
- # @return [Array]
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
@@ -1,3 +1,3 @@
1
1
  module Dmm
2
- VERSION = "0.0.2.1"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -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
@@ -1,3 +1,9 @@
1
+ require 'simplecov'
2
+
3
+ SimpleCov.start do
4
+ add_filter 'spec'
5
+ end
6
+
1
7
  require 'bundler/setup'
2
8
  require 'dmm'
3
9
  require 'config/config'
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.2.1
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-02-17 00:00:00.000000000 Z
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.23
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