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.
- data/auth/client_credentials.rb +23 -0
- data/client.rb +58 -0
- data/example.rb +16 -0
- 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: []
|