fat_secret 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
@@ -14,11 +14,11 @@ module FatSecret
|
|
14
14
|
|
15
15
|
params = default_parameters.merge(params).merge(method: method)
|
16
16
|
uri = request_uri('GET', params)
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
JSON.parse(
|
17
|
+
response = uri.read
|
18
|
+
FatSecret.configuration.logger.debug(
|
19
|
+
"FatSecret Response: #{response}"
|
20
|
+
)
|
21
|
+
JSON.parse(response)
|
22
22
|
end
|
23
23
|
|
24
24
|
private
|
@@ -17,7 +17,9 @@ module FatSecret
|
|
17
17
|
|
18
18
|
define_method "#{type}=" do |array|
|
19
19
|
klass = "FatSecret::#{type.to_s.singularize.classify}".constantize
|
20
|
-
servings = array[type.to_s.singularize]
|
20
|
+
servings = array[type.to_s.singularize]
|
21
|
+
servings = [servings] unless servings.is_a?(Array)
|
22
|
+
servings = servings.map do |attrs|
|
21
23
|
klass.new(attrs)
|
22
24
|
end
|
23
25
|
@servings = HasManyProxy.new(servings)
|
data/lib/fat_secret/version.rb
CHANGED
@@ -35,30 +35,49 @@ describe FatSecret::Food do
|
|
35
35
|
describe '.get' do
|
36
36
|
before { configure }
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
38
|
+
context 'when there are multiple servings', :multiple_servings do
|
39
|
+
subject do
|
40
|
+
VCR.use_cassette('get_milk', match_requests_on: [ :host ], allow_playback_repeats: true) do
|
41
|
+
FatSecret::Food.get(793)
|
42
|
+
end
|
41
43
|
end
|
42
|
-
end
|
43
44
|
|
44
|
-
|
45
|
-
|
46
|
-
|
45
|
+
it 'should return a food object' do
|
46
|
+
subject.should be_instance_of(FatSecret::Food)
|
47
|
+
end
|
47
48
|
|
48
|
-
|
49
|
-
|
50
|
-
|
49
|
+
it 'should populate the food name' do
|
50
|
+
subject.name.should eql('Milk')
|
51
|
+
end
|
51
52
|
|
52
|
-
|
53
|
-
|
54
|
-
|
53
|
+
it 'should populate the servings' do
|
54
|
+
subject.servings.should_not be_blank
|
55
|
+
end
|
55
56
|
|
56
|
-
|
57
|
-
|
57
|
+
it 'should use serving objects in the servings relation' do
|
58
|
+
subject.servings.first.should be_instance_of(FatSecret::Serving)
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'should add the serving data to the servings' do
|
62
|
+
subject.servings.first.saturated_fat.should eql(2.965)
|
63
|
+
end
|
58
64
|
end
|
59
65
|
|
60
|
-
|
61
|
-
subject
|
66
|
+
context 'when there is only 1 serving', :one_serving do
|
67
|
+
subject do
|
68
|
+
VCR.use_cassette(
|
69
|
+
'get_steel_cut_oats', match_requests_on: [ :host ],
|
70
|
+
allow_playback_repeats: true
|
71
|
+
) do
|
72
|
+
FatSecret::Food.get(2095870)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
it { should be_instance_of(FatSecret::Food) }
|
77
|
+
|
78
|
+
it { subject.servings.count.should eql(1) }
|
79
|
+
|
80
|
+
it { subject.servings.first.calories.should eql(150.0) }
|
62
81
|
end
|
63
82
|
end
|
64
83
|
|
@@ -0,0 +1,47 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://platform.fatsecret.com/rest/server.api?food_id=2095870&format=json&method=food.get&oauth_consumer_key=7ebedda1451640ecbd8db41ea22d1351&oauth_nonce=429e9d97ad3f4f51&oauth_signature=xxPMCPmw5CxkTpTo2RGpmevl5co%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1362913468&oauth_version=1.0
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
accept:
|
11
|
+
- ! '*/*'
|
12
|
+
user-agent:
|
13
|
+
- Ruby
|
14
|
+
response:
|
15
|
+
status:
|
16
|
+
code: 200
|
17
|
+
message: OK
|
18
|
+
headers:
|
19
|
+
cache-control:
|
20
|
+
- private
|
21
|
+
content-type:
|
22
|
+
- application/json; charset=utf-8
|
23
|
+
server:
|
24
|
+
- Microsoft-IIS/7.5
|
25
|
+
x-aspnet-version:
|
26
|
+
- 4.0.30319
|
27
|
+
x-powered-by:
|
28
|
+
- ASP.NET
|
29
|
+
date:
|
30
|
+
- Sun, 10 Mar 2013 11:04:27 GMT
|
31
|
+
content-length:
|
32
|
+
- '840'
|
33
|
+
body:
|
34
|
+
encoding: US-ASCII
|
35
|
+
string: ! '{ "food": {"brand_name": "Hodgson Mill", "food_id": "2095870", "food_name":
|
36
|
+
"Steel Cut Oats", "food_type": "Brand", "food_url": "http:\/\/www.fatsecret.com\/calories-nutrition\/hodgson-mill\/steel-cut-oats",
|
37
|
+
"servings": {"serving": {"calcium": "0", "calories": "150", "carbohydrate":
|
38
|
+
"27", "cholesterol": "0", "fat": "2.5", "fiber": "4", "iron": "10", "measurement_description":
|
39
|
+
"serving", "metric_serving_amount": "40.000", "metric_serving_unit": "g",
|
40
|
+
"monounsaturated_fat": "0", "number_of_units": "1.000", "polyunsaturated_fat":
|
41
|
+
"0", "potassium": "167", "protein": "5", "saturated_fat": "0.5", "serving_description":
|
42
|
+
"1\/4 cup", "serving_id": "2053719", "serving_url": "http:\/\/www.fatsecret.com\/calories-nutrition\/hodgson-mill\/steel-cut-oats",
|
43
|
+
"sodium": "0", "sugar": "1", "trans_fat": "0", "vitamin_a": "0", "vitamin_c":
|
44
|
+
"0" } } }}'
|
45
|
+
http_version: '1.1'
|
46
|
+
recorded_at: Sun, 10 Mar 2013 11:04:28 GMT
|
47
|
+
recorded_with: VCR 2.3.0
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fat_secret
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
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-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: active_attr
|
@@ -128,6 +128,7 @@ files:
|
|
128
128
|
- spec/support/vcr.rb
|
129
129
|
- spec/vcr_cassettes/get_milk.yml
|
130
130
|
- spec/vcr_cassettes/get_servings_association.yml
|
131
|
+
- spec/vcr_cassettes/get_steel_cut_oats.yml
|
131
132
|
- spec/vcr_cassettes/search_for_milk.yml
|
132
133
|
homepage: https://github.com/mattbeedle/FatSecret
|
133
134
|
licenses: []
|
@@ -165,4 +166,5 @@ test_files:
|
|
165
166
|
- spec/support/vcr.rb
|
166
167
|
- spec/vcr_cassettes/get_milk.yml
|
167
168
|
- spec/vcr_cassettes/get_servings_association.yml
|
169
|
+
- spec/vcr_cassettes/get_steel_cut_oats.yml
|
168
170
|
- spec/vcr_cassettes/search_for_milk.yml
|