autodesk_backburner_client 0.1.0

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/.gitignore ADDED
@@ -0,0 +1,21 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ lib/bundler/man
11
+ pkg
12
+ rdoc
13
+ spec/reports
14
+ test/tmp
15
+ test/version_tmp
16
+ tmp
17
+ # YARD artifacts
18
+ .yardoc
19
+ _yardoc
20
+ doc/
21
+ .idea/
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use 1.9.2-p290@backburner --create
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in backburner.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Alexander Panasyuk
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,30 @@
1
+ # Autodesk Backburner Client
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'backburner', git: 'git@github.com:panasyuk/autodesk_backburner_client'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ ## Usage
16
+ ```ruby
17
+ require 'backburner'
18
+
19
+ c = Backburner::Client.new '127.0.0.1', 3234
20
+ jobs = c.jobs
21
+ jobs[0].name # => "Test Job"
22
+ ```
23
+
24
+ ## Contributing
25
+
26
+ 1. Fork it
27
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
28
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
29
+ 4. Push to the branch (`git push origin my-new-feature`)
30
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'backburner/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "autodesk_backburner_client"
8
+ gem.version = Backburner::VERSION
9
+ gem.authors = ["Alexander Panasyuk"]
10
+ gem.email = ["panasmeister@gmail.com"]
11
+ gem.description = %q{Autodesk Backburner client}
12
+ gem.summary = %q{Simple Backburner client, that fetches info via telnet}
13
+ gem.homepage = ""
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+ gem.add_dependency 'nori'
20
+ gem.add_dependency 'nokogiri'
21
+ gem.add_dependency 'recursive-open-struct'
22
+ gem.add_dependency 'i18n'
23
+ end
data/lib/backburner.rb ADDED
@@ -0,0 +1,9 @@
1
+ require 'active_support/core_ext/hash'
2
+ require "backburner/version"
3
+ require "backburner/connection"
4
+ require "backburner/job"
5
+ require "backburner/server"
6
+ require "backburner/client"
7
+ require "backburner/string/string_operations"
8
+ require "backburner/data_object"
9
+ require "backburner/backburner_object"
@@ -0,0 +1,23 @@
1
+ module Backburner
2
+
3
+ class BackburnerObject
4
+
5
+ attr_reader :data, :client, :handler
6
+
7
+ def method_missing name, *args
8
+ @data.search name
9
+ end
10
+
11
+ def initialize handler, client
12
+ @handler = handler
13
+ @client = client
14
+ reload
15
+ end
16
+
17
+ def reload
18
+ @data = reloader
19
+ end
20
+
21
+ end
22
+
23
+ end
@@ -0,0 +1,80 @@
1
+ module Backburner
2
+
3
+ class Client
4
+
5
+ def initialize host, port=3234
6
+ @host = host
7
+ @port = port
8
+ @connection = Connection.new @host, @port
9
+ self
10
+ end
11
+
12
+ def connect
13
+ @connection = Connection.new @host, @port
14
+ end
15
+
16
+ def disconnect
17
+ @connection.close
18
+ end
19
+
20
+ def jobs
21
+ job_handlers = @connection.get_jobhlist.jobh_list.job
22
+ job_handlers = [job_handlers] unless job_handlers.kind_of?(Array)
23
+ job_handlers.map do |job_data|
24
+ Job.new job_data.handle, self
25
+ end
26
+ end
27
+
28
+ def job handler
29
+ job_data = job! handler
30
+ Job.new job_data, self
31
+ end
32
+
33
+ def job! handler
34
+ @connection.get_job handler
35
+ end
36
+
37
+ def servers
38
+ server_handlers = @connection.get_srvlist.server_list.server
39
+ server_handlers = [server_handlers] unless server_handlers.kind_of?(Array)
40
+ server_handlers.map do |server_data|
41
+ Server.new server_data.handle, self
42
+ end
43
+ end
44
+
45
+ def server handler
46
+ server_data = server! handler
47
+ Server.new server_data, self
48
+ end
49
+
50
+ def server! handler
51
+ @connection.get_server handler
52
+ end
53
+
54
+ private
55
+
56
+ def send_client_info
57
+ # <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
58
+ # <ClientInfo>
59
+ # <Version>300</Version>
60
+ # <UdpPort>0</UdpPort>
61
+ # <Controler>0</Controler>
62
+ # <SystemInfo>
63
+ # <TotalMemory>4294967295</TotalMemory>
64
+ # <TotalMemoryF>34313162752.000000</TotalMemoryF>
65
+ # <NumCpus>8</NumCpus>
66
+ # <Platform>Windows XP 6.1 Build 7601 - Service Pack 1</Platform>
67
+ # <User> </User>
68
+ # <ComputerName>rendermama</ComputerName>
69
+ # <Mac>00E052B9A2F20000</Mac>
70
+ # <WorkDiskSPace>0</WorkDiskSPace>
71
+ # <IPAddress>10.128.23.74</IPAddress>
72
+ # </SystemInfo>
73
+ #</ClientInfo>
74
+
75
+ end
76
+
77
+ end
78
+
79
+
80
+ end
@@ -0,0 +1,62 @@
1
+ require 'net/telnet'
2
+
3
+ module Backburner
4
+
5
+ class Connection
6
+
7
+ def initialize host, port=3234
8
+ @session = Net::Telnet.new('Host' => host, 'Port' => port, 'Prompt' => /backburner>/i)
9
+ @session.waitfor 'Match' => /backburner>/i
10
+ end
11
+
12
+ def method_missing name, *args
13
+ if name =~ /^get_/
14
+ object = name.to_s.gsub /^get_/, ''
15
+ return get(object, args)
16
+ end
17
+ super
18
+ end
19
+
20
+ def get object, *params
21
+ exec 'String' => "get #{object} #{params.join ' ' if params.kind_of?(Array)}"
22
+
23
+ end
24
+
25
+ def close
26
+ @session.close
27
+ end
28
+
29
+ def disable_prompt
30
+ response = exec 'String' => 'set prompt off'
31
+ return response if @last_status==201
32
+ raise
33
+ end
34
+
35
+ private
36
+
37
+ def exec arg_hash
38
+ xml_string = ""
39
+ first = true
40
+ @session.cmd arg_hash do |response|
41
+ if first
42
+ response =~ /(\d+) (\d*)(.*)/
43
+ @last_status = $1.to_i
44
+ @last_size = $2.to_i
45
+ @last_message = $3
46
+ first = false
47
+ next
48
+ end
49
+ xml_string += response
50
+ end
51
+
52
+ xml_string = xml_string.sub(/backburner>$/, '')
53
+ DataObject.new xml_string
54
+ end
55
+
56
+ def send hash
57
+
58
+ end
59
+
60
+ end
61
+
62
+ end
@@ -0,0 +1,81 @@
1
+ require 'nori'
2
+ require 'recursive_open_struct'
3
+ require 'builder'
4
+
5
+ module Backburner
6
+
7
+ class DataObject < RecursiveOpenStruct
8
+
9
+ def initialize xml=''
10
+ if xml
11
+ parser = Nori.new :convert_tags_to => lambda { |tag| tag.snakecase.to_sym }
12
+ super parser.parse(xml), recurse_over_arrays: true
13
+ else
14
+ super
15
+ end
16
+ end
17
+
18
+ def search name
19
+ result = dig @table, name
20
+ begin
21
+ case result
22
+ when /^\d+$/ then result.to_i
23
+ when /^\d+\.\d+$/ then result.to_f
24
+ when /^\d{4}\/\d{2}\/\d{2}-\d{2}:\d{2}:\d{2}:\d{4}-\d{2}$/ then Time.parse(result)
25
+ when /^Yes$/i then true
26
+ when /^No$/i then false
27
+ else result
28
+ end
29
+ rescue
30
+ result
31
+ end
32
+ end
33
+
34
+ def to_xml
35
+ builder = Nokogiri::XML::Builder.new do |xml|
36
+ xml.send @table.keys.first.to_s.camelize
37
+ end
38
+ document = builder.doc
39
+ root_element = document.children[0]
40
+ xml = xml_dig root_element, @table.values.first, document
41
+ document.to_xml
42
+ end
43
+
44
+ private
45
+
46
+ def dig hash, name
47
+ hash.each do |key, value|
48
+ return value if name.to_s == key.to_s
49
+ if value.kind_of?(Hash)
50
+ result = dig value, name
51
+ return result if result
52
+ end
53
+ end
54
+ nil
55
+ end
56
+
57
+ def xml_dig element, data, document
58
+ children = []
59
+ if data.kind_of?(Hash)
60
+ data.each do |key, value|
61
+ if key.to_s =~ /^@(.+)/
62
+ element[$1]=value
63
+ else
64
+ child= Nokogiri::XML::Element.new(key.to_s.camelize, document)
65
+ xml_dig(child, value, document)
66
+ children << child
67
+ end
68
+ end
69
+ elsif data.kind_of?(String)
70
+ children << data
71
+ end
72
+
73
+ children.each do |child|
74
+ element.add_child child
75
+ end
76
+ element
77
+ end
78
+
79
+ end
80
+
81
+ end
@@ -0,0 +1,170 @@
1
+ require 'backburner/backburner_object'
2
+
3
+ module Backburner
4
+
5
+ class Job < BackburnerObject
6
+
7
+ def reloader
8
+ @client.job!(@handler)
9
+ end
10
+
11
+ end
12
+
13
+ end
14
+
15
+ #<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
16
+ # <Job>
17
+ #<!--backburner Job Description File-->
18
+ # <JobInfo>
19
+ # <Version>300</Version>
20
+ # <JobHandle>4294967295</JobHandle>
21
+ #<Name>8saasdfsddf18</Name>
22
+ # <Description>*</Description>
23
+ #<JobPriority>50</JobPriority>
24
+ # <User>igorello</User>
25
+ #<Computer>MARINA-PK</Computer>
26
+ # <LastUpdated>2013/09/06-13:10:07:0778-05</LastUpdated>
27
+ # <Submitted>2013/09/06-13:10:07:0778-05</Submitted>
28
+ # <Started>0000/00/00-00:00:00:0000-00</Started>
29
+ # <Ended>0000/00/00-00:00:00:0000-00</Ended>
30
+ # <NumberTasks>1</NumberTasks>
31
+ #<TasksCompleted>0</TasksCompleted>
32
+ # <Encoding>utf-8</Encoding>
33
+ #<!--Version 2013 Data-->
34
+ #<SrvLimitCount>0</SrvLimitCount>
35
+ # <ArchiveAfterDays>No</ArchiveAfterDays>
36
+ #<DeleteAfterDays>No</DeleteAfterDays>
37
+ # <DeleteDays>0</DeleteDays>
38
+ #<ArchiveDays>0</ArchiveDays>
39
+ # <AssignedSrvGrp></AssignedSrvGrp>
40
+ #</JobInfo>
41
+ # <JobFlags>
42
+ # <Active>Yes</Active>
43
+ #<Complete>No</Complete>
44
+ # <NonConcurrent>No</NonConcurrent>
45
+ #<NonStoppable>No</NonStoppable>
46
+ # <IgnoreJobShare>Yes</IgnoreJobShare>
47
+ #<JobHasDependencies>No</JobHasDependencies>
48
+ # <ZipArchive>Yes</ZipArchive>
49
+ #<LeaveInQueue>No</LeaveInQueue>
50
+ # <ArchiveWhenDone>No</ArchiveWhenDone>
51
+ #<DeleteWhenDone>No</DeleteWhenDone>
52
+ # <OverrideBlockingTasks>No</OverrideBlockingTasks>
53
+ #<EnableBlockingTasks>No</EnableBlockingTasks>
54
+ # </JobFlags>
55
+ #<Archive>
56
+ #<ArchiveSize>223773</ArchiveSize>
57
+ # <ExtractedSize>614376</ExtractedSize>
58
+ #</Archive>
59
+ # <Plugin>
60
+ # <PlugName>Autodesk 3ds Max 2013 (64-bit)</PlugName>
61
+ #<PlugVersion>300</PlugVersion>
62
+ # </Plugin>
63
+ #<Alerts>
64
+ #<Enabled>0</Enabled>
65
+ # <Failure>No</Failure>
66
+ #<Progress>No</Progress>
67
+ # <Completion>No</Completion>
68
+ #<NthTask>0</NthTask>
69
+ # <SendEmail>No</SendEmail>
70
+ #<IncludeSummary>No</IncludeSummary>
71
+ # <EmailFrom></EmailFrom>
72
+ #<EmailTo></EmailTo>
73
+ # <EmailServer></EmailServer>
74
+ #</Alerts>
75
+ # <Servers All="Yes" />
76
+ #<DependsOn />
77
+ # <!--Task Specific Data-->
78
+ # <JobDetails>
79
+ # <D3dsMaxData>
80
+ # <MaxJob displayable="1" editable="0" displayname="Autodesk 3ds Max 2013 General" indent="0">
81
+ # <Sequence displayable="0" editable="0">No</Sequence>
82
+ #<JobName displayable="0" editable="0">8saasdfsddf18</JobName>
83
+ # <MaxVersion displayable="0" editable="0">2013</MaxVersion>
84
+ #<FirstFrame displayable="1" editable="0" displayname="First Frame" type="1" indent="1">0</FirstFrame>
85
+ # <LastFrame displayable="1" editable="0" displayname="Last Frame" type="1" indent="1">0</LastFrame>
86
+ #<Step displayable="1" editable="0" displayname="Every Nth" type="1" indent="1">1</Step>
87
+ # <Width displayable="1" editable="0" displayname="Output Width" type="1" indent="1">1800</Width>
88
+ #<Height displayable="1" editable="0" displayname="Output Height" type="1" indent="1">1350</Height>
89
+ # <GammaCorrection displayable="1" editable="0" displayname="Gamma Correction" type="2" indent="1" yesstring="Enabled" nostring="Disabled">Yes</GammaCorrection>
90
+ #<InputGamma displayable="1" editable="0" displayname="Input Gamma" type="0" indent="1">1.000000</InputGamma>
91
+ # <OutputGamma displayable="1" editable="0" displayname="Output Gamma" type="0" indent="1">1.000000</OutputGamma>
92
+ #<PixelAspect displayable="1" editable="0" displayname="Pixel Aspect Ratio" type="0" indent="1">1.000000</PixelAspect>
93
+ # <OutputCamera displayable="1" editable="0" displayname="Camera" type="0" indent="1" length="40">Current view</OutputCamera>
94
+ #<REEnabled displayable="0" editable="0">Yes</REEnabled>
95
+ # <ServerPID displayable="0" editable="0">0</ServerPID>
96
+ #<RenderPreset displayable="0" editable="0"></RenderPreset>
97
+ # <Script displayable="1" editable="0" displayname="Pre-render Script" type="0" indent="1" displayvalue="Unknown" length="40"></Script>
98
+ #<PostRendScript displayable="1" editable="0" displayname="Post-render Script" type="0" indent="1" displayvalue="Unknown" length="40"></PostRendScript>
99
+ # <MaxLoad displayable="0" editable="0">20</MaxLoad>
100
+ #<MaxUnload displayable="0" editable="0">10</MaxUnload>
101
+ # <MaxRender displayable="0" editable="0">600</MaxRender>
102
+ #<RendererName displayable="1" editable="0" displayname="Renderer" type="0" indent="1" length="40">V-Ray Adv 2.30.01</RendererName>
103
+ # <RendererClassHi displayable="0" editable="0">1941615238</RendererClassHi>
104
+ #<RendererClassLo displayable="0" editable="0">2012806412</RendererClassLo>
105
+ # <VideoPostJob displayable="0" editable="0">No</VideoPostJob>
106
+ #<MapsIncluded displayable="0" editable="0">No</MapsIncluded>
107
+ # <SkipExisting displayable="0" editable="0">No</SkipExisting>
108
+ #<SkipOutputTest displayable="0" editable="0">No</SkipOutputTest>
109
+ # <DisplayVFB displayable="0" editable="0">Yes</DisplayVFB>
110
+ #<RegionRender displayable="0" editable="0">No</RegionRender>
111
+ # <StripRender displayable="1" editable="0" displayname="Strip Render" type="2" indent="0" yesstring="Enabled" nostring="Disabled">No</StripRender>
112
+ #<StitchRender displayable="1" editable="0" displayname="Stitch Phase" type="2" indent="0" yesstring="Yes" nostring="No">No</StitchRender>
113
+ # <StripCount displayable="1" editable="0" displayname="Strip Count" type="1" indent="1">0</StripCount>
114
+ #<StripHeight displayable="1" editable="0" displayname="Strip Height" type="1" indent="1">1350</StripHeight>
115
+ # <StripOverlap displayable="1" editable="0" displayname="Strip Overlap" type="1" indent="1">0</StripOverlap>
116
+ #<DeleteTempStrip displayable="0" editable="0">No</DeleteTempStrip>
117
+ # <RenderAllBatches displayable="0" editable="0">No</RenderAllBatches>
118
+ #<RenderToTexture displayable="0" editable="0">No</RenderToTexture>
119
+ # <IsStillFrame displayable="0" editable="0">No</IsStillFrame>
120
+ #<ContinueOnError displayable="0" editable="0">No</ContinueOnError>
121
+ # </MaxJob>
122
+ #<Scene displayable="1" editable="0" displayname="Scene Info" indent="0">
123
+ #<NumObjects displayable="1" editable="0" displayname="Objects" type="1" indent="1">0</NumObjects>
124
+ # <NumFaces displayable="1" editable="0" displayname="Faces" type="1" indent="1">0</NumFaces>
125
+ #<NumLights displayable="1" editable="0" displayname="Lights" type="1" indent="1">0</NumLights>
126
+ # <SceneStart displayable="1" editable="0" displayname="Scene Start" type="1" indent="1">0</SceneStart>
127
+ #<SceneEnd displayable="1" editable="0" displayname="Scene End" type="1" indent="1">0</SceneEnd>
128
+ # <VideoColorCheck displayable="1" editable="0" displayname="Video Color Check" type="2" indent="1" yesstring="On" nostring="Off">No</VideoColorCheck>
129
+ #<TwoSided displayable="1" editable="0" displayname="Two Sided" type="2" indent="1" yesstring="On" nostring="Off">No</TwoSided>
130
+ # <RenderHidden displayable="1" editable="0" displayname="Render Hidden" type="2" indent="1" yesstring="On" nostring="Off">No</RenderHidden>
131
+ #<RenderAtmosphere displayable="1" editable="0" displayname="Render Atmosphere" type="2" indent="1" yesstring="On" nostring="Off">Yes</RenderAtmosphere>
132
+ # <SuperBlack displayable="1" editable="0" displayname="Super Black" type="2" indent="1" yesstring="On" nostring="Off">No</SuperBlack>
133
+ #<SerialNumbering displayable="1" editable="0" displayname="Serial Numbering" type="2" indent="1" yesstring="On" nostring="Off">No</SerialNumbering>
134
+ # <Dither256 displayable="1" editable="0" displayname="Dither 256" type="2" indent="1" yesstring="On" nostring="Off">Yes</Dither256>
135
+ #<DitherTrueColor displayable="1" editable="0" displayname="Dither True Color" type="2" indent="1" yesstring="On" nostring="Off">Yes</DitherTrueColor>
136
+ # <RenderFields displayable="1" editable="0" displayname="Render Fields" type="2" indent="1" yesstring="On" nostring="Off">No</RenderFields>
137
+ #<FieldOrder displayable="1" editable="0" displayname="Field Order" type="2" indent="1" yesstring="Odd First" nostring="Even First">Yes</FieldOrder>
138
+ # <Multithread displayable="1" editable="0" displayname="Multithread" type="2" indent="1" yesstring="On" nostring="Off">Yes</Multithread>
139
+ #<RenderDisplacements displayable="1" editable="0" displayname="Displacements" type="2" indent="1" yesstring="On" nostring="Off">Yes</RenderDisplacements>
140
+ # <RenderEffects displayable="1" editable="0" displayname="Scene Effects" type="2" indent="1" yesstring="On" nostring="Off">Yes</RenderEffects>
141
+ #<UseAreaLights displayable="1" editable="0" displayname="Use Area Lights" type="2" indent="1" yesstring="On" nostring="Off">Yes</UseAreaLights>
142
+ # <UseAdvLight displayable="1" editable="0" displayname="Use Advanced Lighting" type="2" indent="1" yesstring="On" nostring="Off">Yes</UseAdvLight>
143
+ #<CalcAdvLight displayable="1" editable="0" displayname="Compute Advanced Lighting" type="2" indent="1" yesstring="On" nostring="Off">No</CalcAdvLight>
144
+ # </Scene>
145
+ #<Outputs displayable="1" editable="0" displayname="Outputs" indent="0">
146
+ #<Output>
147
+ #<Name displayable="1" editable="0" displayname="Output 0" type="3" indent="1" length="40">\\\rstor1\\NFS\\renderfarm\\users\\2\\jobs\\943\\prcs\\818\\output\\\output.jpg</Name>
148
+ # <OutputGamma displayable="0" editable="0">0.000000</OutputGamma>
149
+ #<IsDevice displayable="0" editable="0">No</IsDevice>
150
+ # </Output>
151
+ #</Outputs>
152
+ # <Cameras>
153
+ # <Camera>
154
+ # <Name displayable="0" editable="0">Camera001</Name>
155
+ #</Camera>
156
+ # </Cameras>
157
+ #<RenderElements displayable="1" editable="0" displayname="Render Elements" indent="0">
158
+ #<NoneDefined displayable="1" editable="0" displayname="None Defined" type="0" indent="1" length="40"></NoneDefined>
159
+ # </RenderElements>
160
+ #<SessionPaths displayable="1" editable="0" displayname="Alternate Paths" indent="0">
161
+ #<Path>
162
+ #<BitmapPath displayable="1" editable="0" displayname="Alternate Bitmap Path" type="3" indent="1" length="40">\\\\rstor1\\NFS\\renderfarm\\users\\2\\jobs\\943\\prcs\\818\\input\\</BitmapPath>
163
+ # </Path>
164
+ #</SessionPaths>
165
+ # <BitmapOptions />
166
+ #<BakeNodes />
167
+ # <SceneStates />
168
+ #</D3dsMaxData>
169
+ # </JobDetails>
170
+ #</Job>
@@ -0,0 +1,7 @@
1
+ class OpenStructData < RecursiveOpenStruct
2
+
3
+ def initialize xml
4
+
5
+ end
6
+
7
+ end
@@ -0,0 +1,9 @@
1
+ require 'backburner/backburner_object'
2
+
3
+ module Backburner
4
+ class Server < BackburnerObject
5
+ def reloader
6
+ @client.server!(@handler)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class String
2
+ def dasherize
3
+ self.gsub(/^([A-Z])/){ "#{$1.downcase}" }.gsub(/([A-Z])/){ "_#{$1.downcase}" }
4
+ end
5
+
6
+ def camelize
7
+ self.gsub(/(^|_)(.)/){ $2.upcase }
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ module Backburner
2
+ VERSION = "0.1.0"
3
+ end
metadata ADDED
@@ -0,0 +1,126 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: autodesk_backburner_client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Alexander Panasyuk
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-12-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nori
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
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'
30
+ - !ruby/object:Gem::Dependency
31
+ name: nokogiri
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
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'
46
+ - !ruby/object:Gem::Dependency
47
+ name: recursive-open-struct
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: i18n
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ description: Autodesk Backburner client
79
+ email:
80
+ - panasmeister@gmail.com
81
+ executables: []
82
+ extensions: []
83
+ extra_rdoc_files: []
84
+ files:
85
+ - .gitignore
86
+ - .rvmrc
87
+ - Gemfile
88
+ - LICENSE.txt
89
+ - README.md
90
+ - Rakefile
91
+ - backburner.gemspec
92
+ - lib/backburner.rb
93
+ - lib/backburner/backburner_object.rb
94
+ - lib/backburner/client.rb
95
+ - lib/backburner/connection.rb
96
+ - lib/backburner/data_object.rb
97
+ - lib/backburner/job.rb
98
+ - lib/backburner/open_struct_data.rb
99
+ - lib/backburner/server.rb
100
+ - lib/backburner/string/string_operations.rb
101
+ - lib/backburner/version.rb
102
+ homepage: ''
103
+ licenses: []
104
+ post_install_message:
105
+ rdoc_options: []
106
+ require_paths:
107
+ - lib
108
+ required_ruby_version: !ruby/object:Gem::Requirement
109
+ none: false
110
+ requirements:
111
+ - - ! '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ required_rubygems_version: !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ requirements: []
121
+ rubyforge_project:
122
+ rubygems_version: 1.8.25
123
+ signing_key:
124
+ specification_version: 3
125
+ summary: Simple Backburner client, that fetches info via telnet
126
+ test_files: []