-
-
Save ahoward/1105733 to your computer and use it in GitHub Desktop.
| #! /usr/bin/env ruby | |
| Main { | |
| name 'gist' | |
| description <<-__ | |
| command line script for writing and reading to http://gist.github.com/ | |
| __ | |
| examples <<-__ | |
| . gist a file, display the url on stdout. also copy url to clipboard. | |
| ~> gist a.rb | |
| . gist a file. printing gisted content on stdout. note that this | |
| behaviour makes gist work great as a file in vim/emacs. the location | |
| of the gist is still copied to the clipboard. | |
| ~> gist a.rb | cat | |
| . same, but privately | |
| ~> gist a.rb | cat | |
| . same, but specify ext | |
| ~> gist a.txt --ext .rb | cat | |
| . same, but give the file name (ext is derived) | |
| ~> gist javascript.txt --name awesome.js | |
| __ | |
| option('--private', '-p'){ | |
| default false | |
| } | |
| option('--name=name', '-n'){ | |
| default 'gist.rb' | |
| } | |
| option('--ext=ext', '-e'){ | |
| default '.rb' | |
| } | |
| option('--debug', '-d'){ | |
| } | |
| def run | |
| abort('no auth!') if auth.empty? | |
| @private = !!param['private'].given? | |
| @name = param['name'].value | |
| @ext = param['ext'].value | |
| content = process(argv) | |
| @private = !!@private | |
| @name = File.basename(@name) | |
| @ext = @ext.sub(/^[.]*/, '.') | |
| options = { | |
| :private => @private, | |
| :name => @name, | |
| :ext => @ext | |
| } | |
| gisted = gist(content, options) | |
| if STDIN.tty? | |
| STDOUT.puts(gisted.location) | |
| else | |
| STDOUT.write(gisted) | |
| end | |
| end | |
| def process(*paths) | |
| paths.flatten! | |
| paths.compact! | |
| paths.uniq! | |
| stdin = paths.delete('-') | |
| stdin = true if paths.empty? | |
| content = stdin ? STDIN.read : '' | |
| exts = [] | |
| names = [] | |
| paths.each do |path| | |
| content += IO.read(path) | |
| basename = File.basename(path) | |
| base, ext = basename.split(/[.]/, 2) | |
| names.push(basename) | |
| exts.push(ext) if ext | |
| end | |
| unless params['ext'].given? | |
| ext = exts.last | |
| @ext = ".#{ ext }" if ext | |
| end | |
| unless params['name'].given? | |
| name = names.last | |
| @name = name if name | |
| end | |
| content | |
| end | |
| def gist(content, options = {}) | |
| url = URI.parse('https://gist.github.com/gists') | |
| form = form_for(content, options) | |
| req = post(url, form) | |
| location = req['Location'] | |
| class << content | |
| attr_accessor :location | |
| end | |
| content.location = location | |
| copy(location) | |
| content | |
| end | |
| def post(url, params) | |
| url = URI.parse(url.to_s) unless url.is_a?(URI) | |
| req = Net::HTTP::Post.new(url.path) | |
| req.form_data = params | |
| http = Net::HTTP.new(url.host, url.port) | |
| main = self | |
| http.instance_eval do | |
| @debug_output = $stderr if main.params['debug'].given? | |
| http.use_ssl = true | |
| @ssl_context = OpenSSL::SSL::SSLContext.new | |
| @ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE | |
| end | |
| http.start{|http| http.request(req)} | |
| end | |
| def form_for(content, options) | |
| form = {} | |
| form['file_contents[gistfile1]'] = content.to_s | |
| form['file_ext[gistfile1]'] = options[:ext] | |
| form['file_name[gistfile1]'] = options[:name] | |
| form['private'] = 'on' if options[:private] | |
| form.merge(auth) | |
| end | |
| def auth | |
| return @auth if defined?(@auth) | |
| user = `git config --global github.user`.strip | |
| token = `git config --global github.token`.strip | |
| @auth = user.empty? ? {} : {:login => user, :token => token} | |
| end | |
| def copy(content) | |
| @copied = content.to_s.strip | |
| program = | |
| case RUBY_PLATFORM | |
| when /darwin/ | |
| pbcopy | |
| when /linux/ | |
| xclip | |
| end | |
| IO.popen(program, 'r+'){|pipe| pipe.write(@copied)} if program | |
| @copied | |
| end | |
| def which(program) | |
| stdout = `which #{ program }`.strip | |
| path = stdout == '' ? nil : stdout | |
| end | |
| def pbcopy | |
| return @pbcopy if defined?(@pbcopy) | |
| @pbcopy = which(:pbcopy) | |
| end | |
| def xclip | |
| return @xclip if defined?(@xclip) | |
| @xclip = which(:xclip) | |
| end | |
| mode(:read) do | |
| def run | |
| ids = argv | |
| ids.each do |id| | |
| url = 'https://gist.github.com/%s.txt' % id | |
| content = get(url).body | |
| STDOUT.write(content) | |
| end | |
| end | |
| def get(url) | |
| url = URI.parse(url.to_s) unless url.is_a?(URI) | |
| req = Net::HTTP::Get.new(url.path) | |
| http = Net::HTTP.new(url.host, url.port) | |
| main = self | |
| http.instance_eval do | |
| @debug_output = $stderr if main.params['debug'].given? | |
| http.use_ssl = true | |
| @ssl_context = OpenSSL::SSL::SSLContext.new | |
| @ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE | |
| end | |
| http.start{|http| http.request(req)} | |
| end | |
| end | |
| } | |
| BEGIN { | |
| require 'open-uri' | |
| require 'net/http' | |
| require 'net/https' | |
| require 'rubygems' | |
| require 'main' | |
| } |
{
"status_code": 200,
"message": "Delivery options",
"response": [
{
"water_vendor_holiday": {
"timeslotsTemp": [],
"isHoliday": 0
},
"water_vendor_id": "62e8ece53710e99fe8e4f250",
"vendor_locations": [
{
"_id": "635f9530f555282a18783668",
"email": "[email protected]",
"attributeId": "62e8ece53710e99fe8e4f250",
"time_slots": [
"08:00 am to 05:00 pm",
"08:00 am to 07:00 pm"
],
"name": "Cool blue",
"city": "xx",
"landmark": "xx",
"area": "xx",
"detail_address": "xxx",
"mobile_no": "783776499",
"country_code": "+255"
}
],
"user_locations": {
"_id": "6411ad4f6f0c6187b080b1db",
"email": "[email protected]",
"created_on": "2023-03-15T11:20:58.322Z",
"attributeId": "63ea30cd871526476c215df2",
"time_slots": [
"02:00 pm to 04:00 pm"
],
"future_time_slots": [],
"name": "adfg",
"city": "ds",
"landmark": "sal",
"area": "sld",
"detail_address": "addl",
"mobile_no": "(+255)-998-877-112-1",
"country_code": "+255",
"lat": "12.00",
"lng": "13.00",
"address_type": "SokoniVendor",
"minimum_order": 0,
"__v": 0,
"user_id": "64abd6a3a47ee823d4965809"
},
"delivery_charge": {
"deliveryCharge": 0,
"deliveryNotAllowed": false,
"geoWaterMessage": "\n"
},
"delivery_charge_old": {
"deliveryCharge": 0,
"deliveryNotAllowed": false,
"geoWaterMessage": "\n"
},
"water_vendor_status": 0,
"water_vendor_status_text": "PRE ORDER",
"delivery_branch_id": "62e8ece53710e99fe8e4f250",
"day_wise_data": [
{
"date_to_show": "2023-10-12",
"day_to_show": "Thursday",
"time_slot": [
{
"_id": "63281a605a592016da617e9f",
"starttime": 13,
"endtime": 14,
"starthour": 13,
"startminute": 0,
"endhour": 14,
"endminute": 0,
"display_txt": "01:00 pm to 02:00 pm"
},
{
"_id": "63281b025a592016da617ea8",
"starttime": 14,
"endtime": 15,
"starthour": 14,
"startminute": 0,
"endhour": 15,
"endminute": 0,
"display_txt": "02:00 pm to 03:00 pm"
},
{
"_id": "6393252b2d4f1d3934c562fb",
"starttime": 15,
"endtime": 16,
"starthour": 15,
"startminute": 0,
"endhour": 16,
"endminute": 0,
"display_txt": "03:00 pm to 04:00 pm"
},
{
"_id": "639331ba6933f215841004ca",
"starttime": 16,
"endtime": 17,
"starthour": 16,
"startminute": 0,
"endhour": 17,
"endminute": 0,
"display_txt": "04:00 pm to 05:00 pm"
}
]
},
{
"date_to_show": "2023-10-15",
"day_to_show": "Sunday",
"time_slot": [
{
"_id": "63281a605a592016da617e9f",
"starttime": 13,
"endtime": 14,
"starthour": 13,
"startminute": 0,
"endhour": 14,
"endminute": 0,
"display_txt": "01:00 pm to 02:00 pm"
},
{
"_id": "63281b025a592016da617ea8",
"starttime": 14,
"endtime": 15,
"starthour": 14,
"startminute": 0,
"endhour": 15,
"endminute": 0,
"display_txt": "02:00 pm to 03:00 pm"
},
{
"_id": "6393252b2d4f1d3934c562fb",
"starttime": 15,
"endtime": 16,
"starthour": 15,
"startminute": 0,
"endhour": 16,
"endminute": 0,
"display_txt": "03:00 pm to 04:00 pm"
},
{
"_id": "639331ba6933f215841004ca",
"starttime": 16,
"endtime": 17,
"starthour": 16,
"startminute": 0,
"endhour": 17,
"endminute": 0,
"display_txt": "04:00 pm to 05:00 pm"
}
]
},
{
"date_to_show": "2023-10-16",
"day_to_show": "Monday",
"time_slot": [
{
"_id": "63281a605a592016da617e9f",
"starttime": 13,
"endtime": 14,
"starthour": 13,
"startminute": 0,
"endhour": 14,
"endminute": 0,
"display_txt": "01:00 pm to 02:00 pm"
},
{
"_id": "63281b025a592016da617ea8",
"starttime": 14,
"endtime": 15,
"starthour": 14,
"startminute": 0,
"endhour": 15,
"endminute": 0,
"display_txt": "02:00 pm to 03:00 pm"
},
{
"_id": "6393252b2d4f1d3934c562fb",
"starttime": 15,
"endtime": 16,
"starthour": 15,
"startminute": 0,
"endhour": 16,
"endminute": 0,
"display_txt": "03:00 pm to 04:00 pm"
},
{
"_id": "639331ba6933f215841004ca",
"starttime": 16,
"endtime": 17,
"starthour": 16,
"startminute": 0,
"endhour": 17,
"endminute": 0,
"display_txt": "04:00 pm to 05:00 pm"
}
]
}
]
}
],
"is_multi_vendor": 0,
"total_delivery_charge": "",
"delivery_type": "Pick_Up_Delivery"
}
why i'm here
Hello
Wow, an other thing didn't know existed. Now have to learn and don't know when and where will I use it.
i don't know why i do this.
Why git hub gists keeps redirecting me to this, i was just exploring git and found about this feature but when i clicked on gists it took me here
👆