cloudfactory 0.1.14 → 0.1.15
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/cf.gemspec +1 -0
- data/lib/cf/cli/line.rb +22 -11
- data/lib/cf/cli/line_yaml_validator.rb +68 -68
- data/lib/cf/cli/production.rb +86 -50
- data/lib/cf/cli.rb +5 -1
- data/lib/cf/client.rb +1 -1
- data/lib/cf/line.rb +46 -15
- data/lib/cf/run.rb +42 -16
- data/lib/cf/station.rb +33 -13
- data/lib/cf/version.rb +1 -1
- data/spec/concept_tagging_robot_spec.rb +4 -4
- data/spec/content_scraping_robot_spec.rb +2 -2
- data/spec/entity_extraction_robot_spec.rb +8 -8
- data/spec/google_translate_robot_spec.rb +2 -2
- data/spec/image_processing_robot_spec.rb +2 -2
- data/spec/keyword_matching_and_text_extraction_robot_spec.rb +4 -4
- data/spec/line_spec.rb +27 -3
- data/spec/mailer_robot_spec.rb +4 -4
- data/spec/media_converter_robot_spec.rb +2 -2
- data/spec/media_splitting_robot_spec.rb +4 -4
- data/spec/run_spec.rb +16 -14
- data/spec/sentiment_robot_spec.rb +4 -4
- data/spec/station_spec.rb +37 -2
- data/spec/term_extraction_robot_spec.rb +4 -4
- data/spec/text_appending_robot_spec.rb +4 -4
- metadata +57 -46
data/cf.gemspec
CHANGED
data/lib/cf/cli/line.rb
CHANGED
@@ -75,15 +75,24 @@ module Cf # :nodoc: all
|
|
75
75
|
CF::Line.destroy(line_title, :forced => true)
|
76
76
|
say("The line #{line_title} deleted forcefully!", :yellow)
|
77
77
|
else
|
78
|
-
|
79
|
-
#
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
78
|
+
|
79
|
+
# Check whether this line has existing runs or not
|
80
|
+
runs = CF::Run.all(line_title)
|
81
|
+
if runs.try(:error).blank?
|
82
|
+
say("!!! Warning !!!\nThe following are the existing production runs based on this line.", :cyan)
|
83
|
+
existing_runs = Cf::Production.new
|
84
|
+
existing_runs.options = {"line" => line_title}
|
85
|
+
existing_runs.list
|
86
|
+
delete_forcefully = agree("Do you still want to delete this line? [y/n] ")
|
87
|
+
if delete_forcefully
|
88
|
+
CF::Line.destroy(line_title, :forced => true)
|
89
|
+
say("The line #{line_title} deleted successfully!", :yellow)
|
90
|
+
else
|
91
|
+
say("Line deletion aborted!", :cyan)
|
92
|
+
end
|
85
93
|
else
|
86
|
-
|
94
|
+
CF::Line.destroy(line_title)
|
95
|
+
say("The line #{line_title} deleted successfully!", :yellow)
|
87
96
|
end
|
88
97
|
end
|
89
98
|
else
|
@@ -132,6 +141,7 @@ module Cf # :nodoc: all
|
|
132
141
|
line_title = line_dump['title'].parameterize
|
133
142
|
line_description = line_dump['description']
|
134
143
|
line_department = line_dump['department']
|
144
|
+
line_public = line_dump['public']
|
135
145
|
|
136
146
|
line = CF::Line.info(line_title)
|
137
147
|
if line.error.blank? && options.force?
|
@@ -146,7 +156,7 @@ module Cf # :nodoc: all
|
|
146
156
|
say("Line creation aborted!!", :yellow) and exit(1)
|
147
157
|
end
|
148
158
|
end
|
149
|
-
line = CF::Line.new(line_title, line_department, :description => line_description)
|
159
|
+
line = CF::Line.new(line_title, line_department, {:description => line_description, :public => line_public})
|
150
160
|
say "Creating new assembly line: #{line.title}", :green
|
151
161
|
say("Error: #{line.errors}", :red) and exit(1) if line.errors.present?
|
152
162
|
|
@@ -173,12 +183,13 @@ module Cf # :nodoc: all
|
|
173
183
|
type = station_file['station']['station_type']
|
174
184
|
index = station_file['station']['station_index']
|
175
185
|
input_formats_for_station = station_file['station']['input_formats']
|
186
|
+
batch_size = station_file['station']['batch_size']
|
176
187
|
if type == "tournament"
|
177
188
|
jury_worker = station_file['station']['jury_worker']
|
178
189
|
auto_judge = station_file['station']['auto_judge']
|
179
|
-
station_params = {:line => line, :type => type, :jury_worker => jury_worker, :auto_judge => auto_judge, :input_formats => input_formats_for_station}
|
190
|
+
station_params = {:line => line, :type => type, :jury_worker => jury_worker, :auto_judge => auto_judge, :input_formats => input_formats_for_station, :batch_size => batch_size}
|
180
191
|
else
|
181
|
-
station_params = {:line => line, :type => type, :input_formats => input_formats_for_station}
|
192
|
+
station_params = {:line => line, :type => type, :input_formats => input_formats_for_station, :batch_size => batch_size}
|
182
193
|
end
|
183
194
|
station = CF::Station.create(station_params) do |s|
|
184
195
|
say "Adding Station #{index}: #{s.type}", :green
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Cf
|
2
2
|
class LineYamlValidator
|
3
|
-
|
3
|
+
|
4
4
|
def self.validate(yaml_path)
|
5
5
|
line_dump = YAML::load(File.read(yaml_path))
|
6
6
|
errors = []
|
@@ -91,83 +91,85 @@ module Cf
|
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
94
|
+
if station_type != "improve"
|
95
|
+
# Checking Stat_badge
|
96
|
+
stat_badge = station['station']['worker']['stat_badge']
|
97
|
+
if !stat_badge.nil?
|
98
|
+
errors << "Stat badge setting is invalid in Block station #{i+1}!" if stat_badge.class != Hash
|
99
|
+
end
|
99
100
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
101
|
+
# Checking skill_badge
|
102
|
+
skill_badges = station['station']['worker']['skill_badges']
|
103
|
+
if !skill_badges.nil?
|
104
|
+
errors << "Skill badge settings is invalid in Block station #{i+1}!" if skill_badges.class != Array
|
105
|
+
skill_badges.each_with_index do |badge, badge_index|
|
106
|
+
badge_title = badge['title']
|
107
|
+
badge_description = badge['description']
|
108
|
+
max_badges = badge['max_badges']
|
109
|
+
badge_test = badge['test']
|
110
|
+
test_input = badge_test['input'] if badge_test.class == Hash
|
111
|
+
expected_output = badge_test['expected_output'] if badge_test.class == Hash
|
112
|
+
errors << "Skill badge title is Missing in Block #{badge_index+1}!" if badge_title.nil?
|
113
|
+
errors << "Skill badge Description is Missing in Block #{badge_index+1}!" if badge_description.nil?
|
114
|
+
errors << "Skill badge max_badges must be greater than 1000 in Block #{badge_index+1}!" if max_badges < 1000 && !max_badges.nil?
|
115
|
+
errors << "Skill badge Test is Missing in Block #{badge_index+1}!" if badge_test.nil?
|
116
|
+
errors << "Skill badge Test is Invalid (must be Hash) in Block #{badge_index+1}!" if badge_test.class != Hash && !badge_test.nil?
|
117
|
+
errors << "Skill badge Test input is Missing in Block #{badge_index+1}!" if test_input.nil? && !badge_test.nil?
|
118
|
+
errors << "Skill badge Test input is Invalid (must be Hash) in Block #{badge_index+1}!" if test_input.class != Hash && !test_input.nil? && !badge_test.nil?
|
119
|
+
errors << "Skill badge Test expected_output is Missing in Block #{badge_index+1}!" if expected_output.nil? && !badge_test.nil?
|
120
|
+
errors << "Skill badge Test expected_output is Invalid (must be an array) in Block #{badge_index+1}!" if expected_output.class != Array && !expected_output.nil? && !badge_test.nil?
|
121
|
+
end
|
120
122
|
end
|
121
|
-
end
|
122
123
|
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
124
|
+
# Checking TaskForm
|
125
|
+
if worker_type == "human"
|
126
|
+
task_form = station['station']['task_form']
|
127
|
+
if task_form.nil?
|
128
|
+
custom_task_form = station['station']['custom_task_form']
|
129
|
+
if custom_task_form.nil?
|
130
|
+
errors << "Form is missing in Block station #{i+1}!"
|
131
|
+
elsif custom_task_form.class == Hash
|
132
|
+
form_title = custom_task_form['form_title']
|
133
|
+
errors << "Form Title is missing in Block station #{i+1}!" if form_title.nil?
|
134
|
+
|
135
|
+
instruction = custom_task_form['instruction']
|
136
|
+
errors << "Form Instruction is missing in Block station #{i+1}!" if instruction.nil?
|
137
|
+
end
|
138
|
+
elsif task_form.class == Hash
|
139
|
+
form_title = task_form['form_title']
|
132
140
|
errors << "Form Title is missing in Block station #{i+1}!" if form_title.nil?
|
133
141
|
|
134
|
-
instruction =
|
142
|
+
instruction = task_form['instruction']
|
135
143
|
errors << "Form Instruction is missing in Block station #{i+1}!" if instruction.nil?
|
136
|
-
end
|
137
|
-
elsif task_form.class == Hash
|
138
|
-
form_title = task_form['form_title']
|
139
|
-
errors << "Form Title is missing in Block station #{i+1}!" if form_title.nil?
|
140
|
-
|
141
|
-
instruction = task_form['instruction']
|
142
|
-
errors << "Form Instruction is missing in Block station #{i+1}!" if instruction.nil?
|
143
144
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
145
|
+
# Checking Form Fields
|
146
|
+
form_fields = task_form['form_fields']
|
147
|
+
errors << "Form Field is missing in Block station #{i+1}!" if form_fields.nil?
|
148
|
+
if form_fields.class == Array
|
149
|
+
form_fields.each_with_index do |form_field, index|
|
150
|
+
field_label = form_field['label']
|
151
|
+
errors << "Label is missing in block #{index+1} of Form Field within Station #{i+1}!" if field_label.nil?
|
152
|
+
required = form_field['required']
|
153
|
+
field_type = form_field['field_type']
|
154
|
+
if !field_type.nil?
|
155
|
+
unless %w(short_answer long_answer radio_button check_box select_box date email number).include?(field_type)
|
156
|
+
errors << "Field Type of Form Field is invalid in Block #{index+1} of station Block #{i+1}!"
|
157
|
+
end
|
158
|
+
if field_type == "radio_button" || field_type == "select_box"
|
159
|
+
option_values = form_field['option_values']
|
160
|
+
if option_values.nil?
|
161
|
+
errors << "Option values is required for field_type => #{field_type} in block #{index+1} of Form Field within Station #{i+1} !"
|
162
|
+
elsif !option_values.nil?
|
163
|
+
if option_values.class != Array
|
164
|
+
errors << "Option values must be an array for field_type => #{field_type} in block #{index+1} of Form Field within Station #{i+1}!"
|
165
|
+
end
|
164
166
|
end
|
165
167
|
end
|
166
168
|
end
|
167
169
|
end
|
170
|
+
else
|
171
|
+
errors << "Form fields must be an array for Station #{i+1}!"
|
168
172
|
end
|
169
|
-
else
|
170
|
-
errors << "Form fields must be an array for Station #{i+1}!"
|
171
173
|
end
|
172
174
|
end
|
173
175
|
end
|
@@ -175,9 +177,7 @@ module Cf
|
|
175
177
|
end
|
176
178
|
end
|
177
179
|
end
|
178
|
-
|
179
180
|
return errors
|
180
181
|
end
|
181
|
-
|
182
182
|
end
|
183
183
|
end
|
data/lib/cf/cli/production.rb
CHANGED
@@ -12,85 +12,116 @@ module Cf # :nodoc: all
|
|
12
12
|
|
13
13
|
desc "production start <run-title>", "creates a production run with input data file at input/<run-title>.csv"
|
14
14
|
method_option :input_data, :type => :string, :aliases => "-i", :desc => "the name of the input data file"
|
15
|
-
method_option :live, :type => :boolean, :default => false, :
|
16
|
-
|
17
|
-
|
15
|
+
method_option :live, :type => :boolean, :default => false, :desc => "specifies sandbox or live mode"
|
16
|
+
method_option :line, :type => :string, :aliases => "-l", :desc => "public line to use to do the production run. the format should be <account_name>/<line-title> e.g. millisami/brandiator"
|
17
|
+
def start(title=nil)
|
18
18
|
line_destination = Dir.pwd
|
19
19
|
yaml_source = "#{line_destination}/line.yml"
|
20
|
+
|
21
|
+
set_target_uri(options[:live])
|
22
|
+
set_api_key
|
23
|
+
CF.account_name = CF::Account.info.name
|
20
24
|
|
21
|
-
|
22
|
-
|
25
|
+
if File.exist?("#{yaml_source}")
|
26
|
+
line_yaml_dump = YAML::load(File.open(yaml_source))
|
27
|
+
line_title = line_yaml_dump['title'].parameterize
|
28
|
+
line = CF::Line.find(line_title)
|
29
|
+
line = Hashie::Mash.new(line)
|
30
|
+
if line.error.blank?
|
31
|
+
line_title = line_title
|
32
|
+
else
|
33
|
+
say("#{line.error.message}", :red) and return
|
34
|
+
end
|
35
|
+
elsif options[:line].present?
|
36
|
+
line = CF::Line.find(options[:line])
|
37
|
+
line = Hashie::Mash.new(line)
|
38
|
+
if line.error.blank?
|
39
|
+
line_title = options[:line]
|
40
|
+
else
|
41
|
+
say("#{line.error.message}", :red) and return
|
42
|
+
end
|
43
|
+
else
|
44
|
+
say("Looks like you're not in the Line directory or did not provide the line title to use the line", :red) and return
|
23
45
|
end
|
24
46
|
|
25
|
-
line_yaml_dump = YAML::load(File.open(yaml_source))
|
26
|
-
line_title = line_yaml_dump['title'].parameterize
|
27
|
-
|
28
47
|
if title.nil?
|
29
|
-
|
48
|
+
if line_title =~ /\w\/\w/
|
49
|
+
run_title = "#{line_title.split("/").last}-#{Time.new.strftime('%y%b%e-%H%M%S')}".downcase
|
50
|
+
else
|
51
|
+
run_title = "#{line_title}-#{Time.new.strftime('%y%b%e-%H%M%S')}".downcase
|
52
|
+
end
|
30
53
|
else
|
31
54
|
run_title = "#{title.parameterize}-#{Time.new.strftime('%y%b%e-%H%M%S')}".downcase
|
32
55
|
end
|
33
56
|
|
34
|
-
|
35
|
-
|
57
|
+
input_data = options[:input_data].presence
|
58
|
+
|
59
|
+
if input_data =~ /^\// #checking absolute input data path
|
60
|
+
input_data_file = input_data
|
36
61
|
else
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
62
|
+
if Dir.exist?("#{line_destination}/input")
|
63
|
+
input_data_dir = "#{line_destination}/input"
|
64
|
+
input_files = Dir["#{input_data_dir}/*.csv"]
|
65
|
+
file_count = input_files.size
|
66
|
+
case file_count
|
67
|
+
when 0
|
68
|
+
say("No input data file present inside the input folder", :red) and return
|
69
|
+
when 1
|
70
|
+
input_data_file = "#{Dir.pwd}/input/#{extract_name(input_files.first)}"
|
71
|
+
else
|
72
|
+
# Let the user choose the file
|
73
|
+
chosen_file = nil
|
74
|
+
choose do |menu|
|
75
|
+
menu.header = "Input data files"
|
76
|
+
menu.prompt = "Please choose which file to be used as input data: "
|
51
77
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
78
|
+
input_files.each do |item|
|
79
|
+
menu.choice(extract_name(item)) do
|
80
|
+
chosen_file = extract_name(item)
|
81
|
+
say("Using the file #{chosen_file} as input data")
|
82
|
+
end
|
56
83
|
end
|
57
84
|
end
|
85
|
+
input_data_file = "#{Dir.pwd}/input/#{chosen_file}"
|
58
86
|
end
|
59
|
-
|
87
|
+
else
|
88
|
+
unless File.exist?(input_data)
|
89
|
+
say("The input data file named #{input_data} doesn't exist", :red) and return
|
90
|
+
end
|
91
|
+
input_data_file = "#{Dir.pwd}/#{input_data}"
|
60
92
|
end
|
61
93
|
end
|
62
94
|
|
63
|
-
unless File.exist?(
|
64
|
-
say("The input data file named #{input_data} is missing
|
95
|
+
unless File.exist?(input_data_file)
|
96
|
+
say("The input data file named #{input_data} is missing", :red) and return
|
65
97
|
end
|
66
98
|
|
67
|
-
|
99
|
+
|
68
100
|
# before starting the run creation process, we need to make sure whether the line exists or not
|
69
101
|
# if not, then we got to first create the line and then do the production run
|
70
102
|
# else we just simply do the production run
|
71
|
-
|
72
|
-
CF.account_name = CF::Account.info.name
|
73
|
-
line = CF::Line.info(line_title)
|
74
|
-
input_data_file = "#{Dir.pwd}/#{input_data}"
|
103
|
+
|
75
104
|
if line.error.blank?
|
76
105
|
say "Creating a production run with title #{run_title}", :green
|
77
|
-
run = CF::Run.create(
|
106
|
+
run = CF::Run.create(line_title, run_title, input_data_file)
|
78
107
|
if run.errors.blank?
|
79
108
|
display_success_run(run)
|
80
109
|
else
|
81
110
|
say("Error: #{run.errors}", :red)
|
82
111
|
end
|
83
112
|
else
|
84
|
-
#
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
113
|
+
if File.exist?("#{yaml_source}") and !line_title =~ /\w\/\w/
|
114
|
+
# first create line only if its in the valid line directory
|
115
|
+
say("Creating the line: #{line_title}", :green)
|
116
|
+
Cf::Line.new.create
|
117
|
+
# Now create a production run with the title run_title
|
118
|
+
say "Creating a production run with title #{run_title}", :green
|
119
|
+
run = CF::Run.create(CF::Line.info(line_title), run_title, input_data_file)
|
120
|
+
if run.errors.blank?
|
121
|
+
display_success_run(run)
|
122
|
+
else
|
123
|
+
say("Error: #{run.errors}", :red)
|
124
|
+
end
|
94
125
|
end
|
95
126
|
end
|
96
127
|
end
|
@@ -109,7 +140,8 @@ module Cf # :nodoc: all
|
|
109
140
|
set_api_key
|
110
141
|
CF.account_name = CF::Account.info.name
|
111
142
|
if options['line'].present?
|
112
|
-
|
143
|
+
line_title = options['line'].parameterize
|
144
|
+
runs = CF::Run.all(line_title)
|
113
145
|
else
|
114
146
|
runs = CF::Run.all
|
115
147
|
end
|
@@ -128,7 +160,11 @@ module Cf # :nodoc: all
|
|
128
160
|
end
|
129
161
|
end
|
130
162
|
say("\n")
|
131
|
-
|
163
|
+
if runs_table.rows.present?
|
164
|
+
say(runs_table)
|
165
|
+
else
|
166
|
+
say("No production run for line #{line_title}", :yellow)
|
167
|
+
end
|
132
168
|
end
|
133
169
|
|
134
170
|
desc "production resume", "resume a paused production run"
|
data/lib/cf/cli.rb
CHANGED
@@ -22,6 +22,10 @@ require "#{cli_directory}/line_yaml_validator"
|
|
22
22
|
|
23
23
|
if ENV['TEST']
|
24
24
|
require 'ruby-debug'
|
25
|
+
require 'awesome_print'
|
26
|
+
require 'active_support/time_with_zone'
|
27
|
+
::Debugger.start
|
28
|
+
::Debugger.settings[:autoeval] = true if ::Debugger.respond_to?(:settings)
|
25
29
|
end
|
26
30
|
|
27
31
|
module Cf # :nodoc: all
|
@@ -39,7 +43,7 @@ module Cf # :nodoc: all
|
|
39
43
|
set_target_uri(false)
|
40
44
|
resp = CF::Account.login(email, passwd)
|
41
45
|
if resp.error.blank? and resp.api_key.present?
|
42
|
-
File.open(config_file, 'w') {|f| f.write({ :target_url => CF.api_url, :api_version => CF.api_version, :api_key => resp.api_key }.to_yaml) }
|
46
|
+
File.open(config_file, 'w') {|f| f.write("#Don't change this file unless you know what you're doing\n" + { :target_url => CF.api_url, :api_version => CF.api_version, :api_key => resp.api_key }.to_yaml) }
|
43
47
|
say("\nNow you're logged in.\nTo get started, run cf help\n", :green)
|
44
48
|
else
|
45
49
|
say("\n#{resp.error.message}\nTry again with valid one.\n", :red)
|
data/lib/cf/client.rb
CHANGED
data/lib/cf/line.rb
CHANGED
@@ -56,6 +56,7 @@ module CF
|
|
56
56
|
def stations stations = nil
|
57
57
|
if stations
|
58
58
|
type = stations.type
|
59
|
+
@batch_size = stations.batch_size
|
59
60
|
@station_input_formats = stations.station_input_formats
|
60
61
|
if type == "Improve" && self.stations.size < 1
|
61
62
|
raise ImproveStationNotAllowed.new("You cannot add Improve Station as a first station of a line")
|
@@ -63,30 +64,53 @@ module CF
|
|
63
64
|
if type == "Tournament"
|
64
65
|
@jury_worker = stations.jury_worker
|
65
66
|
@auto_judge = stations.auto_judge
|
66
|
-
|
67
|
-
|
68
|
-
:body =>
|
67
|
+
if @batch_size.nil?
|
68
|
+
request_tournament =
|
69
69
|
{
|
70
|
-
:
|
71
|
-
|
70
|
+
:body =>
|
71
|
+
{
|
72
|
+
:api_key => CF.api_key,
|
73
|
+
:station => {:type => type, :jury_worker => @jury_worker, :auto_judge => @auto_judge, :input_formats => @station_input_formats}
|
74
|
+
}
|
72
75
|
}
|
73
|
-
|
76
|
+
else
|
77
|
+
request_tournament =
|
78
|
+
{
|
79
|
+
:body =>
|
80
|
+
{
|
81
|
+
:api_key => CF.api_key,
|
82
|
+
:station => {:type => type, :jury_worker => @jury_worker, :auto_judge => @auto_judge, :input_formats => @station_input_formats, :batch_size => @batch_size}
|
83
|
+
}
|
84
|
+
}
|
85
|
+
end
|
74
86
|
resp = HTTParty.post("#{CF.api_url}#{CF.api_version}/lines/#{CF.account_name}/#{self.title.downcase}/stations.json",request_tournament)
|
75
87
|
else
|
76
|
-
|
77
|
-
|
78
|
-
|
88
|
+
if @batch_size.nil?
|
89
|
+
request_general =
|
90
|
+
{
|
91
|
+
:body =>
|
92
|
+
{
|
93
|
+
:api_key => CF.api_key,
|
94
|
+
:station => {:type => type, :input_formats => @station_input_formats}
|
95
|
+
}
|
96
|
+
}
|
97
|
+
else
|
98
|
+
request_general =
|
79
99
|
{
|
80
|
-
:
|
81
|
-
|
100
|
+
:body =>
|
101
|
+
{
|
102
|
+
:api_key => CF.api_key,
|
103
|
+
:station => {:type => type, :input_formats => @station_input_formats, :batch_size => @batch_size}
|
104
|
+
}
|
82
105
|
}
|
83
|
-
|
106
|
+
end
|
84
107
|
resp = HTTParty.post("#{CF.api_url}#{CF.api_version}/lines/#{CF.account_name}/#{self.title.downcase}/stations.json",request_general)
|
85
108
|
end
|
86
109
|
station = CF::Station.new()
|
87
110
|
resp.to_hash.each_pair do |k,v|
|
88
111
|
station.send("#{k}=",v) if station.respond_to?(k)
|
89
112
|
end
|
113
|
+
station.batch_size = @batch_size
|
90
114
|
station.line = self
|
91
115
|
station.line_title = self.title
|
92
116
|
if resp.response.code != "200"
|
@@ -183,9 +207,16 @@ module CF
|
|
183
207
|
def self.find(line)
|
184
208
|
if line.class == CF::Line
|
185
209
|
resp = get("/lines/#{CF.account_name}/#{line.title.downcase}.json")
|
186
|
-
|
187
|
-
|
210
|
+
elsif line.class == String
|
211
|
+
if line.split("/").count == 2
|
212
|
+
account = line.split("/").first
|
213
|
+
title = line.split("/").last
|
214
|
+
resp = get("/lines/#{account}/#{title.downcase}.json")
|
215
|
+
elsif line.split("/").count == 1
|
216
|
+
resp = get("/lines/#{CF.account_name}/#{line.downcase}.json")
|
217
|
+
end
|
188
218
|
end
|
219
|
+
return resp.to_hash
|
189
220
|
end
|
190
221
|
|
191
222
|
# ==Returns all the lines of an account
|
@@ -252,7 +283,7 @@ module CF
|
|
252
283
|
end
|
253
284
|
end
|
254
285
|
|
255
|
-
def self.
|
286
|
+
def self.inspect(line_title)
|
256
287
|
resp = get("/lines/#{CF.account_name}/#{line_title.downcase}/inspect.json")
|
257
288
|
send_resp = resp.to_hash
|
258
289
|
@line_input_formats = []
|