dmm 0.0.2.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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