Class: Unitylock::Client::Main
- Inherits:
-
Object
- Object
- Unitylock::Client::Main
- Defined in:
- lib/unitylock/client/main.rb
Instance Method Summary collapse
- #delete_all ⇒ Object
- #deletes(files) ⇒ Object
-
#initialize(urlbase) ⇒ Main
constructor
A new instance of Main.
- #locks(user:, files:) ⇒ Object
- #search ⇒ Object
- #sync(dir: '.', force: false, includes: /\.(unity|prefab)$/, excludes: /^$/) ⇒ Object
- #touches(files) ⇒ Object
- #unlocks(user:, files:) ⇒ Object
Constructor Details
#initialize(urlbase) ⇒ Main
Returns a new instance of Main.
8 9 10 11 12 13 14 |
# File 'lib/unitylock/client/main.rb', line 8 def initialize(urlbase) @conn = Faraday.new(:url => urlbase) do |faraday| faraday.request :url_encoded # faraday.response :logger faraday.adapter Faraday.default_adapter end end |
Instance Method Details
#delete_all ⇒ Object
36 37 38 39 |
# File 'lib/unitylock/client/main.rb', line 36 def delete_all files = JSON.parse(search.body).collect {|it| it['file']} deletes(files) end |
#deletes(files) ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/unitylock/client/main.rb', line 28 def deletes(files) @conn.delete do |req| req.url '/files' req.headers['Content-Type'] = 'application/json' req.body = JSON.generate(files) end end |
#locks(user:, files:) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/unitylock/client/main.rb', line 41 def locks(user:, files:) # TODO: requests at once results = [] files.each do |file| results << @conn.put do |req| req.url "/user/#{user}/lock" req.headers['Content-Type'] = 'application/json' req.body = JSON.generate({file: file}) end.body end results end |
#search ⇒ Object
16 17 18 |
# File 'lib/unitylock/client/main.rb', line 16 def search @conn.get '/files' end |
#sync(dir: '.', force: false, includes: /\.(unity|prefab)$/, excludes: /^$/) ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/unitylock/client/main.rb', line 67 def sync(dir: '.', force: false, includes: /\.(unity|prefab)$/, excludes: /^$/) files = Find.find(dir).select{|it| it =~ includes}.select{|it| it !~ excludes} puts "touched:" puts files touches(files) touched_files = JSON.parse(search.body).collect {|it| it['file']} if force remove_files = touched_files.select{|it| !files.include?(it) } puts "removed:" puts remove_files deletes(remove_files) return (touched_files - remove_files) end return touched_files end |
#touches(files) ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/unitylock/client/main.rb', line 20 def touches(files) @conn.post do |req| req.url '/files' req.headers['Content-Type'] = 'application/json' req.body = JSON.generate(files) end end |
#unlocks(user:, files:) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/unitylock/client/main.rb', line 54 def unlocks(user:, files:) # TODO: requests at once results = [] files.each do |file| results << @conn.put do |req| req.url "/user/#{user}/unlock" req.headers['Content-Type'] = 'application/json' req.body = JSON.generate({file: file}) end.body end results end |