99 lines
2.5 KiB
Ruby
99 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)
|
|
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 |