tradier 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 346ff807647b7ce6473a532a3b07b2f8cd9a93aa
4
+ data.tar.gz: 9d7965d264e47a271fcc535ae3ab21637a9b2f4d
5
+ SHA512:
6
+ metadata.gz: 97793ad958939977c55af6a86bccd9c4de3234d80c0cfc3d190ca942d43489e9fec0d68a69bcb046406fbe0ac6d3c337bab583bff3cabb39c68f4092ca8e18e9
7
+ data.tar.gz: 70d3317eb678a39ecac677a129a34398969e75789691b9f160f17c33a71df9a2a7f1e48c65a05a861ae452b4e7a84ac5c31ecbc05313a06a5f6e07a1ad488c1b
@@ -2,7 +2,7 @@ require 'tradier/base'
2
2
 
3
3
  module Tradier
4
4
  class Account < Tradier::Base
5
- attr_reader :account_number, :type
5
+ attr_reader :account_number, :type, :classification
6
6
 
7
7
  def margin?
8
8
  type.downcase == 'margin'
@@ -26,5 +26,29 @@ module Tradier
26
26
  def history
27
27
  end
28
28
 
29
+ def individual_account?
30
+ classification.downcase == 'individual'
31
+ end
32
+
33
+ def joint_account?
34
+ classification.downcase == 'joint'
35
+ end
36
+
37
+ def traditional_ira?
38
+ classification.downcase == 'traditional_ira'
39
+ end
40
+
41
+ def roth_ira?
42
+ classification.downcase == 'roth_ira'
43
+ end
44
+
45
+ def rollover_ira?
46
+ classification.downcase == 'rollover_ira'
47
+ end
48
+
49
+ def ira?
50
+ traditional_ira? || roth_ira? || rollover_ira?
51
+ end
52
+
29
53
  end
30
54
  end
@@ -98,6 +98,16 @@ module Tradier
98
98
  object_from_response(Tradier::API::Utils::History, :get, '/markets/history', options).body
99
99
  end
100
100
 
101
+ # @see http://developer.tradier.com.dev/documentation/markets/create-events-session
102
+ # @rate_limited Yes
103
+ # @authentication Requires user context
104
+ # Create a streaming session
105
+ # @return [Tradier::EventSession] An event session.
106
+ # @raise [Tradier::Error::Unauthorized] Error raised when supplied user credentials are not valid.
107
+ def markets_session(options={})
108
+ object_from_response(Tradier::EventSession, :post, '/markets/events/session', options)
109
+ end
110
+
101
111
  private
102
112
 
103
113
  def normalized_symbols(symbols)
@@ -11,6 +11,7 @@ require 'tradier/quote'
11
11
  require 'tradier/timesales'
12
12
  require 'tradier/watchlist'
13
13
  require 'tradier/event'
14
+ require 'tradier/event_session'
14
15
 
15
16
  require 'tradier/api/utils/account'
16
17
  require 'tradier/api/utils/balance'
@@ -0,0 +1,12 @@
1
+ require 'tradier/base'
2
+
3
+ module Tradier
4
+ class EventSession < Tradier::Base
5
+
6
+ attr_reader :sessionid, :url
7
+
8
+ def self.from_response(body={})
9
+ new(body[:stream] || body)
10
+ end
11
+ end
12
+ end
@@ -1,3 +1,3 @@
1
1
  module Tradier
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -6,7 +6,7 @@ module Tradier
6
6
  attr_reader :id, :name
7
7
 
8
8
  def self.from_response(body={})
9
- new(body[:watchlist])
9
+ new(body[:watchlist] || body)
10
10
  end
11
11
 
12
12
  def items
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "stream": {
3
3
  "sessionid": "316908ae-c98d-4cc4-bb3b-32a3dc58aca0",
4
- "url": "https://stream.tradier.com/users/events/316908ae-c98d-4cc4-bb3b-32a3dc58aca0"
4
+ "url": "https://stream.tradier.com/v1/markets/events/316908ae-c98d-4cc4-bb3b-32a3dc58aca0"
5
5
  }
6
6
  }
@@ -73,4 +73,49 @@ describe Tradier::Account do
73
73
  pending
74
74
  end
75
75
  end
76
+
77
+ describe '#individual_account?' do
78
+ subject { described_class.new(:classification => 'individual') }
79
+ it 'returns true when an individual account' do
80
+ expect(subject.individual_account?).to be_true
81
+ end
82
+ end
83
+
84
+ describe '#joint_account?' do
85
+ subject { described_class.new(:classification => 'joint') }
86
+ it 'returns true when an joint account' do
87
+ expect(subject.joint_account?).to be_true
88
+ end
89
+ end
90
+
91
+ describe '#traditional_ira?' do
92
+ subject { described_class.new(:classification => 'traditional_ira') }
93
+ it 'returns true when a traditional_ira account' do
94
+ expect(subject.traditional_ira?).to be_true
95
+ end
96
+ end
97
+
98
+ describe '#rollover_ira?' do
99
+ subject { described_class.new(:classification => 'rollover_ira') }
100
+ it 'returns true when a rollover_ira account' do
101
+ expect(subject.rollover_ira?).to be_true
102
+ end
103
+ end
104
+
105
+ describe '#roth_ira?' do
106
+ subject { described_class.new(:classification => 'roth_ira') }
107
+ it 'returns true when a roth_ira account' do
108
+ expect(subject.roth_ira?).to be_true
109
+ end
110
+ end
111
+
112
+ describe '#ira?' do
113
+ %w(traditional_ira roth_ira rollover_ira).each do |ira_type|
114
+ subject { described_class.new(:classification => ira_type) }
115
+ it "returns true when a #{ira_type} account" do
116
+ expect(subject.ira?).to be_true
117
+ end
118
+ end
119
+ end
120
+
76
121
  end
@@ -216,4 +216,21 @@ describe Tradier::API::Markets do
216
216
  expect(history.first).to be_a Tradier::History
217
217
  end
218
218
  end
219
+
220
+ describe '#markets_session' do
221
+ before do
222
+ stub_post("/v1/markets/events/session").
223
+ to_return(:body => fixture("session.json"), :headers => {:content_type => "application/json; charset=utf-8"})
224
+ end
225
+
226
+ it "requests the correct resource" do
227
+ @client.markets_session
228
+ expect(a_post("/v1/markets/events/session")).to have_been_made
229
+ end
230
+
231
+ it "returns an array of Tradier::EventSession objects" do
232
+ session = @client.markets_session
233
+ expect(session).to be_a Tradier::EventSession
234
+ end
235
+ end
219
236
  end
data/tradier.gemspec CHANGED
@@ -15,8 +15,8 @@ Gem::Specification.new do |gem|
15
15
 
16
16
  gem.license = 'MIT'
17
17
 
18
- gem.add_dependency 'faraday', ['~> 0.8', '< 0.10']
19
- gem.add_dependency 'faraday_middleware', ['~> 0.8', '< 0.10']
18
+ gem.add_dependency 'faraday', '~> 0.8'
19
+ gem.add_dependency 'faraday_middleware'
20
20
  gem.add_dependency 'celluloid'
21
21
  gem.add_development_dependency 'bundler', '~> 1'
22
22
 
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tradier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
5
- prerelease:
4
+ version: 0.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Steve Agalloco
@@ -10,72 +9,53 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-11-08 00:00:00.000000000 Z
12
+ date: 2014-01-17 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: faraday
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
18
  - - ~>
21
19
  - !ruby/object:Gem::Version
22
20
  version: '0.8'
23
- - - <
24
- - !ruby/object:Gem::Version
25
- version: '0.10'
26
21
  type: :runtime
27
22
  prerelease: false
28
23
  version_requirements: !ruby/object:Gem::Requirement
29
- none: false
30
24
  requirements:
31
25
  - - ~>
32
26
  - !ruby/object:Gem::Version
33
27
  version: '0.8'
34
- - - <
35
- - !ruby/object:Gem::Version
36
- version: '0.10'
37
28
  - !ruby/object:Gem::Dependency
38
29
  name: faraday_middleware
39
30
  requirement: !ruby/object:Gem::Requirement
40
- none: false
41
31
  requirements:
42
- - - ~>
43
- - !ruby/object:Gem::Version
44
- version: '0.8'
45
- - - <
32
+ - - '>='
46
33
  - !ruby/object:Gem::Version
47
- version: '0.10'
34
+ version: '0'
48
35
  type: :runtime
49
36
  prerelease: false
50
37
  version_requirements: !ruby/object:Gem::Requirement
51
- none: false
52
38
  requirements:
53
- - - ~>
39
+ - - '>='
54
40
  - !ruby/object:Gem::Version
55
- version: '0.8'
56
- - - <
57
- - !ruby/object:Gem::Version
58
- version: '0.10'
41
+ version: '0'
59
42
  - !ruby/object:Gem::Dependency
60
43
  name: celluloid
61
44
  requirement: !ruby/object:Gem::Requirement
62
- none: false
63
45
  requirements:
64
- - - ! '>='
46
+ - - '>='
65
47
  - !ruby/object:Gem::Version
66
48
  version: '0'
67
49
  type: :runtime
68
50
  prerelease: false
69
51
  version_requirements: !ruby/object:Gem::Requirement
70
- none: false
71
52
  requirements:
72
- - - ! '>='
53
+ - - '>='
73
54
  - !ruby/object:Gem::Version
74
55
  version: '0'
75
56
  - !ruby/object:Gem::Dependency
76
57
  name: bundler
77
58
  requirement: !ruby/object:Gem::Requirement
78
- none: false
79
59
  requirements:
80
60
  - - ~>
81
61
  - !ruby/object:Gem::Version
@@ -83,7 +63,6 @@ dependencies:
83
63
  type: :development
84
64
  prerelease: false
85
65
  version_requirements: !ruby/object:Gem::Requirement
86
- none: false
87
66
  requirements:
88
67
  - - ~>
89
68
  - !ruby/object:Gem::Version
@@ -147,6 +126,7 @@ files:
147
126
  - lib/tradier/error/unprocessable_entity.rb
148
127
  - lib/tradier/error.rb
149
128
  - lib/tradier/event.rb
129
+ - lib/tradier/event_session.rb
150
130
  - lib/tradier/history.rb
151
131
  - lib/tradier/option_quote.rb
152
132
  - lib/tradier/order.rb
@@ -217,33 +197,26 @@ files:
217
197
  homepage: https://github.com/tradier/tradier.rb
218
198
  licenses:
219
199
  - MIT
200
+ metadata: {}
220
201
  post_install_message:
221
202
  rdoc_options: []
222
203
  require_paths:
223
204
  - lib
224
205
  required_ruby_version: !ruby/object:Gem::Requirement
225
- none: false
226
206
  requirements:
227
- - - ! '>='
207
+ - - '>='
228
208
  - !ruby/object:Gem::Version
229
209
  version: '0'
230
- segments:
231
- - 0
232
- hash: 1473021614660637289
233
210
  required_rubygems_version: !ruby/object:Gem::Requirement
234
- none: false
235
211
  requirements:
236
- - - ! '>='
212
+ - - '>='
237
213
  - !ruby/object:Gem::Version
238
214
  version: '0'
239
- segments:
240
- - 0
241
- hash: 1473021614660637289
242
215
  requirements: []
243
216
  rubyforge_project:
244
- rubygems_version: 1.8.23
217
+ rubygems_version: 2.0.14
245
218
  signing_key:
246
- specification_version: 3
219
+ specification_version: 4
247
220
  summary: Rubygem for interacting with the Tradier API.
248
221
  test_files:
249
222
  - spec/fixtures/account_balances.json