shika_joke 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/bin/shika_joke +47 -0
  3. data/shika_joke.gemspec +14 -0
  4. metadata +45 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 7710b073950c0a2143ee0c93a3cf36dbb5d73eef515d98ef87686a7d748c2dd0
4
+ data.tar.gz: 705bd9fb86fd9a5ed0be801f9bc6e7a99be28ad5332a407204814155bc5561f0
5
+ SHA512:
6
+ metadata.gz: c8a3ae0ffeb45e4a12128d8f42bf53e8f2ef02ced25f00dc89347ee4ef44962e7ee1d00ab918be45da9f1bbbfbd276cacd84fd718ea47752cb59f76b008abeae
7
+ data.tar.gz: 7d91b68469cd4c3554fb9504b5e7d810071b500a05a1bc8aed81276a9cdf57b91a0260d7b112e268c707a9342a22b26543c0a84cb051734a00185e22baab2364
data/bin/shika_joke ADDED
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'optparse'
4
+ require 'net/http'
5
+ require 'uri'
6
+ require 'json'
7
+ require 'rack'
8
+
9
+ options = {}
10
+
11
+ parser = OptionParser.new do |parser|
12
+ parser.on("-f", "--first-name FIRST_NAME", "Replacement for Chuck's first name")
13
+ parser.on("-l", "--last-name LAST_NAME", "Replacement for Chuck's last name")
14
+ parser.on("-r", "--random RANDOM_JOKES_COUNT", "Render n random jokes")
15
+
16
+ parser.on("-h", "--help", "Prints this help") do
17
+ puts parser
18
+ exit
19
+ end
20
+ end
21
+
22
+ parser.parse!(into: options)
23
+
24
+ base_url = "http://api.icndb.com/jokes/random"
25
+ base_url += "/#{options.fetch(:random)}" if options.key?(:random)
26
+ uri = URI(base_url)
27
+ query = {
28
+ 'firstName' => options[:'first-name'],
29
+ 'lastName' => options[:'last-name']
30
+ }.delete_if { |key, value| value.nil? }
31
+ uri.query = Rack::Utils.build_query(query) unless query.empty?
32
+
33
+ response = Net::HTTP.get_response(uri).body
34
+ parsed_response = JSON.load(response)
35
+
36
+ if parsed_response['type'] == 'success'
37
+ value = parsed_response['value']
38
+ value = [value] if value.is_a?(Hash)
39
+
40
+ value.each_with_index do |joke, index|
41
+ puts ''
42
+ puts "Joke ##{index + 1}: #{joke['joke']}"
43
+ end
44
+ puts ''
45
+ else
46
+ puts 'Something went wrong, please try again'
47
+ end
@@ -0,0 +1,14 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "shika_joke"
3
+ s.version = "0.0.0"
4
+ s.summary = "Haha jokes!"
5
+ s.description = "A simple Chuck Norris joke generator gem"
6
+ s.authors = ["Dinh Trong Dat"]
7
+ s.email = "trongdatdinh1@gmail.com"
8
+ s.files = ["lib/shika_joke.rb"]
9
+ s.files = `git ls-files`.split($\)
10
+ s.bindir = 'bin'
11
+ s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
12
+ s.homepage = "https://github.com/trongdatdinh1"
13
+ s.license = "MIT"
14
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shika_joke
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Dinh Trong Dat
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-08-21 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A simple Chuck Norris joke generator gem
14
+ email: trongdatdinh1@gmail.com
15
+ executables:
16
+ - shika_joke
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - bin/shika_joke
21
+ - shika_joke.gemspec
22
+ homepage: https://github.com/trongdatdinh1
23
+ licenses:
24
+ - MIT
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubygems_version: 3.0.3
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: Haha jokes!
45
+ test_files: []