grabz_it 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.
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # GrabzIt
2
2
 
3
- TODO: Write a gem description
3
+ Interfaces with the GrabzIt screenshot service (http://grabz.it)
4
+
5
+ Yard docs can be found at http://www.rubydoc.info/github/cavneb/grabz_it/master/frames
4
6
 
5
7
  ## Installation
6
8
 
@@ -15,10 +17,111 @@ And then execute:
15
17
  Or install it yourself as:
16
18
 
17
19
  $ gem install grabz_it
20
+
21
+ ## Dependencies
22
+ * [rspec](https://github.com/rspec/rspec) (used in tests only)
18
23
 
19
24
  ## Usage
20
25
 
21
- TODO: Write usage instructions here
26
+ ### Save Picture
27
+
28
+ Calls the GrabzIt web service to take the screenshot and saves it to the target path provided.
29
+
30
+ *Warning, this is a SYNCHONOUS method and can take up to 5 minutes before a response.*
31
+
32
+ ```ruby
33
+ client = GrabzIt::Client.new('TEST_KEY', 'TEST_SECRET')
34
+ options = {
35
+ :url => 'http://grabz.it',
36
+ :callback_url => 'http://example.com/callback',
37
+ :browser_width => 1024,
38
+ :browser_height => 768,
39
+ :output_width => 800,
40
+ :output_height => 600,
41
+ :custom_id => '12345',
42
+ :format => 'png',
43
+ :delay => 1000
44
+ }
45
+ client.save_picture('/tmp/my_picture.png', options)
46
+
47
+ puts File.exists?('/tmp/my_picture.png')
48
+ # => true
49
+ ```
50
+
51
+ ### Take Picture
52
+
53
+ Calls the GrabzIt web service to take the screenshot. It will optionally ping a callback url with the custom id if provided.
54
+
55
+ ```ruby
56
+ client = GrabzIt::Client.new('TEST_KEY', 'TEST_SECRET')
57
+ options = {
58
+ :url => 'http://grabz.it',
59
+ :callback_url => 'http://example.com/callback',
60
+ :browser_width => 1024,
61
+ :browser_height => 768,
62
+ :output_width => 800,
63
+ :output_height => 600,
64
+ :custom_id => '12345',
65
+ :format => 'png',
66
+ :delay => 1000
67
+ }
68
+ response = client.take_picture('google', options)
69
+
70
+ puts response.screenshot_id
71
+ # => 'Y2F2bmViQGdtYWlsLmNvbQ==-20943258e37c4fc28c4977cd76c40f58'
72
+ ```
73
+
74
+ ### Get Picture
75
+
76
+ Get the screenshot image
77
+
78
+ ```ruby
79
+ client = GrabzIt::Client.new('TEST_KEY', 'TEST_SECRET')
80
+ image = client.get_image('Y2F2bmViQGdtYWlsLmNvbQ==-20943258e37c4fc28c4977cd76c40f58')
81
+
82
+ puts image.content_type
83
+ # => 'image/png'
84
+ puts image.size
85
+ # => 129347
86
+
87
+ image.save("/tmp/myimage.png")
88
+ File.exist?("/tmp/myimage.png")
89
+ # => true
90
+ ```
91
+
92
+ ### Get Status
93
+
94
+ Get the current status of a GrabzIt screenshot.
95
+
96
+ ```ruby
97
+ client = GrabzIt::Client.new('TEST_KEY', 'TEST_SECRET')
98
+ status = client.get_status('Y2F2bmViQGdtYWlsLmNvbQ==-20943258e37c4fc28c4977cd76c40f58')
99
+
100
+ puts status.failed?
101
+ # => false
102
+ puts status.available?
103
+ # => true
104
+ ```
105
+
106
+ ### Get Cookie Jar
107
+
108
+ Get all the cookies that GrabzIt is using for a particular domain. This may include your user set cookies as well.
109
+
110
+ ```ruby
111
+ client = GrabzIt::Client.new('TEST_KEY', 'TEST_SECRET')
112
+ cookie_jar = client.get_cookie_jar('google')
113
+
114
+ puts cookie_jar.cookies.count
115
+ # => 3
116
+ puts cookie_jar.cookies[0].name
117
+ # => 'secure'
118
+ puts cookie_jar.cookies[0].domain
119
+ # => 'accounts.google.com'
120
+ ```
121
+
122
+ ## TODO
123
+
124
+ * Create the ability to set and delete cookies.
22
125
 
23
126
  ## Contributing
24
127
 
@@ -20,8 +20,8 @@ module GrabzIt
20
20
  end
21
21
 
22
22
  ##
23
- # Calls the GrabzIt web service to take the screenshot. Warning, this is a SYNCHONOUS method and can take up to
24
- # 5 minutes before a response.
23
+ # Calls the GrabzIt web service to take the screenshot and saves it to the target path provided. Warning, this is a
24
+ # SYNCHONOUS method and can take up to 5 minutes before a response.
25
25
  #
26
26
  # @param [String] target_path File path that the file should be saved to (including file name and extension)
27
27
  # @param [Hash] options Data that is to be passed to the web service
@@ -50,7 +50,7 @@ module GrabzIt
50
50
  # :format => 'png',
51
51
  # :delay => 1000
52
52
  # }
53
- # response = client.take_picture(options)
53
+ # response = client.save_picture('google', options)
54
54
  #
55
55
  def save_picture(target_path, options = {})
56
56
  response = take_picture(options)
@@ -140,17 +140,17 @@ module GrabzIt
140
140
  end
141
141
 
142
142
  ##
143
- # Get the current status of a GrabzIt screenshot.
143
+ # Get all the cookies that GrabzIt is using for a particular domain. This may include your user set cookies as well.
144
144
  #
145
- # @param [String] screenshot_id The id of the screenshot provided by the GrabzIt api
145
+ # @param [String] domain The domain of the cookie
146
146
  #
147
- # @return [GrabzIt::Status] The parsed status.
147
+ # @return [GrabzIt::CookieJar] The container that holds the cookies
148
148
  #
149
149
  # @example
150
150
  # client = GrabzIt::Client.new('TEST_KEY', 'TEST_SECRET')
151
- # status = client.get_status('Y2F2bmViQGdtYWlsLmNvbQ==-20943258e37c4fc28c4977cd76c40f58')
151
+ # cookie_jar = client.get_cookie_jar('google')
152
152
  #
153
- def get_cookies(domain)
153
+ def get_cookie_jar(domain)
154
154
  action = "getcookies.ashx"
155
155
  sig = Digest::MD5.hexdigest(@app_secret + "|" + domain)
156
156
  params = {
@@ -164,6 +164,18 @@ module GrabzIt
164
164
  cookie_jar
165
165
  end
166
166
 
167
+ ##
168
+ # Pending API documentation
169
+ #
170
+ # def set_cookie(options = {})
171
+ # end
172
+
173
+ ##
174
+ # Pending API documentation
175
+ #
176
+ # def delete_cookie(name, domain)
177
+ # end
178
+
167
179
  ##
168
180
  # Get the screenshot image
169
181
  #
@@ -193,6 +205,7 @@ module GrabzIt
193
205
 
194
206
  # Helper method that performs the request
195
207
  def query_api(action, params)
208
+ params = params.symbolize_keys
196
209
  uri = URI("#{API_BASE_URL}#{action}")
197
210
  uri.query = URI.encode_www_form(params)
198
211
  res = Net::HTTP.get_response(uri)
@@ -1,5 +1,41 @@
1
1
  module GrabzIt
2
2
  class Cookie
3
3
  attr_accessor :name, :value, :domain, :path, :http_only, :expires, :type
4
+
5
+ # def initialize(options = {})
6
+ # options = options.symbolize_keys
7
+ # @domain = options[:domain]
8
+ # @name = options[:name]
9
+ # @value = options[:value]
10
+ # @path = options[:path]
11
+ # @http_only = options[:http_only]
12
+ # @expires = options[:expires]
13
+ # end
14
+
15
+ # def params_for_set_request
16
+ # {
17
+ # :domain => URI.escape(@domain) || '',
18
+ # :name => URI.escape(@name) || '',
19
+ # :value => URI.escape(@value) || '',
20
+ # :path => URI.escape(@path) || '',
21
+ # :http_only => @http_only ? 1 : 0,
22
+ # :expires => URI.escape(@expires) || ''
23
+ # }
24
+ # end
25
+
26
+ # def generate_signature(app_key)
27
+ # parts = []
28
+ # parts << app_key
29
+ # parts << @name
30
+ # parts << @domain
31
+ # parts << @value
32
+ # parts << @path
33
+ # parts << @http_only ? 1 : 0
34
+ # parts << @expires
35
+ # parts << 0
36
+ # unencoded_sig = parts.join('|')
37
+ # puts "SIG: #{unencoded_sig}"
38
+ # sig = Digest::MD5.hexdigest(unencoded_sig)
39
+ # end
4
40
  end
5
41
  end
@@ -1,3 +1,3 @@
1
1
  module GrabzIt
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/spec/client_spec.rb CHANGED
@@ -127,7 +127,7 @@ describe GrabzIt::Client do
127
127
  ## ------------------------------------------------------------------------------------
128
128
  # Get Cookies
129
129
  ## ------------------------------------------------------------------------------------
130
- describe "#get_cookies" do
130
+ describe "#get_cookie_jar" do
131
131
  it "with valid domain" do
132
132
  xml = <<-EOF
133
133
  <?xml version="1.0"?>
@@ -164,7 +164,7 @@ describe GrabzIt::Client do
164
164
  </WebResult>
165
165
  EOF
166
166
  @client.stub!(:query_api).and_return(xml)
167
- cookie_jar = @client.get_cookies('google')
167
+ cookie_jar = @client.get_cookie_jar('google')
168
168
  cookie_jar.cookies.size.should eq(3)
169
169
  cookie_jar.cookies[0].name.should eq('secure')
170
170
  cookie_jar.cookies[0].domain.should eq('accounts.google.com')
@@ -179,7 +179,7 @@ describe GrabzIt::Client do
179
179
  </WebResult>
180
180
  EOF
181
181
  @client.stub!(:query_api).and_return(xml)
182
- cookie_jar = @client.get_cookies('fsoi')
182
+ cookie_jar = @client.get_cookie_jar('fsoi')
183
183
  cookie_jar.cookies.should be_empty
184
184
  end
185
185
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grabz_it
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: