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.
- checksums.yaml +7 -0
- data/lib/basis-connector.rb +58 -0
- metadata +44 -0
checksums.yaml
ADDED
@@ -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: []
|