require 'net/https' require 'net/http/post/multipart' require 'uri' require 'json' # The URL you want to send the POST request to url = URI.parse('https://auth.roysathome.net/auth/login') # Create a new Net::HTTP object with the target server http = Net::HTTP.new(url.host, url.port) http.use_ssl = true # If your server uses HTTPS, you might need to enable SSL # http.use_ssl = true # Create a new Net::HTTP::Post request with the desired path request = Net::HTTP::Post.new(url.path) puts 'Enter username:' username = gets.strip! puts 'Enter password' password = gets.strip! # Set the request body with the data you want to send request.body = "username=#{username}&password=#{password}" #request.body = "username=admin&password=pass123" # Set the 'Content-Type' header if needed request['Content-Type'] = 'application/x-www-form-urlencoded' # Send the request and get the response response = http.request(request) unless response.code == '200' puts "Response Code: #{response.code}. Aborting." puts "Response Body: #{response.body}" puts "Aborting." exit end puts 'Reauthentication token stored.' response_data = JSON.parse(response.body) reauthentication_token = response_data['token'] #while true url = URI.parse('https://auth.roysathome.net/auth/reauthenticate') request = Net::HTTP::Post.new(url.path) request['Authorization'] = "Bearer #{reauthentication_token}" response = http.request(request) unless response.code == '200' puts "Response Code: #{response.code}. Aborting." puts "Response Body: #{response.body}" puts "Aborting." exit end #puts response.body response_data = JSON.parse(response.body) authentication_token = response_data['jwt'] #end ############# Do Files Test #sleep(2) # Read the file contents file_content = File.read('./example.txt') # Create a URI object for the API endpoint uri = URI.parse('https://auth.roysathome.net/upload') # Create a Net::HTTP object http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post::Multipart.new( uri.path, 'file' => UploadIO.new(StringIO.new(file_content), 'application/octet-stream', 'example.txt') ) request['Authorization'] = "Bearer #{authentication_token}" # Send the request puts "Sending file of size #{(File.size('./example.txt') / 2**20).round(2)} MB" response = http.request(request) #puts response.code unless response.code == '200' puts response.code puts response.body else puts response.body end