myfitnesspal_stats 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9329a66d77250b4196f3f2a6d63faf8d47769ed8
4
+ data.tar.gz: 007c3b351daf059230d28df710e8bb7ed42bf893
5
+ SHA512:
6
+ metadata.gz: 4f44db587c989ab227a27e6492391cb91790fb7d0e086317fabda10a9cc6baf07ce24a4bf26c9fd176be84624b2a40c1d811e37bab3a61adcf040c96e12e89e6
7
+ data.tar.gz: e39977bf1bee8deb39c4d50bf9ea1a3443cb1e9c76303bf3415432506473171453acfdca180558a0cf9779690bba2dc1a45ee709057383961aca31905417ccfb
data/.gitignore ADDED
@@ -0,0 +1,15 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
15
+ .DS_Store
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format documentation
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'mechanize', '~> 2.7.3'
4
+ gem 'highline', '~> 1.6.21'
5
+
6
+ group :devlopment, :test do
7
+ gem 'rspec'
8
+ gem 'webmock', '~> 1.20.4'
9
+ gem 'vcr', '~> 2.9.3'
10
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 Hunter Ducharme
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,31 @@
1
+ # MyfitnesspalStats
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'myfitnesspal_stats'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install myfitnesspal_stats
20
+
21
+ ## Usage
22
+
23
+ TODO: Write usage instructions here
24
+
25
+ ## Contributing
26
+
27
+ 1. Fork it ( https://github.com/hgducharme/myfitnesspal_stats/fork )
28
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
29
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
30
+ 4. Push to the branch (`git push origin my-new-feature`)
31
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,25 @@
1
+ require_relative 'myfitnesspal_stats/version'
2
+ require_relative 'myfitnesspal_stats/account'
3
+ require_relative 'myfitnesspal_stats/scraper'
4
+ require 'mechanize'
5
+
6
+ # Possible gems to use:
7
+ # - markaby for generating html
8
+ # - RedCloth for generating html
9
+ # - hpricot or searching within html documents
10
+ # - REXML for parsing XML
11
+
12
+ =begin
13
+ class Nutrition_data
14
+ end
15
+
16
+ class Weight
17
+ end
18
+
19
+ class Diary
20
+ end
21
+ =end
22
+
23
+ module MyfitnesspalStats
24
+
25
+ end
@@ -0,0 +1,35 @@
1
+ require 'mechanize'
2
+
3
+ class Account
4
+ #attr_reader :username, :password
5
+ def initialize(username = nil, password = nil)
6
+ @username = username
7
+ @password = password
8
+ end
9
+
10
+ def login
11
+ web_crawler = Mechanize.new do |web_crawler|
12
+ # MFP refreshes after login
13
+ web_crawler.follow_meta_refresh = true
14
+ end
15
+
16
+ # Go to homepage, click log in, and submit the form
17
+ home_page = web_crawler.get('http://www.myfitnesspal.com/')
18
+ login_form = home_page.form_with(id: "fancy_login")
19
+ login_form['username'] = @username
20
+ login_form['password'] = @password
21
+ current_page = login_form.submit
22
+
23
+ # Checks to see if there was an error when logging in
24
+ begin
25
+ calories_left = current_page.search('div#calories-remaining-number').text
26
+ puts "#{@username} has successfully logged in!"
27
+ return current_page
28
+ rescue StandardError
29
+ flash = current_page.search('p.flash').text.split(' ').to_a
30
+ puts flash
31
+ return false
32
+ end
33
+
34
+ end # Account.login
35
+ end # class Account
@@ -0,0 +1,7 @@
1
+ require 'mechanize'
2
+
3
+ class Day
4
+ def initialize(year, month, day)
5
+ @date = Date.new(year, month, day)
6
+ end
7
+ end
@@ -0,0 +1,46 @@
1
+ require_relative 'account'
2
+ require_relative 'day'
3
+ require 'mechanize'
4
+
5
+ class Scraper
6
+ def initialize(username, password)
7
+ @username = username
8
+ @password = password
9
+
10
+ @date = Date.today
11
+
12
+ @account = Account.new(username, password)
13
+ @login_page = @account.login
14
+
15
+ @web_crawler = Mechanize.new do |web_crawler|
16
+ web_crawler.follow_meta_refresh = true
17
+ end
18
+ end # .initialize
19
+
20
+ def get_nutrition(year = @date.year, month = @date.month, day = @date.day)
21
+ date = Date.new(year, month, day)
22
+
23
+ diary = @login_page.link_with(href: "/food/diary/#{@username}").click
24
+ totals_table = diary.search('tr.total')
25
+
26
+ # Find which nutrients are being tracked, and put them into an array
27
+ nutrients = diary.search('tfoot').search('td.alt').text.split(
28
+ /(?<=[a-z])(?=[A-Z])/).to_a
29
+
30
+ nutrient_totals = Hash.new
31
+ nutrient_totals["Date"] = date.strftime("%A, %B %e, %Y")
32
+
33
+ # For each nutrient, iterate through the table rows and get the value in its respective column. Then push the nutrient and value into a hash.
34
+ nutrients.each_with_index do |nutrient, index|
35
+ todays_total = totals_table.search('td')[index+1].text.strip
36
+ daily_goal = totals_table.search('td')[index+9].text.strip
37
+ remaining = totals_table.search('td')[index+17].text.strip
38
+ puts "-- #{nutrient}: \n Total: #{todays_total} \n Your goal: #{daily_goal} \n Remaining: #{remaining} \n\n"
39
+
40
+ nutrient_totals[nutrient] = todays_total, daily_goal, remaining
41
+ end
42
+
43
+ nutrient_totals
44
+ end
45
+
46
+ end
@@ -0,0 +1,3 @@
1
+ module MyfitnesspalStats
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'myfitnesspal_stats/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "myfitnesspal_stats"
8
+ spec.version = MyfitnesspalStats::VERSION
9
+ spec.authors = ["Hunter Ducharme"]
10
+ spec.email = ["hgducharme@gmail.com"]
11
+ spec.summary = %q{Programatically access your daily nutrition from myfitnesspal.}
12
+ spec.description = %q{Access your weight, daily nutrition, and other attributes from myfitnesspal.}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_runtime_dependency "mechanize"
22
+ spec.add_runtime_dependency "highline/import"
23
+
24
+ spec.add_development_dependency "bundler", "~> 1.7"
25
+ spec.add_development_dependency "rake", "~> 10.0"
26
+ spec.add_development_dependency "rspec"
27
+ spec.add_development_dependency "webmock"
28
+ spec.add_development_dependency "vcr"
29
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe Account, :vcr do
4
+ before(:each) { @account = Account.new('bob', '1234') }
5
+
6
+ describe 'the initilization of an Account' do
7
+ it 'takes a username and password argument successfully' do
8
+ expect(@account).to be_an_instance_of(Account)
9
+ end
10
+ end
11
+
12
+ describe 'the process of logging into MFP' do
13
+ let(:home_page) { "http://www.google.com" }
14
+
15
+ # This is arbitrary, because Mechanize already tests the HTTP connection
16
+ it 'connects to the home page' do
17
+ skip('Implementation of VCR & Webmock needs revision')
18
+
19
+ home_page_cassette = File.new(
20
+ 'vcr_cassettes/Account/_login/connects_to_the_home_page.yml', 'r')
21
+ stub_request(:get, home_page).to_return(home_page_cassette)
22
+ end
23
+
24
+ it 'completes the login form and submits it' do
25
+
26
+ end
27
+ end
28
+
29
+ end
data/spec/day_spec.rb ADDED
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe Day do
4
+ describe 'the initialization of a Day' do
5
+
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe MyfitnesspalStats do
4
+ it 'has a version number' do
5
+ expect(MyfitnesspalStats::VERSION).not_to be nil
6
+ end
7
+ end # MyFitnessPalStats
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Scraper, :vcr do
4
+ describe 'the initialization of a Scraper' do
5
+ it 'takes a username and password argument successfully' do
6
+ @scraper = Scraper.new('bob', '1234')
7
+ expect(@scraper).to be_an_instance_of(Scraper)
8
+ end
9
+ end
10
+
11
+ describe 'the get_macros method' do
12
+ it 'takes a date' do
13
+
14
+ end
15
+
16
+ it 'does not fail if no date is given' do
17
+
18
+ end
19
+
20
+ it 'returns a hash with the date and macro totals' do
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,20 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'myfitnesspal_stats'
3
+
4
+ require 'support/vcr_setup'
5
+ require 'webmock/rspec'
6
+ require 'mechanize'
7
+ require 'net/http'
8
+ require 'uri'
9
+ require 'bundler/setup'
10
+ Bundler.setup
11
+
12
+ RSpec.configure do |config|
13
+ config.mock_with :rspec do |c|
14
+ c.syntax = [:should, :expect]
15
+ end
16
+
17
+ config.expect_with :rspec do |c|
18
+ c.syntax = [:should, :expect]
19
+ end
20
+ end
@@ -0,0 +1,7 @@
1
+ require 'vcr'
2
+
3
+ VCR.configure do |config|
4
+ config.cassette_library_dir = "spec/vcr_cassettes"
5
+ config.hook_into :webmock
6
+ config.configure_rspec_metadata!
7
+ end
@@ -0,0 +1,581 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://www.myfitnesspal.com/
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip,deflate,identity
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Mechanize/2.7.3 Ruby/2.2.0p0 (http://github.com/sparklemotion/mechanize/)
16
+ Accept-Charset:
17
+ - ISO-8859-1,utf-8;q=0.7,*;q=0.7
18
+ Accept-Language:
19
+ - en-us,en;q=0.5
20
+ Host:
21
+ - www.myfitnesspal.com
22
+ Connection:
23
+ - keep-alive
24
+ Keep-Alive:
25
+ - 300
26
+ response:
27
+ status:
28
+ code: 200
29
+ message: OK
30
+ headers:
31
+ Cache-Control:
32
+ - private, no-cache, no-store, max-age=0, must-revalidate, proxy-revalidate
33
+ Content-Encoding:
34
+ - gzip
35
+ Content-Type:
36
+ - text/html; charset=utf-8
37
+ Date:
38
+ - Sun, 08 Feb 2015 22:54:51 GMT
39
+ Expires:
40
+ - Fri, 01 Jan 1990 00:00:00 GMT
41
+ Pragma:
42
+ - no-cache
43
+ Server:
44
+ - nginx
45
+ Set-Cookie:
46
+ - _session_id=BAh7CEkiD3Nlc3Npb25faWQGOgZFRkkiJTRmM2M5MWI3MWNiODI3NzcyZDQzMWI5OTRhMGEwOWYzBjsAVEkiEGV4cGlyeV90aW1lBjsARlU6IEFjdGl2ZVN1cHBvcnQ6OlRpbWVXaXRoWm9uZVsISXU6CVRpbWUNIMUcwHn2OtsJOgtAX3pvbmVJIghVVEMGOwBUOg1uYW5vX251bWkC8gE6DW5hbm9fZGVuaQY6DXN1Ym1pY3JvIgdJgEkiH0NlbnRyYWwgVGltZSAoVVMgJiBDYW5hZGEpBjsAVEl1OwcNEsUcwHn2OtsJOwhJIghVVEMGOwBUOwlpAvIBOwppBjsLIgdJgEkiEF9jc3JmX3Rva2VuBjsARkkiMVBPajcrTE9uUnlpUWJtakZidG1OMzlnUE9vQXAwNjMrNHFJdFBGUnZKYlE9BjsARg%3D%3D--ae23f6be71abe828a013d08b75c9063992250f07;
47
+ path=/; HttpOnly
48
+ - tracker=id%3D%3E%7Cuser_id%3D%3E%7Csource%3D%3E%7Csource_domain%3D%3E%7Ckeywords%3D%3E%7Cclicked_at%3D%3E2015-02-08+22%3A54%3A51+%2B0000%7Clanding_page%3D%3Ehttp%3A%2F%2Fwww.myfitnesspal.com%2F%7Csearch_engine%3D%3E%7Clp_category%3D%3E%7Clp_subcategory%3D%3E%7Ccp%3D%3E%7Ccr%3D%3E%7Cs1%3D%3E%7Cs2%3D%3E%7Ckw%3D%3E%7Cmt%3D%3E;
49
+ path=/; expires=Mon, 08-Feb-2016 22:54:51 GMT
50
+ Status:
51
+ - 200 OK
52
+ X-Frame-Options:
53
+ - SAMEORIGIN
54
+ X-Powered-By:
55
+ - Phusion Passenger 4.0.29
56
+ X-Request-Id:
57
+ - c3d247f57ecdcc16d9940bcbbc50ca3c
58
+ X-Runtime:
59
+ - '0.085953'
60
+ X-Ua-Compatible:
61
+ - IE=Edge,chrome=1
62
+ Transfer-Encoding:
63
+ - chunked
64
+ Connection:
65
+ - keep-alive
66
+ body:
67
+ encoding: ASCII-8BIT
68
+ string: !binary |-
69
+ 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
341
+ http_version:
342
+ recorded_at: Sun, 08 Feb 2015 22:54:52 GMT
343
+ - request:
344
+ method: post
345
+ uri: https://www.myfitnesspal.com/account/login
346
+ body:
347
+ encoding: UTF-8
348
+ string: utf8=%E2%9C%93&authenticity_token=POj7%2BLOnRyiQbmjFbtmN39gPOoAp063%2B4qItPFRvJbQ%3D&username=bob&password=1234&remember_me=1
349
+ headers:
350
+ Accept-Encoding:
351
+ - gzip,deflate,identity
352
+ Accept:
353
+ - "*/*"
354
+ User-Agent:
355
+ - Mechanize/2.7.3 Ruby/2.2.0p0 (http://github.com/sparklemotion/mechanize/)
356
+ Accept-Charset:
357
+ - ISO-8859-1,utf-8;q=0.7,*;q=0.7
358
+ Accept-Language:
359
+ - en-us,en;q=0.5
360
+ Cookie:
361
+ - _session_id=BAh7CEkiD3Nlc3Npb25faWQGOgZFRkkiJTRmM2M5MWI3MWNiODI3NzcyZDQzMWI5OTRhMGEwOWYzBjsAVEkiEGV4cGlyeV90aW1lBjsARlU6IEFjdGl2ZVN1cHBvcnQ6OlRpbWVXaXRoWm9uZVsISXU6CVRpbWUNIMUcwHn2OtsJOgtAX3pvbmVJIghVVEMGOwBUOg1uYW5vX251bWkC8gE6DW5hbm9fZGVuaQY6DXN1Ym1pY3JvIgdJgEkiH0NlbnRyYWwgVGltZSAoVVMgJiBDYW5hZGEpBjsAVEl1OwcNEsUcwHn2OtsJOwhJIghVVEMGOwBUOwlpAvIBOwppBjsLIgdJgEkiEF9jc3JmX3Rva2VuBjsARkkiMVBPajcrTE9uUnlpUWJtakZidG1OMzlnUE9vQXAwNjMrNHFJdFBGUnZKYlE9BjsARg%3D%3D--ae23f6be71abe828a013d08b75c9063992250f07;
362
+ tracker=id%3D%3E%7Cuser_id%3D%3E%7Csource%3D%3E%7Csource_domain%3D%3E%7Ckeywords%3D%3E%7Cclicked_at%3D%3E2015-02-08+22%3A54%3A51+%2B0000%7Clanding_page%3D%3Ehttp%3A%2F%2Fwww.myfitnesspal.com%2F%7Csearch_engine%3D%3E%7Clp_category%3D%3E%7Clp_subcategory%3D%3E%7Ccp%3D%3E%7Ccr%3D%3E%7Cs1%3D%3E%7Cs2%3D%3E%7Ckw%3D%3E%7Cmt%3D%3E
363
+ Host:
364
+ - www.myfitnesspal.com
365
+ Referer:
366
+ - !ruby/object:URI::HTTP
367
+ scheme: http
368
+ user:
369
+ password:
370
+ host: www.myfitnesspal.com
371
+ port: 80
372
+ path: "/"
373
+ query:
374
+ opaque:
375
+ fragment:
376
+ parser: !ruby/object:URI::RFC3986_Parser
377
+ regexp:
378
+ :SCHEME: !ruby/regexp /\A[A-Za-z][A-Za-z0-9+\-.]*\z/
379
+ :USERINFO: !ruby/regexp /\A(?:%\h\h|[!$&-.0-;=A-Z_a-z~])*\z/
380
+ :HOST: !ruby/regexp /\A(?:(?<IP-literal>\[(?:(?<IPv6address>(?:\h{1,4}:){6}(?<ls32>\h{1,4}:\h{1,4}|(?<IPv4address>(?<dec-octet>[1-9]\d|1\d{2}|2[0-4]\d|25[0-5]|\d)\.\g<dec-octet>\.\g<dec-octet>\.\g<dec-octet>))|::(?:\h{1,4}:){5}\g<ls32>|\h{,4}::(?:\h{1,4}:){4}\g<ls32>|(?:(?:\h{1,4}:)?\h{1,4})?::(?:\h{1,4}:){3}\g<ls32>|(?:(?:\h{1,4}:){,2}\h{1,4})?::(?:\h{1,4}:){2}\g<ls32>|(?:(?:\h{1,4}:){,3}\h{1,4})?::\h{1,4}:\g<ls32>|(?:(?:\h{1,4}:){,4}\h{1,4})?::\g<ls32>|(?:(?:\h{1,4}:){,5}\h{1,4})?::\h{1,4}|(?:(?:\h{1,4}:){,6}\h{1,4})?::)|(?<IPvFuture>v\h+\.[!$&-.0-;=A-Z_a-z~]+))\])|\g<IPv4address>|(?<reg-name>(?:%\h\h|[!$&-.0-9;=A-Z_a-z~])*))\z/
381
+ :ABS_PATH: !ruby/regexp /\A\/(?:%\h\h|[!$&-.0-;=@-Z_a-z~])*(?:\/(?:%\h\h|[!$&-.0-;=@-Z_a-z~])*)*\z/
382
+ :REL_PATH: !ruby/regexp /\A(?:%\h\h|[!$&-.0-;=@-Z_a-z~])+(?:\/(?:%\h\h|[!$&-.0-;=@-Z_a-z~])*)*\z/
383
+ :QUERY: !ruby/regexp /\A(?:%\h\h|[!$&-.0-;=@-Z_a-z~\/?])*\z/
384
+ :FRAGMENT: !ruby/regexp /\A(?:%\h\h|[!$&-.0-;=@-Z_a-z~\/?])*\z/
385
+ :OPAQUE: !ruby/regexp /\A(?:[^\/].*)?\z/
386
+ :PORT: !ruby/regexp /\A[\x09\x0a\x0c\x0d ]*\d*[\x09\x0a\x0c\x0d ]*\z/
387
+ Content-Type:
388
+ - application/x-www-form-urlencoded
389
+ Content-Length:
390
+ - '125'
391
+ Connection:
392
+ - keep-alive
393
+ Keep-Alive:
394
+ - 300
395
+ response:
396
+ status:
397
+ code: 200
398
+ message: OK
399
+ headers:
400
+ Cache-Control:
401
+ - private, no-cache, no-store, max-age=0, must-revalidate, proxy-revalidate
402
+ Content-Encoding:
403
+ - gzip
404
+ Content-Type:
405
+ - text/html; charset=utf-8
406
+ Date:
407
+ - Sun, 08 Feb 2015 22:54:53 GMT
408
+ Expires:
409
+ - Fri, 01 Jan 1990 00:00:00 GMT
410
+ Pragma:
411
+ - no-cache
412
+ Server:
413
+ - nginx
414
+ Set-Cookie:
415
+ - _session_id=BAh7CUkiD3Nlc3Npb25faWQGOgZFRkkiJTRmM2M5MWI3MWNiODI3NzcyZDQzMWI5OTRhMGEwOWYzBjsAVEkiEGV4cGlyeV90aW1lBjsARlU6IEFjdGl2ZVN1cHBvcnQ6OlRpbWVXaXRoWm9uZVsISXU6CVRpbWUNIMUcwPRZXtsJOgtAX3pvbmVJIghVVEMGOwBUOg1uYW5vX251bWkC7AI6DW5hbm9fZGVuaQY6DXN1Ym1pY3JvIgd0gEkiH1BhY2lmaWMgVGltZSAoVVMgJiBDYW5hZGEpBjsARkl1OwcNEMUcwPRZXtsJOwhJIghVVEMGOwBUOwlpAuwCOwppBjsLIgd0gEkiEF9jc3JmX3Rva2VuBjsARkkiMVBPajcrTE9uUnlpUWJtakZidG1OMzlnUE9vQXAwNjMrNHFJdFBGUnZKYlE9BjsARkkiCmZsYXNoBjsARm86JUFjdGlvbkRpc3BhdGNoOjpGbGFzaDo6Rmxhc2hIYXNoCToKQHVzZWRvOghTZXQGOgpAaGFzaHsGOgtub3RpY2VUOgxAY2xvc2VkRjoNQGZsYXNoZXN7BjsQSSI3SW5jb3JyZWN0IHVzZXJuYW1lIG9yIHBhc3N3b3JkLiAgUGxlYXNlIHRyeSBhZ2Fpbi4GOwBUOglAbm93bzokQWN0aW9uRGlzcGF0Y2g6OkZsYXNoOjpGbGFzaE5vdwY6C0BmbGFzaEAV--95e835b0a545417883d7fc1e2779c977f7c04669;
416
+ path=/; HttpOnly
417
+ Status:
418
+ - 200 OK
419
+ X-Frame-Options:
420
+ - SAMEORIGIN
421
+ X-Powered-By:
422
+ - Phusion Passenger 4.0.29
423
+ X-Request-Id:
424
+ - 5d35df00b5f679985c93c0e00262424e
425
+ X-Runtime:
426
+ - '0.046382'
427
+ X-Ua-Compatible:
428
+ - IE=Edge,chrome=1
429
+ Content-Length:
430
+ - '6400'
431
+ Connection:
432
+ - keep-alive
433
+ body:
434
+ encoding: ASCII-8BIT
435
+ string: !binary |-
436
+ H4sIAAAAAAAAA+VcW2/jSHZ+7v4V1RzAlmKJlHy/UY7dtqc97W6723Z2BoYh
437
+ UGRJok2RHF5sq90GZpGHPOYhyCYBFnkJggCLbJAACbAJkKf9A7t/YbHZDYLk
438
+ P+Q7VUWKkiW3e+zdh8SYscm6nHPq1Klzq8Nef7F98PL4m8Md1k16Hjs82drf
439
+ e8m0qmH8YO6lYWwfb7OvXx2/2Wd1vcaOI8uP3cQNfMszjJ232vNnWjdJwlXD
440
+ uLq60q/m9CDqGMfvjWsCVqfZ6rGaFKbqTuJojefrAuN1z/NjcwyY+srKipyt
441
+ 0aBVz/I7psZ9jQ2ebM+KMZkaqughmNxy8Ce2IzdMWNIPuakl/Doxzq1LS7Zq
442
+ jSvXd4Ir/e37nZM3Hz+WxF/z5ra8Jp50128H5o3W4pYd+Nqqeqgu6D6/irjn
443
+ 2rod9LSKxqMoiLbyUVZP96OqYyUWBibox0jux/w17wPI7Lzl8NmV5VodPVYY
444
+ otMiTu5to3O+vjA7u1BDj+CTZVPPW6vH0edsLnzz7mKLb9cTe/e6trnpvTt4
445
+ V+9++aqz8s3XnWsbk75NecqPXRpeGwIu2+ZnATf5MnUdgCPsHe4nx8EFOLbq
446
+ p56nWtB5HldF59BKDaxqob6g91xfP4+123VD8vF7s7nSbPpRM+Lfpm7EzXbq
447
+ i+WW/EpS4eWb7J1FJby57dKL5JSflW8urYgFJj2bN/w6DKIkXr25vV3z0XJa
448
+ O9Nty/NKga66KjnYJJsqBtbPTpOztYgnaeQDQ7ARrCbl20pQyWeWb1UvocrA
449
+ 3YIOLQOpmSYJVtBmxYWU1bRi21o7iEqS8NpasM51j/udpLsWzMyUsbzT4Kyc
450
+ 03Jbunn3VXvOul49LbKkwBBe8gtvSQnsqljlG39qylfPFQvibAlRzjCnpl1K
451
+ ypW2mSrkldh0SxZWHJUroVlbazfCtRD0pKfhmU6C2S/F2IeMrvg23xCLtggU
452
+ nPpnAOqXcQx8CDHAD8ZQ+43iBA38+PH0bNCblvJOTtOINW2Qq5DdBP6qVeE9
453
+ N1lNKnbErYSvphXPjRPu8yhetStNfgnxjFfbtwOgUQ4U4iCZrfnRH4I4Ovha
454
+ xTX9ktYJYq28lmT7afISdv0GravaEj/a3u1qt2cVzkd5P5gAGHJ7NJqIwTR3
455
+ ZKeGRiuwanSGZXRKzlxsrpR/SFokhZm4nUmVT2IrFwfS1zDooHXO7UR3eNv1
456
+ +WEUhDxK+lNTqvmC9+NyEvWzvRg7WqDEwfJSvhpUriI3sVoeX31Rq3A/7fFI
457
+ vtVvy5XgFhttd0tu+SY7HkSRiXMjWB6ZCkEYBUlAp0PvWvHBlZ8RVmS95N/2
458
+ wna6f/hpfmRnVc/lgERPHqSNSCdpUaxbLQVC4sQf8/SsXLkMXIfRmx6mcRcS
459
+ J0UuIongXIMECyErYYEkhQXxqHCdczOqRPq3ZgCCIRrZ/mPvu5bvgFH3bb9c
460
+ XiYsX+8vvdraG51Q3HyppZJMs/jqSLzwP37UArHV2gvonampgRqi941qfdU3
461
+ TVOatI3aqgtmBAPtl5+3aGbmNlt9HculIwKDMOF03D0brjNK/ZC0ywVmy/UC
462
+ GLvo3glfrnyobXnZBPk2OqHAH8ke37yU1nlgqOkokAaEeGTWlt6GLOzUVBv/
463
+ 6a3A6Zdv7JJTMA5kcRLm+gx8LgmR5mXI+6UuBFn6JTEUvunpMWx2UoKVLMPc
464
+ fPzo63Hs7QbRKzhAG8J/ieEHoVt5RFrFKmk9K7rQKqda4BNLwO1SGSqfTkxi
465
+ tpX07Xi8B6VW0pR7QmoqjmwsVdAwg8WQTa7IBdDKuO+87LqeQyp0WA9q8ExC
466
+ jyecSG7rkG6nf5RAxKemAmi8nKF4uSmQ5wS9l6QufVKXROJgJF6VDinB/WHb
467
+ gFXWOzwh1wIQaSkWHSd5JLRyxcZbvVxJlUgKy+MENvQJ1gBnzXKcHVLi+0qt
468
+ a7BCmpUklt0V7VrFM0uaNuMF0kEqZ4zfEIyvOOaN9MzgmI26XAWPbEyvYOMD
469
+ nZzKpTmQ75ug3Y55grMFRRG5Hddf9SptaI404tIJaZ/GZxsl+l3Stg/eKGbu
470
+ 0zHArgeVF8QR0SvlgFNLeRUzQrQFvtiomDbKBiM7XCPrTBaZOtWUcrkoUW03
471
+ ipNWHzutdqxyU1+t1zPVpCn9A2VVr99zroRFp03kUJikFkgjwCmA3xKIY1HO
472
+ jVFQnpqCz+KemUkpqPjkvFTcGbOeuwr8e5oCsgc4I0oj4HwMPEzGPuHKPzeM
473
+ 9RenL7c3jzdPn9M6Nk+OXzWPD17vvGUm0w4Pzpdm9g/89333Xat3vttKem/n
474
+ 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
578
+ /189lg+75EoAAA==
579
+ http_version:
580
+ recorded_at: Sun, 08 Feb 2015 22:54:54 GMT
581
+ recorded_with: VCR 2.9.3
metadata ADDED
@@ -0,0 +1,168 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: myfitnesspal_stats
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Hunter Ducharme
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: mechanize
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: highline/import
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.7'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.7'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: webmock
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: vcr
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Access your weight, daily nutrition, and other attributes from myfitnesspal.
112
+ email:
113
+ - hgducharme@gmail.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - ".gitignore"
119
+ - ".rspec"
120
+ - Gemfile
121
+ - LICENSE.txt
122
+ - README.md
123
+ - Rakefile
124
+ - lib/myfitnesspal_stats.rb
125
+ - lib/myfitnesspal_stats/account.rb
126
+ - lib/myfitnesspal_stats/day.rb
127
+ - lib/myfitnesspal_stats/scraper.rb
128
+ - lib/myfitnesspal_stats/version.rb
129
+ - myfitnesspal_stats.gemspec
130
+ - spec/account_spec.rb
131
+ - spec/day_spec.rb
132
+ - spec/myfitnesspal_stats_spec.rb
133
+ - spec/scraper_spec.rb
134
+ - spec/spec_helper.rb
135
+ - spec/support/vcr_setup.rb
136
+ - spec/vcr_cassettes/Scraper/the_initialization_of_a_Scraper/takes_a_username_and_password_argument_successfully.yml
137
+ homepage: ''
138
+ licenses:
139
+ - MIT
140
+ metadata: {}
141
+ post_install_message:
142
+ rdoc_options: []
143
+ require_paths:
144
+ - lib
145
+ required_ruby_version: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ required_rubygems_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ requirements: []
156
+ rubyforge_project:
157
+ rubygems_version: 2.4.5
158
+ signing_key:
159
+ specification_version: 4
160
+ summary: Programatically access your daily nutrition from myfitnesspal.
161
+ test_files:
162
+ - spec/account_spec.rb
163
+ - spec/day_spec.rb
164
+ - spec/myfitnesspal_stats_spec.rb
165
+ - spec/scraper_spec.rb
166
+ - spec/spec_helper.rb
167
+ - spec/support/vcr_setup.rb
168
+ - spec/vcr_cassettes/Scraper/the_initialization_of_a_Scraper/takes_a_username_and_password_argument_successfully.yml