basis-connector 1.0.0

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