twenty3andme 0.0.1 → 0.0.2

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
@@ -11,7 +11,7 @@ module Twenty3AndMe
11
11
  handler.handle(client.token, client.refresh_token)
12
12
 
13
13
  status 302
14
- header 'Location', ENV['AFTER_REDIRECT_URI']
14
+ header 'Location', ENV['AFTER_REDIRECT_URI'] + "?token=#{client.token}"
15
15
  end
16
16
  end
17
17
 
@@ -1,4 +1,7 @@
1
1
  module Twenty3AndMe
2
+ class TokenRequestError < StandardError ; end
3
+ class APIRequestError < StandardError ; end
4
+
2
5
  class Client
3
6
  include HTTParty
4
7
  base_uri 'api.23andme.com'
@@ -10,13 +13,16 @@ module Twenty3AndMe
10
13
  def get(path)
11
14
  options = { :headers => {"Authorization" => "Bearer #{@token}"} }
12
15
  fullpath = URI.escape(VERSION + path)
13
- self.class.get(fullpath, options).parsed_response
16
+ resp = self.class.get(fullpath, options).parsed_response
17
+ raise APIRequestError, resp['error_description'] if resp['error']
18
+ resp
14
19
  end
15
20
 
16
21
  def request_token(client_id, client_secret, code, redirect_uri, scope)
17
22
  scope_uri = Array(scope).join(" ")
18
23
  req_body = {:client_id => client_id, :client_secret => client_secret, :grant_type => 'authorization_code', :code => code, :redirect_uri => redirect_uri, :scope => scope_uri}
19
24
  resp = self.class.post("https://api.23andme.com:443/token", :body => req_body)
25
+ raise TokenRequestError, resp['error_description'] if resp['error']
20
26
 
21
27
  @token = resp['access_token']
22
28
  @refresh_token = resp['refresh_token']
@@ -6,13 +6,15 @@ describe Twenty3AndMe::CallbackListener do
6
6
  def app
7
7
  Twenty3AndMe::CallbackListener
8
8
  end
9
+
10
+ before do
11
+ end
12
+
9
13
 
10
- describe Twenty3AndMe::CallbackListener do
11
- describe "GET /?code=adc996063679f1a400aa0e13c54094dc" do
12
- it "returns the provided code from 23andme" do
13
- get "/?code=adc996063679f1a400aa0e13c54094dc"
14
- last_response.status.should == 200
15
- end
14
+ describe "GET /?code=adc996063679f1a400aa0e13c54094dc" do
15
+ it "returns the provided code from 23andme" do
16
+ get "/?code=adc996063679f1a400aa0e13c54094dc"
17
+ last_response.status.should == 200
16
18
  end
17
19
  end
18
20
  end
@@ -3,11 +3,38 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
3
  describe "Twenty3andme" do
4
4
 
5
5
  context "API Client" do
6
- before do
6
+
7
+ before :all do
8
+ code = "fillmein"
9
+ @client = Twenty3AndMe::Client.new
10
+ @client.request_token(ENV['CLIENT_ID'], ENV['CLIENT_SECRET'], code, ENV['REDIRECT_URI'], ENV['SCOPE'].split(','))
11
+ end
12
+
13
+ it "has a token recieved by 23andme" do
14
+ @client.token.should_not be_nil
15
+ end
16
+
17
+ it "makes the /user request " do
18
+ @client.user
19
+ end
20
+
21
+ it "makes the /names request " do
22
+ @client.names
7
23
  end
8
24
 
9
- pending "test the client " do
25
+ it "makes the /haplogroups request " do
26
+ @client.haplogroups
10
27
  end
28
+
29
+ it "makes the /relatives request " do
30
+ @client.relatives
31
+ end
32
+
33
+ it "requests a genotype" do
34
+ @client.genotype('rs3094315')
35
+ end
36
+
37
+
11
38
  end
12
39
 
13
40
  end
data/twenty3andme.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "twenty3andme"
8
- s.version = "0.0.1"
8
+ s.version = "0.0.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ian Morgan"]
12
- s.date = "2013-01-06"
12
+ s.date = "2013-01-09"
13
13
  s.description = "Ruby API client and Rails engine for creating applications that integrate with data from the personal genetic testing service 23AndMe"
14
14
  s.email = "ian@ruby-code.com"
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twenty3andme
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
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-01-06 00:00:00.000000000 Z
12
+ date: 2013-01-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: grape
@@ -182,7 +182,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
182
182
  version: '0'
183
183
  segments:
184
184
  - 0
185
- hash: -3107833515902135248
185
+ hash: 2400844370785792384
186
186
  required_rubygems_version: !ruby/object:Gem::Requirement
187
187
  none: false
188
188
  requirements: