dad_jokes 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +47 -12
- data/dad_jokes.gemspec +5 -6
- data/lib/dad_jokes.rb +32 -6
- data/lib/dad_jokes/version.rb +1 -1
- metadata +17 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a1ca86fccc05f9065e9b065c7669e0034661554
|
4
|
+
data.tar.gz: bb45121a2a6acf3ea48a7c673ea67e69881b9948
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: baa66da84ea54254ea6ae94c65024e925f664e681b90ec5bc157a5faedba9bbebccdfcdd17a55ac09774b4ceec67b622e40710741dad5d2d41f877248aad6a65
|
7
|
+
data.tar.gz: 8e247ae1fdc2d7901917317c548cb524f11f869e22b31225de2cdc837c45785e2c5f93a408d03502c0bc96145dd798a3fab26eaa78bf2a3868da0fef512202b7
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -5,56 +5,91 @@
|
|
5
5
|
<br/>
|
6
6
|
|
7
7
|
Welcome to <b>Dad Jokes</b>! <br/>
|
8
|
+
_( Wait, [what's a Dad joke?](https://en.wikipedia.org/wiki/Dad_joke) )_ <br/>
|
9
|
+
|
8
10
|
Generate random dad jokes using this gem.
|
9
11
|
|
10
12
|
## Installation
|
11
13
|
|
12
|
-
Add this line to your application's Gemfile:
|
14
|
+
<b>1.</b> Add this line to your application's Gemfile:
|
13
15
|
|
14
16
|
``` ruby
|
15
17
|
gem 'dad_jokes'
|
16
18
|
```
|
17
19
|
|
18
|
-
|
20
|
+
and then execute:
|
19
21
|
|
20
22
|
$ bundle
|
21
23
|
|
22
|
-
|
24
|
+
<b>OR,</b>
|
25
|
+
|
26
|
+
<b>2.</b> Install it yourself as:
|
23
27
|
|
24
28
|
$ gem install dad_jokes
|
25
29
|
|
30
|
+
and require in your script as :
|
31
|
+
```ruby
|
32
|
+
require 'dad_jokes'
|
33
|
+
```
|
34
|
+
|
26
35
|
## Usage
|
27
36
|
|
28
|
-
####
|
37
|
+
#### 1. Get a random Dad joke
|
29
38
|
|
30
39
|
``` ruby
|
40
|
+
# Get a random joke
|
31
41
|
DadJokes.random
|
32
42
|
```
|
33
43
|
|
34
|
-
Sample Output #1 : ``"Dad, I'm hungry." "Hello, Hungry. I'm Dad."``
|
44
|
+
Sample Output #1 : ``'"Dad, I'm hungry." "Hello, Hungry. I'm Dad."'``
|
35
45
|
|
36
|
-
Sample Output #2 : ``
|
46
|
+
Sample Output #2 : ``'My dog used to chase people on a bike a lot. It got so bad I had to take his bike away.'``
|
37
47
|
|
38
|
-
####
|
48
|
+
#### 2. Search for Dad jokes
|
39
49
|
|
40
50
|
``` ruby
|
41
|
-
|
51
|
+
# Get array of jokes by passing a search term ; and setting limit(optional)
|
52
|
+
DadJokes.search(term: "cannibal", limit: 1)
|
42
53
|
```
|
43
54
|
|
44
|
-
|
55
|
+
Output : ``["A cannibal is someone who is fed up with people."]``
|
56
|
+
|
57
|
+
* _term :_
|
45
58
|
- (**required*)
|
46
59
|
- Search term goes here
|
47
|
-
* _limit:_
|
60
|
+
* _limit :_
|
48
61
|
- (**optional*)
|
49
62
|
- Set limit for the number of jokes (because, obviously you're tired of laughing!).
|
50
|
-
-
|
63
|
+
- By default : <b>5 jokes</b>
|
64
|
+
|
65
|
+
#### 3. Generate & save a random joke as image (in .png format)
|
66
|
+
|
67
|
+
```ruby
|
68
|
+
# Saves a random joke in png format
|
69
|
+
DadJokes.random_image
|
70
|
+
```
|
51
71
|
|
72
|
+
_Sample Vector image :_ <br>
|
73
|
+
![Random Joke](./img/joke_vX8MeFdUDlb.png)
|
74
|
+
|
75
|
+
_Output to console :_ <br>
|
76
|
+
``"Dad died because he couldn't remember his blood type. I will never forget his last words. Be positive. ( Saved as image in location: joke_vX8MeFdUDlb.png !)"``
|
77
|
+
|
78
|
+
|
79
|
+
<b>NOTE:</b> If you're inside a Rails project, image will be saved to root of the directory. Otherwise, if you're running the method in a ruby script, the image will be saved in the relative directory.
|
80
|
+
|
52
81
|
## Contributing
|
53
82
|
|
54
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/aswinsanakan/dad_jokes. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
83
|
+
[Bug reports](https://github.com/aswinsanakan/dad_jokes/issues) and pull requests are welcome on GitHub at https://github.com/aswinsanakan/dad_jokes. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
55
84
|
|
85
|
+
Thanks to [icanhazdadjoke](https://icanhazdadjoke.com/) for the free API.
|
86
|
+
You can submit new jokes [here](https://icanhazdadjoke.com/submit).
|
56
87
|
|
57
88
|
## License
|
58
89
|
|
59
90
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
60
91
|
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
|
data/dad_jokes.gemspec
CHANGED
@@ -6,11 +6,11 @@ require 'dad_jokes/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "dad_jokes"
|
8
8
|
spec.version = DadJokes::VERSION
|
9
|
-
spec.authors = ["
|
9
|
+
spec.authors = ["Aswin Sanakan"]
|
10
10
|
spec.email = ["aswinsanakan@gmail.com"]
|
11
11
|
|
12
12
|
spec.summary = %q{Gem to generate random popular Dad Jokes.}
|
13
|
-
spec.description = %q{Gem to generate random popular Dad Jokes.}
|
13
|
+
spec.description = %q{Gem to generate random popular Dad Jokes. Features include: Generating jokes, Search for jokes, Save a random joke as image (as .png), etc}
|
14
14
|
spec.homepage = "https://github.com/aswinsanakan/dad_jokes"
|
15
15
|
spec.license = "MIT"
|
16
16
|
|
@@ -34,8 +34,7 @@ Gem::Specification.new do |spec|
|
|
34
34
|
spec.add_development_dependency "rake", "~> 10.0"
|
35
35
|
spec.add_development_dependency "minitest", "~> 5.0"
|
36
36
|
|
37
|
-
spec.add_dependency "json"
|
38
|
-
spec.add_dependency "faraday"
|
39
|
-
spec.add_dependency "faraday_middleware"
|
40
|
-
spec.add_dependency "pry"
|
37
|
+
spec.add_dependency "json", '~> 1.8'
|
38
|
+
spec.add_dependency "faraday", '~> 0.13.1'
|
39
|
+
spec.add_dependency "faraday_middleware", '~> 0.12.2'
|
41
40
|
end
|
data/lib/dad_jokes.rb
CHANGED
@@ -2,11 +2,11 @@ require "dad_jokes/version"
|
|
2
2
|
require "faraday"
|
3
3
|
require "faraday_middleware"
|
4
4
|
require "json"
|
5
|
-
require '
|
5
|
+
require 'open-uri'
|
6
6
|
|
7
7
|
module DadJokes
|
8
8
|
|
9
|
-
API_URL = "https://icanhazdadjoke.com
|
9
|
+
API_URL = "https://icanhazdadjoke.com".freeze
|
10
10
|
API_HEADERS = {"Accept": "application/json"}
|
11
11
|
DEFAULT_LIMIT = 5
|
12
12
|
|
@@ -16,6 +16,18 @@ module DadJokes
|
|
16
16
|
get_joke(joke_object)
|
17
17
|
end
|
18
18
|
|
19
|
+
def self.random_image
|
20
|
+
uri = "/"
|
21
|
+
joke_object = parse_response(uri)
|
22
|
+
joke_id = get_id(joke_object)
|
23
|
+
image_uri = "/j/#{joke_id}.png"
|
24
|
+
url = File.join(API_URL, image_uri).to_s
|
25
|
+
download = open(url)
|
26
|
+
path = get_image_save_path(joke_id)
|
27
|
+
IO.copy_stream(download, path)
|
28
|
+
"#{get_joke(joke_object)} ( Saved as image in location: #{path} !)"
|
29
|
+
end
|
30
|
+
|
19
31
|
def self.fetch(joke_id:)
|
20
32
|
uri = "/j/#{joke_id}"
|
21
33
|
joke_object = parse_response(uri)
|
@@ -41,9 +53,12 @@ module DadJokes
|
|
41
53
|
joke_object['joke']
|
42
54
|
end
|
43
55
|
|
56
|
+
def self.get_id(joke_object)
|
57
|
+
joke_object['id']
|
58
|
+
end
|
59
|
+
|
44
60
|
def self.filter_jokes(jokes_hash)
|
45
|
-
|
46
|
-
jokes_arr = jokes_hash['results']
|
61
|
+
jokes_arr = jokes_hash['results'] || []
|
47
62
|
jokes = []
|
48
63
|
jokes_arr.each do |joke|
|
49
64
|
jokes << joke['joke']
|
@@ -55,8 +70,19 @@ module DadJokes
|
|
55
70
|
Faraday.new(url: API_URL, headers: API_HEADERS)
|
56
71
|
end
|
57
72
|
|
58
|
-
def self.
|
59
|
-
|
73
|
+
def self.get_image_save_path(joke_id)
|
74
|
+
if in_rails_app?
|
75
|
+
File.join(Rails.root,"public","dadjokes","joke_#{joke_id}.png")
|
76
|
+
else
|
77
|
+
"joke_#{joke_id}.png"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def self.in_rails_app?
|
82
|
+
klass = Module.const_get("Rails")
|
83
|
+
return klass.is_a?(Module)
|
84
|
+
rescue NameError
|
85
|
+
return false
|
60
86
|
end
|
61
87
|
|
62
88
|
end
|
data/lib/dad_jokes/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dad_jokes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Aswin Sanakan
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -56,59 +56,46 @@ dependencies:
|
|
56
56
|
name: json
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '1.8'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '1.8'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: faraday
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 0.13.1
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 0.13.1
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: faraday_middleware
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :runtime
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: pry
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
87
|
+
- - "~>"
|
102
88
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
89
|
+
version: 0.12.2
|
104
90
|
type: :runtime
|
105
91
|
prerelease: false
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|
108
|
-
- - "
|
94
|
+
- - "~>"
|
109
95
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
111
|
-
description: Gem to generate random popular Dad Jokes.
|
96
|
+
version: 0.12.2
|
97
|
+
description: 'Gem to generate random popular Dad Jokes. Features include: Generating
|
98
|
+
jokes, Search for jokes, Save a random joke as image (as .png), etc'
|
112
99
|
email:
|
113
100
|
- aswinsanakan@gmail.com
|
114
101
|
executables: []
|