googleurlshortener 0.0.1 → 0.0.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.
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.version = Googleurlshortener::VERSION
8
8
  s.authors = ["Martin Kraft"]
9
9
  s.email = ["martinkraft@gmail.com"]
10
- s.homepage = ""
10
+ s.homepage = "https://github.com/mkraft/GoogleUrlShortener"
11
11
  s.summary = %q{Shorten and expand URL's with Google's shortener API.}
12
12
  s.description = %q{Shorten a long URL, get click analylitcs about it, and re-expand it again using Google's URL shortening API.}
13
13
 
@@ -9,6 +9,7 @@ module Googleurlshortener
9
9
 
10
10
  def shorten(long_url)
11
11
  uri = URI("https://www.googleapis.com/urlshortener/v1/url")
12
+ body = ""
12
13
  Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
13
14
  request = Net::HTTP::Post.new uri.request_uri
14
15
  if defined? @auth_token && @auth_token != "" && @auth_token != nil
@@ -16,19 +17,29 @@ module Googleurlshortener
16
17
  end
17
18
  request["Content-Type"] = "application/json"
18
19
  response = http.request(request, "{\"longUrl\": \"#{long_url}\"}")
19
- @body = response.body
20
+ body = response.body
20
21
  end
21
- return JSON.parse(@body)["id"]
22
+ return JSON.parse(body)["id"]
22
23
  end
23
24
 
24
25
  def expand(short_url)
25
- uri = URI("https://www.googleapis.com/urlshortener/v1/url?shortUrl=#{short_url}")
26
- request = Net::HTTP::Get.new(uri.request_uri)
27
- response = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => uri.scheme == 'https') {|http|
28
- http.request(request)
29
- }
30
- return JSON.parse(response.body)["longUrl"]
26
+ json = get_json_response("https://www.googleapis.com/urlshortener/v1/url?shortUrl=#{short_url}")
27
+ return json["longUrl"]
31
28
  end
29
+
30
+ private
31
+
32
+ def get_json_response(url)
33
+ uri = URI(url)
34
+ request = Net::HTTP::Get.new(uri.request_uri)
35
+ if self.class.name == "Googleurlshortener::Authenticated"
36
+ request['Authorization'] = @auth_token
37
+ end
38
+ response = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => uri.scheme == 'https') {|http|
39
+ http.request(request)
40
+ }
41
+ return JSON.parse(response.body)
42
+ end
32
43
 
33
44
  end
34
45
 
@@ -39,27 +50,22 @@ module Googleurlshortener
39
50
  end
40
51
 
41
52
  def analytics(short_url)
42
- uri = URI("https://www.googleapis.com/urlshortener/v1/url?shortUrl=#{short_url}&projection=FULL")
43
- request = Net::HTTP::Get.new(uri.request_uri)
44
- request['Authorization'] = @auth_token
45
- response = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => uri.scheme == 'https') {|http|
46
- http.request(request)
47
- }
48
- return JSON.parse(response.body)
53
+ return get_json_response("https://www.googleapis.com/urlshortener/v1/url?shortUrl=#{short_url}&projection=FULL")
49
54
  end
50
55
 
51
56
  private
52
57
 
53
58
  def get_authentication_token(email, password)
54
59
  uri = URI("https://www.google.com/accounts/ClientLogin")
60
+ body = ""
55
61
  Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
56
62
  request = Net::HTTP::Post.new uri.request_uri
57
63
  data = "accountType=HOSTED_OR_GOOGLE&Email=#{email}&Passwd=#{password}&service=lh2&source=someapp1"
58
64
  response = http.request(request, data)
59
- @body = response.body
65
+ body = response.body
60
66
  end
61
- start_index = @body.index('Auth=')
62
- slice_of_auth_to_end = @body[start_index..-1]
67
+ start_index = body.index('Auth=')
68
+ slice_of_auth_to_end = body[start_index..-1]
63
69
  end_index = slice_of_auth_to_end.index("\n")
64
70
  auth_string = slice_of_auth_to_end[0...end_index]
65
71
  auth_token = "GoogleLogin #{auth_string}"
@@ -1,3 +1,3 @@
1
1
  module Googleurlshortener
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: googleurlshortener
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -27,7 +27,7 @@ files:
27
27
  - lib/googleurlshortener.rb
28
28
  - lib/googleurlshortener/version.rb
29
29
  - test/test_url_shortener.rb
30
- homepage: ''
30
+ homepage: https://github.com/mkraft/GoogleUrlShortener
31
31
  licenses: []
32
32
  post_install_message:
33
33
  rdoc_options: []