rbfinfeed 0.0.1

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 (4) hide show
  1. data/auth/client_credentials.rb +23 -0
  2. data/client.rb +58 -0
  3. data/example.rb +16 -0
  4. metadata +96 -0
@@ -0,0 +1,23 @@
1
+ #! /usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ class GrantFailed < StandardError
5
+ end
6
+
7
+ module ClientCredentialsMixin
8
+
9
+ def load_client_credentials()
10
+
11
+ code, headers, resp = self.call_grant('/oauth/authorize', {"grant_type" => "client_credentials"})
12
+
13
+ if code != 200
14
+ raise GrantFailed
15
+ end
16
+
17
+ self.token = resp['access_token']
18
+
19
+ return self.token
20
+
21
+ end
22
+
23
+ end
data/client.rb ADDED
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ require 'faraday'
5
+ require 'faraday_middleware'
6
+ require './auth/client_credentials'
7
+
8
+ class AssertionError < RuntimeError
9
+ end
10
+
11
+ class FinFeedClient
12
+
13
+ include ClientCredentialsMixin
14
+
15
+ @@API_ROOT = "http://api.finfeed.io"
16
+ @@HTTP_METHODS = ['head', 'get', 'post']
17
+ @@ACCEPT_HEADER = "application/vnd.finfeed.*;version=0.1"
18
+ @@USER_AGENT = "rbfinfeed 0.1;"
19
+
20
+ def initialize(token=nil, key=nil, secret=nil)
21
+ @token, @key, @secret = token, key, secret
22
+
23
+ if token.nil? || (key.nil? && secret.nil?)
24
+ raise AssertionError
25
+ end
26
+ end
27
+
28
+ def token()
29
+ 'Bearer ' + @token
30
+ end
31
+
32
+ def get(url, headers=nil, body=nil, params=nil, jsonify=true)
33
+
34
+ conn = Faraday.new(:url => @@API_ROOT) do |faraday|
35
+ faraday.request :url_encoded # form-encode POST params
36
+
37
+ if jsonify == true
38
+ faraday.response :json # response defaults to JSON
39
+ else
40
+ faraday.response :logger # log requests to STDOUT
41
+ end
42
+
43
+ faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
44
+ end
45
+
46
+ response = conn.get do |req|
47
+ req.url url, params
48
+ req.headers['Accept'] = @@ACCEPT_HEADER
49
+ req.headers['Authorization'] = self.token
50
+ req.headers['Content-Type'] = 'application/json'
51
+ req.headers['User-Agent'] = @@USER_AGENT
52
+ req.body = body
53
+ req.options.timeout = 1 # open/read timeout in seconds
54
+ req.options.open_timeout = 30 # connection open timeout in seconds
55
+ end
56
+ return response
57
+ end
58
+ end
data/example.rb ADDED
@@ -0,0 +1,16 @@
1
+ require './client'
2
+
3
+ class AssertionError < RuntimeError
4
+ end
5
+
6
+ f = FinFeedClient.new(YOUR_AUTHENTICATED_BEARER_TOKEN,
7
+ YOUR_API_TOKEN,
8
+ YOUR_TOKEN_SECRET)
9
+
10
+ data = f.get('/stocks/')
11
+
12
+ if data.status != 200
13
+ raise AssertionError
14
+ end
15
+
16
+ puts data.body
metadata ADDED
@@ -0,0 +1,96 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rbfinfeed
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - FinFeed
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-03-15 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: faraday
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 0.9.1
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.9.1
30
+ - !ruby/object:Gem::Dependency
31
+ name: faraday_middleware
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 0.9.1
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.9.1
46
+ - !ruby/object:Gem::Dependency
47
+ name: bundler
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 2.1.2
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 2.1.2
62
+ description: Library for interacting with the FinFeed API.
63
+ email: support@finfeed.io
64
+ executables: []
65
+ extensions: []
66
+ extra_rdoc_files: []
67
+ files:
68
+ - client.rb
69
+ - example.rb
70
+ - auth/client_credentials.rb
71
+ homepage: http://finfeed.io/
72
+ licenses:
73
+ - Apache License, Version 2.0
74
+ post_install_message:
75
+ rdoc_options: []
76
+ require_paths:
77
+ - lib
78
+ required_ruby_version: !ruby/object:Gem::Requirement
79
+ none: false
80
+ requirements:
81
+ - - ! '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: 1.3.5
90
+ requirements: []
91
+ rubyforge_project:
92
+ rubygems_version: 1.8.23
93
+ signing_key:
94
+ specification_version: 2
95
+ summary: FinFeed API client library.
96
+ test_files: []