roysathome.net/auth/post.rb

97 lines
2.5 KiB
Ruby

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)
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
else
puts response.body
end