google_image_api 0.0.1

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.
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ .DS_Store
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in google_image_api.gemspec
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "google_image_api/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "google_image_api"
7
+ s.version = GoogleImageApi::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["sb4m"]
10
+ s.email = ["sb4m.01@gmail.com"]
11
+ s.homepage = "https://github.com/sb4m/google_image_api"
12
+ s.summary = %q{Access to google image api}
13
+ s.description = %q{simplify access to google image api}
14
+
15
+ s.rubyforge_project = "google_image_api"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+ end
@@ -0,0 +1,37 @@
1
+ Dir[File.dirname(__FILE__) + '/google_image_api/**/*.rb'].each { |f| require f }
2
+
3
+ module GoogleImageApi
4
+
5
+ # @search = "term"
6
+ #
7
+ # result = GoogleImageApi.find(@search, {
8
+ # :imgsz => "medium",
9
+ # :rsz => 8,
10
+ # :start => 8,
11
+ # :imgtype => "face",
12
+ # :as_filetype => "jpg"
13
+ # })
14
+ #
15
+ # result.images.each do |img|
16
+ # puts img['url']
17
+ # end
18
+
19
+ def self.Configure(&block)
20
+ Configuration.instance.instance_eval(&block)
21
+ end
22
+
23
+ def self.find( query, options = {} )
24
+ client.find( query, options )
25
+ end
26
+
27
+ Configure {
28
+ key nil
29
+ }
30
+
31
+ private
32
+
33
+ def self.client
34
+ @client ||= GoogleImageApi::Client.new
35
+ end
36
+
37
+ end
@@ -0,0 +1,62 @@
1
+ module GoogleImageApi
2
+ class Client
3
+ BASE_URL = "https://ajax.googleapis.com/ajax/services/search/images?v=1.0"
4
+
5
+ def initialize
6
+ end
7
+
8
+ def find( query, options = {} )
9
+ query = Url.new(query).title rescue query
10
+ Result.new( request_image( query, options ) )
11
+ end
12
+
13
+ def request( options )
14
+ require 'open-uri'
15
+ URI.parse( url_for( options ) ).read( "User-Agent" => "Ruby/#{RUBY_VERSION}" )
16
+ end
17
+
18
+ def request_image( query, options = {} )
19
+ request({:q => query}.merge( options ) )
20
+ end
21
+
22
+ protected
23
+ def configuration_options
24
+ {
25
+ :key => Configuration[:key],
26
+ }
27
+ end
28
+
29
+ def url_for( options )
30
+ url = BASE_URL.dup
31
+ options = configuration_options.delete_if {|key, value| value == nil}.merge( options )
32
+ options.each do |key, val|
33
+ value = urlify_value( val )
34
+ if url.include?( ":#{key}" )
35
+ url.sub! ":#{key}", value
36
+ else
37
+ url << "&#{key}=#{value}"
38
+ end
39
+ end
40
+ puts url
41
+ url
42
+ end
43
+
44
+ def urlify_value( val )
45
+ case val
46
+ when Array
47
+ encode( val.flatten.join( '|' ) )
48
+ else
49
+ encode( val )
50
+ end
51
+ end
52
+
53
+ def encode( val )
54
+ case val
55
+ when String
56
+ URI.encode( val ).gsub( '&', '%26' )
57
+ else
58
+ val
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,25 @@
1
+ require 'singleton'
2
+
3
+ module GoogleImageApi
4
+ class Configuration
5
+ include Singleton
6
+
7
+ def self.directives(*directives)
8
+ directives.each do |directive|
9
+ define_method directive do |*args|
10
+ if args.empty?
11
+ return instance_variable_get("@#{directive}")
12
+ else
13
+ instance_variable_set("@#{directive}", args.first)
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ def self.[](directive)
20
+ instance.send(directive)
21
+ end
22
+
23
+ directives :key
24
+ end
25
+ end
@@ -0,0 +1,26 @@
1
+ module GoogleImageApi
2
+ class Result
3
+ def initialize(json)
4
+ require 'json'
5
+ @json = json
6
+ @data = JSON::load(json)
7
+ end
8
+
9
+ def page
10
+ @data.first
11
+ end
12
+
13
+ def images
14
+ @data["responseData"]["results"]
15
+ end
16
+
17
+ def raw_data
18
+ @data
19
+ end
20
+
21
+ def json
22
+ @json
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,13 @@
1
+ module GoogleImageApi
2
+ class Url
3
+ def initialize(uri)
4
+ @uri = uri
5
+ end
6
+
7
+ def title
8
+ return @title if @title
9
+ uri = URI.parse( @uri )
10
+ @title = URI.decode( uri.path.split('/').last )
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,3 @@
1
+ module GoogleImageApi
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,55 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: google_image_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - sb4m
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-04-29 00:00:00.000000000Z
13
+ dependencies: []
14
+ description: simplify access to google image api
15
+ email:
16
+ - sb4m.01@gmail.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - .gitignore
22
+ - Gemfile
23
+ - Rakefile
24
+ - google_image_api.gemspec
25
+ - lib/google_image_api.rb
26
+ - lib/google_image_api/client.rb
27
+ - lib/google_image_api/configuration.rb
28
+ - lib/google_image_api/result.rb
29
+ - lib/google_image_api/url.rb
30
+ - lib/google_image_api/version.rb
31
+ homepage: https://github.com/sb4m/google_image_api
32
+ licenses: []
33
+ post_install_message:
34
+ rdoc_options: []
35
+ require_paths:
36
+ - lib
37
+ required_ruby_version: !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ! '>='
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ required_rubygems_version: !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ! '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ requirements: []
50
+ rubyforge_project: google_image_api
51
+ rubygems_version: 1.7.2
52
+ signing_key:
53
+ specification_version: 3
54
+ summary: Access to google image api
55
+ test_files: []