link_shrink 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/Changelog.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # LinkShrink Changelog
2
2
 
3
+ ## 0.0.4
4
+
5
+ Released September 6, 2013 ([0.0.4](https://github.com/jonahoffline/link_shrink/tree/v0.0.4)).
6
+
7
+ * Refactor complex method in Request module (#process_response).
8
+ * Update version to 0.0.4
9
+ * Add coveralls badge.
10
+
3
11
  ## 0.0.3
4
12
 
5
13
  Released September 6, 2013 ([0.0.3](https://github.com/jonahoffline/link_shrink/tree/v0.0.3)).
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
- LinkShrink [![Build Status](https://travis-ci.org/jonahoffline/link_shrink.png?branch=master)](https://travis-ci.org/jonahoffline/link_shrink) [![Gem Version](https://badge.fury.io/rb/link_shrink.png)](http://badge.fury.io/rb/link_shrink) [![Dependency Status](https://gemnasium.com/jonahoffline/link_shrink.png)](https://gemnasium.com/jonahoffline/link_shrink) [![Code Climate](https://codeclimate.com/github/jonahoffline/link_shrink.png)](https://codeclimate.com/github/jonahoffline/link_shrink)
2
- =================
1
+ # LinkShrink
2
+ [![Build Status](https://travis-ci.org/jonahoffline/link_shrink.png?branch=master)](https://travis-ci.org/jonahoffline/link_shrink) [![Gem Version](https://badge.fury.io/rb/link_shrink.png)](http://badge.fury.io/rb/link_shrink) [![Dependency Status](https://gemnasium.com/jonahoffline/link_shrink.png)](https://gemnasium.com/jonahoffline/link_shrink) [![Coverage Status](https://coveralls.io/repos/jonahoffline/link_shrink/badge.png?branch=master)](https://coveralls.io/r/jonahoffline/link_shrink?branch=master) [![Code Climate](https://codeclimate.com/github/jonahoffline/link_shrink.png)](https://codeclimate.com/github/jonahoffline/link_shrink)
3
3
 
4
4
  A Ruby Gem and Command-Line Application for shrinking those long and nasty links into a shorter URL
5
5
 
@@ -68,7 +68,6 @@ LinkShrink::Config.api = 'TinyUrl'
68
68
  LinkShrink.shrink_url('http://www.google.com')
69
69
  => "http://tinyurl.com/1c2"
70
70
 
71
-
72
71
  ```
73
72
 
74
73
 
@@ -11,11 +11,18 @@ module LinkShrink
11
11
  module_function
12
12
 
13
13
  def process_request(url, options, shrinker = LinkShrink::Config.api)
14
- process_response(request(url, shrinker).body, options, shrinker)
14
+ parse(request(url, shrinker).body, options, shrinker)
15
+ end
16
+
17
+ def parse(response, options, shrinker)
18
+ if shrinker.content_type.eql?('text/plain')
19
+ response
20
+ else
21
+ process_response(response, options, shrinker)
22
+ end
15
23
  end
16
24
 
17
25
  def process_response(response, options, shrinker, json = JSONParser)
18
- return response if shrinker.content_type.eql?('text/plain')
19
26
  option = Options.new(options)
20
27
  parsed_json = json.parse_json(response)
21
28
  plain = parsed_json['id']
@@ -45,12 +52,12 @@ module LinkShrink
45
52
  # Calls URL API
46
53
  # @see LinkShrink::Shrinkers::Base#api_url
47
54
  # @see LinkShrink::Shrinkers::Base#body_parameters
48
- def request(url, shrinker)
49
- shrinker.url = url
55
+ def request(new_url, shrinker)
56
+ shrinker.url = new_url
50
57
  Typhoeus::Request.new(
51
58
  shrinker.api_url,
52
59
  method: shrinker.http_method,
53
- body: shrinker.body_parameters(url),
60
+ body: shrinker.body_parameters(shrinker.url),
54
61
  headers: { 'Content-Type' => shrinker.content_type }
55
62
  ).run
56
63
  end
@@ -1,3 +1,3 @@
1
1
  module LinkShrink
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -18,4 +18,14 @@ describe LinkShrink::JSONParser do
18
18
  .to eq('{"kind":"urlshortener#url","id":"http://goo.gl/fbsS","longUrl":"http://www.google.com/"}')
19
19
  end
20
20
  end
21
+
22
+ describe '.included' do
23
+ it 'extends self' do
24
+ dummy_class = Class.new do
25
+ include LinkShrink::JSONParser
26
+ end
27
+
28
+ expect(dummy_class.included_modules).to include(LinkShrink::JSONParser)
29
+ end
30
+ end
21
31
  end
@@ -2,6 +2,10 @@ require 'spec_helper'
2
2
 
3
3
  describe LinkShrink::Request do
4
4
  include_examples 'shared_examples'
5
+ before :each do
6
+ LinkShrink.configure { |c| c.api = 'Google'}
7
+ end
8
+
5
9
  let(:shrinker) { LinkShrink::Config.api }
6
10
  let(:json_default) {{ :json => false }}
7
11
 
@@ -52,4 +56,16 @@ describe LinkShrink::Request do
52
56
  .to be_kind_of(Typhoeus::Response)
53
57
  end
54
58
  end
59
+
60
+ describe '#parse' do
61
+ context 'when response is text/plain' do
62
+ it 'returns response' do
63
+ LinkShrink.configure { |c| c.api = 'TinyUrl'}
64
+ response = link_shrink.request(url, shrinker).body
65
+
66
+ expect(link_shrink.parse(response, {json: false}, shrinker))
67
+ .to eq('http://tinyurl.com/1c2')
68
+ end
69
+ end
70
+ end
55
71
  end
@@ -131,4 +131,37 @@ http_interactions:
131
131
  \ ],\n \"code\": 400,\n \"message\": \"Bad Request\"\n }\n}\n"
132
132
  http_version:
133
133
  recorded_at: Fri, 06 Sep 2013 08:25:30 GMT
134
+ - request:
135
+ method: get
136
+ uri: http://tinyurl.com/api-create.php?url=http://www.google.com
137
+ body:
138
+ encoding: US-ASCII
139
+ string: ''
140
+ headers:
141
+ User-Agent:
142
+ - Typhoeus - https://github.com/typhoeus/typhoeus
143
+ Content-Type:
144
+ - text/plain
145
+ response:
146
+ status:
147
+ code: 200
148
+ message: OK
149
+ headers:
150
+ X-Powered-By:
151
+ - PHP/5.4.13
152
+ Content-Type:
153
+ - text/plain
154
+ Connection:
155
+ - close
156
+ Transfer-Encoding:
157
+ - chunked
158
+ Date:
159
+ - Fri, 06 Sep 2013 11:31:45 GMT
160
+ Server:
161
+ - TinyURL/1.6
162
+ body:
163
+ encoding: US-ASCII
164
+ string: http://tinyurl.com/1c2
165
+ http_version:
166
+ recorded_at: Fri, 06 Sep 2013 11:31:47 GMT
134
167
  recorded_with: VCR 2.5.0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: link_shrink
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -230,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
230
230
  version: '0'
231
231
  segments:
232
232
  - 0
233
- hash: -388181440517617826
233
+ hash: 1243110028426905467
234
234
  requirements: []
235
235
  rubyforge_project:
236
236
  rubygems_version: 1.8.25