Class: Roebe::UploadToImgur

Inherits:
Base show all
Defined in:
lib/roebe/classes/upload_to_imgur.rb

Overview

Roebe::UploadToImgur

Constant Summary collapse

ENDPOINTS =
#

ENDPOINTS

#
{
  image:   '/3/image/',
  gallery: '/3/gallery/'
}
API_PUBLIC_KEY =
#

API_PUBLIC_KEY

This is the public imgur API key.

#
'Client-ID 70ff50b8dfc3a53'
API_URI =
#

API_URI

#
URI.parse('https://apidocs.imgur.com/')
REGEX_FOR_THE_LINK_ENTRY =
#

REGEX_FOR_THE_LINK_ENTRY

See this URL:

https://rubular.com/r/4scnVyZWGOETJr
#
/"link":"(.+)"}/

Constants inherited from Base

Base::COLOURS, Base::HOME_DIRECTORY_OF_USER_X, Base::N, Base::NAMESPACE

Instance Method Summary collapse

Methods inherited from Base

#actions, #append_this_onto_that_file, #append_what_into, #be_silent, #be_verbose?, #beautiful_url, #burlywood, #call_next, #chdir, #cheerful_guy, #cliner, #complex_esystem, #convert_global_env, #copy_directory, #copy_file, #cornflowerblue, #create_directory, #crimson, #current_month?, #current_time?, #current_year?, #cyan, #darkcyan, #darkgreen, #darkkhaki, #darkslateblue, #deeppink, #delete_symlink, #do_not_use_the_base_colours, #do_use_the_base_colours, #e, #ecomment, #editor_to_use?, #efancy, #eimp, #emphasis, #ensure_main_encoding, #ensure_utf_encoding, #eparse, #erev, #esteelblue, #etomato, #ewarn, #exit_program, #firebrick, #get_current_day, #get_current_month, #get_files_and_directories, #get_files_from, #get_german_name_for_this_weekday, #gold, #green, #grey, #hh_mm_ss, #hh_mm_ss_day_month_year, #home_dir?, #home_directory_of_user_x?, #infer_the_namespace, #internal_hash?, #is_a_directory?, #is_a_file?, #is_a_jpg_file?, #is_an_image_file?, #is_archive?, #is_audio_file?, #is_in_studium_dir?, #is_multimedia_file?, #is_on_roebe?, #is_on_windows?, #is_studium_available?, #is_symlink?, #is_this_a_ruby_file?, #is_video_file?, #iso_encoding?, #le, #left_colour, #lightblue, #lightgreen, #lightseagreen, #lightsteelblue, #lime, #limegreen, #localhost_to_data, #log_directory?, #main_encoding?, #mediumorchid, #mediumpurple, #mediumseagreen, #mediumslateblue, #mediumspringgreen, #mediumturquoise, #mkdir_p, #mv, #n_days_in_this_month, #n_pages_in_this_pdf_file?, #namespace?, #no_file_exists_at, #ogrey, #olive, #olivedrab, #open_in_browser, #opne, #opnesystem, #opnn, #orange, #orchid, #orev, #palegoldenrod, #palevioletred, #pink, #powderblue, #programs_dir?, #project_base_dir?, #random_html_colour, #rds, #read_file_in_iso_encoding, #read_file_via_the_default_encoding, #read_lines_via_iso_encoding, #readlines_with_main_encoding, #red, #register_sigint, #remove, #remove_directory, #remove_file, #rename_kde_konsole_tab, #replace_localhost_with_data, #report_pwd, #require_rescue, #reset_the_internal_hash, #return_all_directories_from_this_directory, #return_all_files_from_this_directory, #return_current_directory, #return_dd_mm_yyyy, #return_file_or_directory_of, #return_files_from_pwd, #return_last_part_of_the_current_directory, #return_utc, #rev, #right_arrow?, #right_colour, #roebe_log_directory?, #rosybrown, #royalblue, #ruby_base_directory?, #run_in_background, #run_rcfiles_then_run_ata_via_qdbus, #sandybrown, #sdir, #seagreen, #set_be_verbose, #set_xorg_buffer, #sfancy, #sfile, #show_help, #silent_redirection?, #simp, #simple_esystem, #skyblue, #slateblue, #slategray, #springgreen, #steelblue, #string_italic, #swarn, #symlink, #teal, #temp_dir?, #to_camelcase, #to_counted_hash, #tomato, #touch, #try_to_require_the_beautiful_url_gem, #try_to_require_the_html_template, #try_to_require_the_open_gem, #try_to_require_the_program_information_gem, #try_to_require_the_xorg_buffer, #use_colours?, #verbose_truth, #weekday?, #word_wrap, #write_what_into, #yellow

Methods included from Base::CommandlineArguments

#append_onto_the_commandline_arguments, #clear_commandline_arguments, #commandline_arguments?, #commandline_arguments_as_string?, #commandline_arguments_without_leading_hyphens?, #first_argument?, #first_argument_without_leading_hyphens?, #has_an_argument_been_passed?, #remove_hyphened_arguments_from_the_commandline_arguments, #return_commandline_arguments_with_leading_hyphens, #second_argument?, #set_commandline_arguments

Constructor Details

#initialize(commandline_arguments = ARGV, run_already = true) ⇒ UploadToImgur

#

initialize

#


61
62
63
64
65
66
67
68
69
70
# File 'lib/roebe/classes/upload_to_imgur.rb', line 61

def initialize(
    commandline_arguments = ARGV,
    run_already           = true
  )
  reset
  set_commandline_arguments(
    commandline_arguments
  )
  run if run_already
end

Instance Method Details

#considering_opening_the_remote_URL_via_a_browser_tab(i = remote_URL? ) ⇒ Object

#

considering_opening_the_remote_URL_via_a_browser_tab

#


100
101
102
103
104
105
106
# File 'lib/roebe/classes/upload_to_imgur.rb', line 100

def considering_opening_the_remote_URL_via_a_browser_tab(
    i = remote_URL?
  )
  if open_via_the_browser?
    open_in_browser(i)
  end
end

#open_via_the_browser?Boolean

#

open_via_the_browser?

#

Returns:

  • (Boolean)


93
94
95
# File 'lib/roebe/classes/upload_to_imgur.rb', line 93

def open_via_the_browser?
  @open_via_the_browser
end

#remote_URL?Boolean Also known as: remote_url?

#

remote_URL?

#

Returns:

  • (Boolean)


187
188
189
# File 'lib/roebe/classes/upload_to_imgur.rb', line 187

def remote_URL?
  @remote_URL
end

#resetObject

#

reset

#


75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/roebe/classes/upload_to_imgur.rb', line 75

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @open_via_the_browser
  #
  # If true then we will open via the browser.
  # ======================================================================= #
  @open_via_the_browser = true
  # ======================================================================= #
  # === @remote_URL
  # ======================================================================= #
  @remote_URL = nil
end

#runObject

#

run (run tag)

#


111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
# File 'lib/roebe/classes/upload_to_imgur.rb', line 111

def run
  image_path = first_commandline_argument?
  if image_path.nil?
    opne 'Please provide a local or remote path to this class.'
    return
  end
  # ======================================================================= #
  # First check whether it is a remote file.
  # ======================================================================= #
  if image_path.start_with?('http')
    # ===================================================================== #
    # We need to cd to the base directory before we do any download
    # activity.
    # ===================================================================== #
    cd :log_directory
    # ===================================================================== #
    # Download it first in this case.
    # ===================================================================== #
    orev "Trying to download #{steelblue(image_path)} next:"
    require 'wget'
    result = Wget.new(image_path) { :no_check_certificate }
    image_path = File.absolute_path(File.basename(result.url?))
  end
  unless image_path.include? '/'
    image_path = File.absolute_path(image_path)
  end
  if File.exist? image_path
    params = {
      image: File.read(image_path)
    }
    request_URL = API_URI.request_uri + ENDPOINTS[:image]
pp request_URL
pp request_URL
pp request_URL
    request = Net::HTTP::Post.new(request_URL)
    # ===================================================================== #
    # Put in the proper form-data into the params next:
    # ===================================================================== #
    request.set_form_data(params)
    request.add_field('Authorization', API_PUBLIC_KEY) # Need the public key here.
    opne 'Building up the web_client with SSL support next ...'
    web_client = Net::HTTP.new(API_URI.host, API_URI.port)
    web_client.use_ssl = true
    web_client.verify_mode = OpenSSL::SSL::VERIFY_NONE
    response = web_client.request(request)
    response_body = response.body
    orev "The whole #{steelblue('response.body')} #{rev}was:"
    e
    e tomato(response_body)
    e
    new_target = File.absolute_path(image_path)
    if File.exist? new_target
      orev 'The local image is at:'
      e
      e "  #{tomato(new_target)}"
      e
    else
      orev 'No local image was found at '+sfile(new_target)+rev+'.'
    end
    opne 'The remote image can be found at:'
    e
    response_body =~ REGEX_FOR_THE_LINK_ENTRY
    @remote_URL = $1.to_s.dup.gsub(/\\/,'') # Also replace \/
    e "  #{steelblue(@remote_URL)}"
    e
    considering_opening_the_remote_URL_via_a_browser_tab
  else
    opne 'Please supply a (valid) path to a local image.'
    opne "The provided argument #{orange(image_path)} is "\
         "not a valid path."
  end
end