dad_jokes 0.1.1 → 0.1.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6458e7c7dea8b3f11a0781a7c001bcca45c25784
4
- data.tar.gz: fbb508013a6343ab5f5ae3b4eb12b1bdec296b29
3
+ metadata.gz: 1a1ca86fccc05f9065e9b065c7669e0034661554
4
+ data.tar.gz: bb45121a2a6acf3ea48a7c673ea67e69881b9948
5
5
  SHA512:
6
- metadata.gz: 4ed3ca953555fab8d47375cc1e60e425d1814ceb20037d1e9fa228dd53565b1c9627cd0b402876c96653211b024fd65788b6dc3ed5559afdf4161c256cfd7048
7
- data.tar.gz: 5425d892c8398142888c50d991419ba910b9b9698efabe1229db83b3c72c4f6c10e881cda338d7c9eb833aec89d6d74ab33c30499d7b9f984df4232813efd2de
6
+ metadata.gz: baa66da84ea54254ea6ae94c65024e925f664e681b90ec5bc157a5faedba9bbebccdfcdd17a55ac09774b4ceec67b622e40710741dad5d2d41f877248aad6a65
7
+ data.tar.gz: 8e247ae1fdc2d7901917317c548cb524f11f869e22b31225de2cdc837c45785e2c5f93a408d03502c0bc96145dd798a3fab26eaa78bf2a3868da0fef512202b7
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ *.gem
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
- And then execute:
20
+ and then execute:
19
21
 
20
22
  $ bundle
21
23
 
22
- Or install it yourself as:
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
- #### #1 Generate a random Dad joke
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 : ``Why didn’t the skeleton cross the road? Because he had no guts.``
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
- #### #2 Search for Dad jokes
48
+ #### 2. Search for Dad jokes
39
49
 
40
50
  ``` ruby
41
- DadJokes.search(term:, limit:)
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
- * _term:_
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
- - Default : <b>5 jokes</b>
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
+
@@ -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 = ["aswinsanakan"]
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
@@ -2,11 +2,11 @@ require "dad_jokes/version"
2
2
  require "faraday"
3
3
  require "faraday_middleware"
4
4
  require "json"
5
- require 'pry'
5
+ require 'open-uri'
6
6
 
7
7
  module DadJokes
8
8
 
9
- API_URL = "https://icanhazdadjoke.com/".freeze
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
- # binding.pry
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.parse_response(body)
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
@@ -1,3 +1,3 @@
1
1
  module DadJokes
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
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.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
- - aswinsanakan
7
+ - Aswin Sanakan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-26 00:00:00.000000000 Z
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: []