radar-app 0.1.0 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2bb47a7769afddee2a76b34f310b50115088c56c
4
- data.tar.gz: a89c699d62227290c943b0166c130ea0e3667494
3
+ metadata.gz: a8077f6b19cc433e1198234acecc5530f2924cad
4
+ data.tar.gz: db68706cf9312353688b89776c8b66ec8431ad02
5
5
  SHA512:
6
- metadata.gz: 128982825a4bbc9a5dcd9153687bcf9c252086dc8be8a25ccb08d7c3364206ce0ecff591342cb11765812be34112bbd09f221b1637d317794c329b9b7b273386
7
- data.tar.gz: a7f6d22d0ae1e8e8cc9182f0616ec2f3bb4f0fe9d0887321b06a3c5383033aaed499f50eeacbf3fe2437759740e6024c37f4034d9207ee551bef49606405ca58
6
+ metadata.gz: 84f92d0b169a92324130d3849ee11ed697c1fc63fc708def3f3d1d1bea4ae2d985d87034a2dfedf1b5e9996e39b8345d9f65573c485e8f3b0943c3981c7cc518
7
+ data.tar.gz: 00d99b8f78970d34a40a0b5dc37ec827fd1dd75f296a311588605e7f5ccc6258315fe1a082ad10c9e8efe13a72e4bac45d5c0f4363a9bcd121f67e2c1d26d269
data/.gitignore CHANGED
@@ -15,4 +15,6 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
- .idea/
18
+ .idea/
19
+ .DS_Store
20
+
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Radar::App
2
2
 
3
3
  [![Build Status](https://travis-ci.org/investtools/radar-app.svg)](https://travis-ci.org/investtools/radar-app)
4
+ [![Code Climate](https://codeclimate.com/github/investtools/radar-app.png)](https://codeclimate.com/github/investtools/radar-app)
4
5
 
5
6
  Radar::App é um framework para criação de apps para o Radar.
6
7
 
data/lib/radar-app.rb CHANGED
@@ -1 +1,2 @@
1
1
  require 'radar/app'
2
+ require 'thrift/builder'
data/lib/radar/app.rb CHANGED
@@ -42,7 +42,7 @@ module Radar
42
42
  end
43
43
 
44
44
  def self.host
45
- ENV['DATA_SERVER_HOST'] || '127.0.0.1'
45
+ ENV['DATA_SERVER_HOST'] || 'radar.data.1'
46
46
  end
47
47
  end
48
48
  end
@@ -1,5 +1,5 @@
1
1
  module Radar
2
2
  module App
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
5
5
  end
@@ -0,0 +1,36 @@
1
+ module Thrift
2
+ class Builder
3
+ def initialize(clazz)
4
+ @class = clazz
5
+ end
6
+
7
+ def build(attributes)
8
+ @class.new.tap do |obj|
9
+ attributes.each do |attribute, value|
10
+ obj.send "#{attribute}=", build_attr(@class::FIELDS[obj.name_to_id(attribute.to_s)], value)
11
+ end
12
+ end
13
+ end
14
+
15
+ protected
16
+
17
+ def build_attr(field, value)
18
+ case field[:type]
19
+ when Thrift::Types::STRUCT
20
+ Builder.new(field[:class]).build(value)
21
+ when Thrift::Types::LIST
22
+ value.map { |child| build_attr(field[:element], child) }
23
+ when Thrift::Types::SET
24
+ value.map { |child| build_attr(field[:element], child) }.to_set
25
+ when Thrift::Types::I32
26
+ if field.include?(:enum_class)
27
+ field[:enum_class].const_get(value.upcase)
28
+ else
29
+ value
30
+ end
31
+ else
32
+ value
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,19 @@
1
+ enum Gender {
2
+ MALE, FEMALE
3
+ }
4
+
5
+ struct PhoneNumber {
6
+ 1: string contry_code
7
+ 2: string area_code
8
+ 3: string number
9
+ }
10
+
11
+ struct Person {
12
+ 1: string name
13
+ 2: PhoneNumber phone
14
+ 3: list<Person> children
15
+ 4: list<string> notes
16
+ 5: Gender gender
17
+ 6: i32 age
18
+ 7: set<i32> favorite_numbers
19
+ }
@@ -0,0 +1,9 @@
1
+ #
2
+ # Autogenerated by Thrift Compiler (0.9.3)
3
+ #
4
+ # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
+ #
6
+
7
+ require 'thrift'
8
+ require 'example_types'
9
+
@@ -0,0 +1,66 @@
1
+ #
2
+ # Autogenerated by Thrift Compiler (0.9.3)
3
+ #
4
+ # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
+ #
6
+
7
+ require 'thrift'
8
+
9
+ module Gender
10
+ MALE = 0
11
+ FEMALE = 1
12
+ VALUE_MAP = {0 => "MALE", 1 => "FEMALE"}
13
+ VALID_VALUES = Set.new([MALE, FEMALE]).freeze
14
+ end
15
+
16
+ class PhoneNumber
17
+ include ::Thrift::Struct, ::Thrift::Struct_Union
18
+ CONTRY_CODE = 1
19
+ AREA_CODE = 2
20
+ NUMBER = 3
21
+
22
+ FIELDS = {
23
+ CONTRY_CODE => {:type => ::Thrift::Types::STRING, :name => 'contry_code'},
24
+ AREA_CODE => {:type => ::Thrift::Types::STRING, :name => 'area_code'},
25
+ NUMBER => {:type => ::Thrift::Types::STRING, :name => 'number'}
26
+ }
27
+
28
+ def struct_fields; FIELDS; end
29
+
30
+ def validate
31
+ end
32
+
33
+ ::Thrift::Struct.generate_accessors self
34
+ end
35
+
36
+ class Person
37
+ include ::Thrift::Struct, ::Thrift::Struct_Union
38
+ NAME = 1
39
+ PHONE = 2
40
+ CHILDREN = 3
41
+ NOTES = 4
42
+ GENDER = 5
43
+ AGE = 6
44
+ FAVORITE_NUMBERS = 7
45
+
46
+ FIELDS = {
47
+ NAME => {:type => ::Thrift::Types::STRING, :name => 'name'},
48
+ PHONE => {:type => ::Thrift::Types::STRUCT, :name => 'phone', :class => ::PhoneNumber},
49
+ CHILDREN => {:type => ::Thrift::Types::LIST, :name => 'children', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Person}},
50
+ NOTES => {:type => ::Thrift::Types::LIST, :name => 'notes', :element => {:type => ::Thrift::Types::STRING}},
51
+ GENDER => {:type => ::Thrift::Types::I32, :name => 'gender', :enum_class => ::Gender},
52
+ AGE => {:type => ::Thrift::Types::I32, :name => 'age'},
53
+ FAVORITE_NUMBERS => {:type => ::Thrift::Types::SET, :name => 'favorite_numbers', :element => {:type => ::Thrift::Types::I32}}
54
+ }
55
+
56
+ def struct_fields; FIELDS; end
57
+
58
+ def validate
59
+ unless @gender.nil? || ::Gender::VALID_VALUES.include?(@gender)
60
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field gender!')
61
+ end
62
+ end
63
+
64
+ ::Thrift::Struct.generate_accessors self
65
+ end
66
+
@@ -0,0 +1,36 @@
1
+ $:.unshift File.expand_path('../../../gen-rb', __FILE__)
2
+
3
+ require 'thrift/builder'
4
+ require 'example_types'
5
+
6
+ describe Thrift::Builder do
7
+ describe '#build' do
8
+ it 'builds a object of type defined by constructor' do
9
+ expect(Thrift::Builder.new(Person).build({})).to be_kind_of(Person)
10
+ end
11
+ it 'sets basic attributes' do
12
+ expect(Thrift::Builder.new(Person).build(name: 'Andre').name).to eq 'Andre'
13
+ end
14
+ it 'sets nested objects' do
15
+ expect(Thrift::Builder.new(Person).build(phone: {}).phone).to be_kind_of(PhoneNumber)
16
+ end
17
+ it 'sets nested objects attributes' do
18
+ expect(Thrift::Builder.new(Person).build(phone: {contry_code: '55'}).phone.contry_code).to eq '55'
19
+ end
20
+ it 'sets nested objects inside arrays' do
21
+ expect(Thrift::Builder.new(Person).build(children: [ { name: 'Helena' } ]).children.first.name).to eq 'Helena'
22
+ end
23
+ it 'sets basic attributes inside arrays' do
24
+ expect(Thrift::Builder.new(Person).build(notes: [ 'test' ]).notes).to eq [ 'test' ]
25
+ end
26
+ it 'sets enum attributes' do
27
+ expect(Thrift::Builder.new(Person).build(gender: :male).gender).to eq Gender::MALE
28
+ end
29
+ it 'sets i32 attributes' do
30
+ expect(Thrift::Builder.new(Person).build(age: 34).age).to eq 34
31
+ end
32
+ it 'sets set attributes' do
33
+ expect(Thrift::Builder.new(Person).build(favorite_numbers: [7, 10]).favorite_numbers).to eq Set.new([7, 10])
34
+ end
35
+ end
36
+ end
@@ -3,25 +3,33 @@ require 'radar-api'
3
3
  class <%= @class_name %>
4
4
 
5
5
  def config
6
- Radar::API::AnalyzerConfig.new(
7
- result_type: Radar::API::ResultType::TABLE,
8
- accepted_events: [Radar::API::Event::EACH_DAY, Radar::API::Event::EACH_MONTH, Radar::API::Event::FINISH].to_set
6
+ Thrift::Builder.new(Radar::API::AnalyzerConfig).build(
7
+ id: '<%= @class_name %>',
8
+ name: '<%= @class_name %>',
9
+ result_type: :table,
10
+ accepted_events: [:each_day, :each_month, :finish]
9
11
  )
10
12
  end
11
13
 
12
14
  def on_each_day(portfolio)
13
15
  end
14
16
 
17
+ def on_month_day(portfolio)
18
+ end
19
+
15
20
  def on_finish(portfolio)
16
21
  end
17
22
 
18
- def dump()
23
+ def dump
19
24
  end
20
25
 
21
26
  def resume(data)
22
27
  end
23
28
 
24
- def result()
29
+ def example_result
30
+ end
31
+
32
+ def result
25
33
  end
26
34
 
27
35
  end
@@ -23,3 +23,4 @@ end
23
23
 
24
24
  Bundler.require(:default, Radar::App.env)
25
25
 
26
+ Thrift.type_checking = true unless Radar::App.env.production?
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: radar-app
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leonardo Mendonca
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-07-22 00:00:00.000000000 Z
12
+ date: 2016-08-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -160,6 +160,7 @@ extensions: []
160
160
  extra_rdoc_files: []
161
161
  files:
162
162
  - .gitignore
163
+ - .rspec
163
164
  - Gemfile
164
165
  - Guardfile
165
166
  - LICENSE.txt
@@ -182,8 +183,13 @@ files:
182
183
  - lib/radar/app/tasks/new.rb
183
184
  - lib/radar/app/tasks/server.rb
184
185
  - lib/radar/app/version.rb
186
+ - lib/thrift/builder.rb
185
187
  - radar-app.gemspec
188
+ - spec/example.thrift
189
+ - spec/gen-rb/example_constants.rb
190
+ - spec/gen-rb/example_types.rb
186
191
  - spec/lib/radar/app/tasks/generate_spec.rb
192
+ - spec/lib/thrift/builder_spec.rb
187
193
  - templates/.webhook
188
194
  - templates/Gemfile
189
195
  - templates/Procfile
@@ -210,9 +216,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
210
216
  version: '0'
211
217
  requirements: []
212
218
  rubyforge_project:
213
- rubygems_version: 2.1.11
219
+ rubygems_version: 2.2.2
214
220
  signing_key:
215
221
  specification_version: 4
216
222
  summary: radar-app generator
217
223
  test_files:
224
+ - spec/example.thrift
225
+ - spec/gen-rb/example_constants.rb
226
+ - spec/gen-rb/example_types.rb
218
227
  - spec/lib/radar/app/tasks/generate_spec.rb
228
+ - spec/lib/thrift/builder_spec.rb
229
+ has_rdoc: