basis-connector 1.0.0

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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/basis-connector.rb +58 -0
  3. metadata +44 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: eb6644f320d4e950b2c77d13e93f81b6e9be67b8
4
+ data.tar.gz: 9d2df1362b5d6e81075bee17e67dc42a5f44de38
5
+ SHA512:
6
+ metadata.gz: e23f90bebb0b7737539655938fc431c102dd03213d4c20e5b054aca98fb098ecf53d83b305464f6259121030913e5ab5e2bfe6303b2311c2f8a5a67b88588169
7
+ data.tar.gz: 0e47c6db96f4e537b73d030d5452d605a4ae995f47e042760f8339429ae13d0f794085aaf74fe4ee5e56e2d982e2be3d1a02cff6923b3a9c4daf75a100615207
@@ -0,0 +1,58 @@
1
+ require 'uri'
2
+ require 'net/https'
3
+ require 'json'
4
+
5
+ class Basis
6
+ def self.authorize(email, password)
7
+ u = URI.parse('https://app.mybasis.com/login')
8
+ http = Net::HTTP.new(u.host, u.port)
9
+ http.use_ssl = true
10
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
11
+ request = Net::HTTP::Post.new(u.request_uri)
12
+ request.set_form_data({'next' => 'https://app.mybasis.com',
13
+ 'submit' => 'Login',
14
+ 'username' => email,
15
+ 'password' => password})
16
+ response = http.request(request)
17
+ if cookie = response['set-cookie']
18
+ tok_match = cookie.match(/access_token=([0-9a-f]+);/)
19
+ return Basis.new(tok_match[1])
20
+ else
21
+ return nil
22
+ end
23
+ end
24
+
25
+ def get_metrics(date)
26
+ url = "https://app.mybasis.com/api/v1/metricsday/me?day=#{date}&padding=0&heartrate=true&steps=true&calories=true&gsr=true&skin_temp=true&air_temp=true"
27
+ data = https_fetch(url, @token)
28
+ return JSON.parse(data)
29
+ end
30
+
31
+ def get_activities
32
+ url = "https://app.mybasis.com/api/v2/users/me/days/#{date}/activities?type=run,walk,bike&expand=activities"
33
+ data = https_fetch(url, @token)
34
+ return JSON.parse(data)
35
+ end
36
+
37
+ def get_sleep
38
+ url = "https://app.mybasis.com/api/v2/users/me/days/#{date}/activities?type=sleep&expand=activities.stages,activities.events"
39
+ data = https_fetch(url, @token)
40
+ return JSON.parse(data)
41
+ end
42
+
43
+ private
44
+
45
+ def initialize(token)
46
+ @token = token
47
+ end
48
+
49
+ def https_fetch(url, token)
50
+ u = URI.parse(url)
51
+ http = Net::HTTP.new(u.host, u.port)
52
+ http.use_ssl = true
53
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
54
+ request = Net::HTTP::Get.new(u.request_uri)
55
+ request.add_field('Cookie', "access_token=#{token}; scope=login")
56
+ http.request(request).body
57
+ end
58
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: basis-connector
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Helal Ismail
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-03-22 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: ''
14
+ email: helal.hamed@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/basis-connector.rb
20
+ homepage: http://helal-ismail.github.io/basis-connector/
21
+ licenses:
22
+ - GNU GENERAL PUBLIC LICENSE
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.4.5
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: Http Client for MyBasis.com fitness trackers
44
+ test_files: []