Muhammad Rahmatullah
Muhammad Rahmatullah

Reputation: 326

Ruby/Rails : Get url extension with URI

currently i'm have a bit problem to parse URL using URI

i've tried to use this code :

uri = URI::parse(Model.first.media)
#<URI::HTTPS https://my-bucket.s3.amazonaws.com/model/media/41/cdbb21cc-1c59-4aa3-92ec-917e7237a850.mp4>

uri.path
"/model/media/41/cdbb21cc-1c59-4aa3-92ec-917e7237a850.mp4"

File.basename(Model.first.media, '.mp4')
"cdbb21cc-1c59-4aa3-92ec-917e7237a850.mp4"

but i'm still confused to get path without / as first char in example model/media/41/cdbb21cc-1c59-4aa3-92ec-917e7237a850.mp4 and get only the path without domain and the file in example model/media/41

do i must using regex to get above output ? or URI can handle this ?

note:

i've found how to get url extension without first char based on this question Ruby regexp: capture the path of url

Upvotes: 1

Views: 1450

Answers (1)

lacostenycoder
lacostenycoder

Reputation: 11206

URI class helps break apart URLs into components and gives you methods like

[:scheme, :userinfo, :host, :port, :path, :query, :fragment]

If you simply need to get rid of the first slash it's simple as this with no regex.

uri.path[1..-1] #gives all string characters except the 0 index.

But you could probably even get away with:

Model.first.media.split('.com/').last # don't even need URI parse.

For last part of your question you can do:

File.dirname(uri.path) # will return => "/model/media/41"

File.dirname(uri.path)[1..-1] # if you want to remove leading /

Upvotes: 1

Related Questions