tumbl_rb 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,3 @@
1
+ module TumblRb
2
+ VERSION = "0.1.0" unless defined?(TumblRb::VERSION)
3
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Faraday::Response do
4
+ before do
5
+ @client = TumblRb::Client.new
6
+ end
7
+
8
+ {
9
+ 401 => TumblRb::Unauthorized,
10
+ 404 => TumblRb::NotFound
11
+ }.each do |status, exception|
12
+
13
+ context "when HTTP status is #{status}" do
14
+ before do
15
+ stub_request(:get, "http://api.tumblr.com/v2/blog/andrewpthorp.tumblr.com/info").to_return(:status => status)
16
+ end
17
+
18
+ it "should raise exception #{exception}" do
19
+ lambda do
20
+ @client.info("andrewpthorp")
21
+ end.should raise_error(exception)
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1 @@
1
+ {"meta":{"status":301,"msg":"Found"},"response":{"avatar_url":"http://24.media.tumblr.com/avatar_f0f603c6ab39_64.png"}}
@@ -0,0 +1,18 @@
1
+ {
2
+ "meta": {
3
+ "status": 200,
4
+ "msg": "OK"
5
+ },
6
+ "response": {
7
+ "blog": {
8
+ "title": "Andrew Thorp",
9
+ "posts": 14,
10
+ "name": "andrewpthorp",
11
+ "url": "http://andrewpthorp.tumblr.com/",
12
+ "updated": 1340164091,
13
+ "description": "Full stack web developer from Lynchbrg, VA.",
14
+ "ask": false,
15
+ "likes": 0
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,484 @@
1
+ {
2
+ "meta": {
3
+ "status": 200,
4
+ "msg": "OK"
5
+ },
6
+ "response": {
7
+ "blog": {
8
+ "title": "Andrew Thorp",
9
+ "posts": 14,
10
+ "name": "andrewpthorp",
11
+ "url": "http://andrewpthorp.tumblr.com/",
12
+ "updated": 1340164091,
13
+ "description": "Full stack web developer from Lynchbrg, VA.",
14
+ "ask": false,
15
+ "likes": 0
16
+ },
17
+ "posts": [
18
+ {
19
+ "blog_name": "andrewpthorp",
20
+ "id": 25483182844,
21
+ "post_url": "http://andrewpthorp.tumblr.com/post/25483182844/impress-js-a-css3-based-javascript-presentation",
22
+ "slug": "impress-js-a-css3-based-javascript-presentation",
23
+ "type": "link",
24
+ "date": "2012-06-20 03:48:11 GMT",
25
+ "timestamp": 1340164091,
26
+ "format": "markdown",
27
+ "reblog_key": "ahlKWliy",
28
+ "tags": [
29
+
30
+ ],
31
+ "highlighted": [
32
+
33
+ ],
34
+ "note_count": 26,
35
+ "title": "Impress.js - A CSS3 based JavaScript presentation framework",
36
+ "url": "https://github.com/bartaz/impress.js/",
37
+ "description": "<p><a href=\"http://thechangelog.com/post/25483004415/impress-js-a-css3-based-javascript-presentation-framewor\" class=\"tumblr_blog\">thechangelog</a>:</p>\n\n<blockquote><p>A few months back <a href=\"https://twitter.com/#!/bartaz\">Bartek Szopka</a> released impress.js, a JavaScript presentation tool that uses CSS3 for all of the transitions and transformations in modern browsers.</p>\n\n<p>While impress.js is a little different than the projects we <a href=\"http://thechangelog.com/post/344399156/showoff-the-best-darn-presentation-software-a-developer\">usually cover on the changelog</a>, it is a very cool tool in it’s own right. Being one of the <a href=\"https://github.com/popular/watched\">highest watched repositories</a> on github, it obviously has drawn the attention of many.</p>\n\n<p>Impress got it’s inspiration from <a href=\"http://www.prezi.com\">prezi.com</a>, and the possibilities are endless. Using it takes a little setup (developing, designing, and laying out your “slides”). Once your content is setup, initializing impress is simple:</p>\n\n<pre><code>&lt;script src=\"js/impress.js\"&gt;&lt;/script&gt;\n&lt;script&gt;\n impress().init();\n&lt;/script&gt;\n</code></pre>\n\n<h3>Use the source, Luke!</h3>\n\n<p>Bartek strongly encourages you to read through the source to understand what impress is doing. If you look at <a href=\"http://bartaz.github.com/impress.js/#/overview\">the official example</a>, you will see commented source code explaining how to use impress.js.</p>\n\n<p>As the documentation explains:</p>\n\n<blockquote>\n <p>The only limit is your <strong>imagination</strong></p>\n</blockquote>\n\n<p><a href=\"https://github.com/bartaz/impress.js/wiki/Examples-and-demos\">Checkout a few more examples</a> to see it in action. You can also <a href=\"https://github.com/bartaz/impress.js/\">browse the source</a> at GitHub.</p></blockquote>"
38
+ },
39
+ {
40
+ "blog_name": "andrewpthorp",
41
+ "id": 25384861965,
42
+ "post_url": "http://andrewpthorp.tumblr.com/post/25384861965/jam-javascript-package-management-for-the-browser",
43
+ "slug": "jam-javascript-package-management-for-the-browser",
44
+ "type": "link",
45
+ "date": "2012-06-18 20:54:00 GMT",
46
+ "timestamp": 1340052840,
47
+ "format": "markdown",
48
+ "reblog_key": "LVNJ5Oy6",
49
+ "tags": [
50
+
51
+ ],
52
+ "highlighted": [
53
+
54
+ ],
55
+ "note_count": 18,
56
+ "title": "Jam - JavaScript package management for the browser",
57
+ "url": "https://github.com/caolan/jam",
58
+ "description": "<p><a href=\"http://thechangelog.com/post/25384805734/jam-javascript-package-management-for-the-browser\" class=\"tumblr_blog\">thechangelog</a>:</p>\n\n<blockquote><p><a href=\"https://twitter.com/#!/caolan\">Caolan McMahon</a>, the creator of <a href=\"https://github.com/caolan/async\">Async</a>, has released a new project called Jam. After using this project for a short while, I can say this project has <strong>huge</strong> potential. It is a package management tool that allows you to install, use and compile (minify) JavaScript libraries. Jam is a browser-focused project that uses <a href=\"http://requirejs.org/\">RequireJS</a> (AMD Modules) to load your website’s requirements.</p>\n\n<p>Installation is simple:</p>\n\n<pre><code>npm install -g jamjs\n</code></pre>\n\n<p>Likewise, installing libraries is easy:</p>\n\n<pre><code>jam install jquery\n</code></pre>\n\n<p>Finally, you use the RequireJS to include the libraries:</p>\n\n<pre><code>&lt;script src=\"jam/require.js\"&gt;&lt;/script&gt;\n&lt;script&gt;\n require(['query'], function($){\n console.log(\"jQuery loaded!\");\n });\n&lt;/script&gt;\n</code></pre>\n\n<p>One of the coolest features is the compilation, which will package all (optionally a specific set) of your libraries with RequireJS and allow you to load the optimized library as one optimized file.</p>\n\n<pre><code>jam compile jam/compiled.min.js\n</code></pre>\n\n<p>Then include compiled.min.js instead of require.js, the rest works like before:</p>\n\n<pre><code>&lt;script src=\"jam/compiled.min.js\"&gt;&lt;/script&gt;\n&lt;script&gt;\n require(['query'], function($){\n console.log(\"optimized jQuery loaded!\");\n });\n&lt;/script&gt;\n</code></pre>\n\n<p>If you have a library you would like added as a package, feel free to fork the project and add it in. If, in the process, you run into conflicts or issues with NPM’s package.json, Caolan wants to hear about it!</p>\n\n<p>Head on over to the <a href=\"http://groundcomputing.co.uk/code/jam\">project page</a> or <a href=\"https://github.com/caolan/jam\">browse the source</a> on GitHub.</p></blockquote>"
59
+ },
60
+ {
61
+ "blog_name": "andrewpthorp",
62
+ "id": 25088783990,
63
+ "post_url": "http://andrewpthorp.tumblr.com/post/25088783990/spin-js-css3-spinning-activity-indicator",
64
+ "slug": "spin-js-css3-spinning-activity-indicator",
65
+ "type": "link",
66
+ "date": "2012-06-14 13:21:00 GMT",
67
+ "timestamp": 1339680060,
68
+ "format": "markdown",
69
+ "reblog_key": "xgvXK8M6",
70
+ "tags": [
71
+
72
+ ],
73
+ "highlighted": [
74
+
75
+ ],
76
+ "note_count": 16,
77
+ "title": "Spin.js - CSS3 Spinning activity indicator",
78
+ "url": "https://github.com/fgnass/spin.js",
79
+ "description": "<p><a href=\"http://thechangelog.com/post/25088720326/spin-css3-spinning-activity-indicator\" class=\"tumblr_blog\">thechangelog</a>:</p>\n\n<blockquote><p><a href=\"http://twitter.com/fgnass\">Felix Gnass</a> created a handy JavaScript utility that makes it very easy to add a “spinner” to your website. The project is very small (~2k), has no dependencies, uses CSS for styling/animations and has fallbacks for older browsers.</p>\n\n<p>After including the JavaScript library:</p>\n\n<pre><code>var target = document.getElementById(\"spinner-wrapper\");\nvar spinner = new Spinner({lines: 12, color: \"#fff\"}).spin(target);\n</code></pre>\n\n<p>Voila! You now have a spinner inside of the element you specified as your target. It is highly customizable (number of lines, color, thickness, radius, speed, trail, etc). If you want to use it with jQuery, they have an example showing you how.</p>\n\n<p>Head on over to GitHub to <a href=\"https://github.com/fgnass/spin.js\">browse the source</a>, or view the <a href=\"http://fgnass.github.com/spin.js/\">example page</a> with customizable sliders.</p></blockquote>"
80
+ },
81
+ {
82
+ "blog_name": "andrewpthorp",
83
+ "id": 25027727534,
84
+ "post_url": "http://andrewpthorp.tumblr.com/post/25027727534/fixie-js-dynamically-generated-filler-content",
85
+ "slug": "fixie-js-dynamically-generated-filler-content",
86
+ "type": "link",
87
+ "date": "2012-06-13 16:34:00 GMT",
88
+ "timestamp": 1339605240,
89
+ "format": "markdown",
90
+ "reblog_key": "HbLK5hVT",
91
+ "tags": [
92
+
93
+ ],
94
+ "highlighted": [
95
+
96
+ ],
97
+ "note_count": 12,
98
+ "title": "Fixie.js - Dynamically generated filler content",
99
+ "url": "https://github.com/rthprog/fixie",
100
+ "description": "<p><a href=\"http://thechangelog.com/post/25022208388/fixie-dynamically-generated-filler-content\" class=\"tumblr_blog\">thechangelog</a>:</p>\n\n<blockquote><p><a href=\"http://twitter.com/#!/ryhanhassan\">Ryhan Hassan</a> has created a neat little JavaScript library that adds filler content to your HTML mockups. Using it is very simple, just add the fixie.js library to your HTML before the closing <code>&lt;/body&gt;</code> tag, and Fixie looks for anything with a class of <code>fixie</code>.</p>\n\n<pre><code>&lt;h1 class=\"fixie\"&gt;&lt;/h1&gt;\n&lt;p class=\"fixie\"&gt;&lt;/p&gt;\n</code></pre>\n\n<p>It’s smart enough to fill an <code>&lt;h1&gt;</code> tag with a phrase, a <code>&lt;p&gt;</code> tag with a paragraph, an <code>&lt;img&gt;</code> tag with an image, and so on. If you want to add <code>fixie</code> it to a container, it can handle that too!</p>\n\n<p>By default, all images will be pulled from <a href=\"http://placehold.it/\">placehold.it</a>, but changing that is very simple:</p>\n\n<pre><code>fixie.setImagePlaceholder('http://flickholdr.com/${w}/${h}/canon').init();\n</code></pre>\n\n<p><a href=\"http://ryhan.me/fixie/sample.html\">View the sample</a> (refresh the page a few times to see the content generated dynamically) or <a href=\"https://github.com/rthprog/fixie\">browse the source</a> at GitHub.</p></blockquote>"
101
+ },
102
+ {
103
+ "blog_name": "andrewpthorp",
104
+ "id": 25027723819,
105
+ "post_url": "http://andrewpthorp.tumblr.com/post/25027723819/rainbow-js-simple-syntax-highlighting-library-written",
106
+ "slug": "rainbow-js-simple-syntax-highlighting-library-written",
107
+ "type": "link",
108
+ "date": "2012-06-13 16:34:00 GMT",
109
+ "timestamp": 1339605240,
110
+ "format": "markdown",
111
+ "reblog_key": "mJGXv9ZB",
112
+ "tags": [
113
+
114
+ ],
115
+ "highlighted": [
116
+
117
+ ],
118
+ "note_count": 28,
119
+ "title": "Rainbow.js - Simple syntax highlighting library written in JavaScript",
120
+ "url": "https://github.com/ccampbell/rainbow",
121
+ "description": "<p><a href=\"http://thechangelog.com/post/24955440903/rainbow-simple-syntax-highlighting-library-written-in-ja\" class=\"tumblr_blog\">thechangelog</a>:</p>\n\n<blockquote><p><a href=\"http://craig.is/\">Craig Campbell</a>, an employee at <a href=\"http://vimeo.com\">Vimeo</a>, has created a very easy to use, lightweight (~3k) code syntax highlighting library written in JavaScript. Out of the box, Rainbow supports syntax highlighting for the following languages:</p>\n\n<ul><li>JavaScript, HTML, CSS, PHP, Python, Ruby, C, Shell, Scheme, Lua, C#</li>\n</ul><p>Adding support for your own languages is very easy, however, and theming is done entirely with CSS. If you don’t want to sweat the details of theming, you can use one of their many built-in themes (like the very popular <a href=\"http://ethanschoonover.com/solarized\">solarized</a> theme).</p>\n\n<p>Getting started is easy:</p>\n\n<pre><code>&lt;pre&gt;&lt;code data-language=\"ruby\"&gt;def greeting(name)\n puts \"Hello there #(name)\"\nend&lt;/code&gt;&lt;/pre&gt;\n</code></pre>\n\n<p>Then include your CSS theme in the <code>&lt;head&gt;</code> and rainbow.js (as well as whichever language[s] you want) before the closing <code>&lt;/body&gt;</code>.</p>\n\n<p><a href=\"http://craig.is/making/rainbows\">Checkout the demo</a> or <a href=\"http://github.com/ccampbell/rainbow\">browse the source</a> at GitHub. While you’re at it, feel free to fork the project and add support for your favorite language!</p></blockquote>"
122
+ },
123
+ {
124
+ "blog_name": "andrewpthorp",
125
+ "id": 25027716115,
126
+ "post_url": "http://andrewpthorp.tumblr.com/post/25027716115/grunt-a-command-line-build-tool-for-javascript",
127
+ "slug": "grunt-a-command-line-build-tool-for-javascript",
128
+ "type": "link",
129
+ "date": "2012-06-13 16:34:42 GMT",
130
+ "timestamp": 1339605282,
131
+ "format": "markdown",
132
+ "reblog_key": "4jvVz8Fa",
133
+ "tags": [
134
+
135
+ ],
136
+ "highlighted": [
137
+
138
+ ],
139
+ "note_count": 13,
140
+ "title": "Grunt - a command line build tool for JavaScript",
141
+ "url": "https://github.com/cowboy/grunt",
142
+ "description": "<p><a href=\"http://thechangelog.com/post/24656785804/grunt-a-command-line-build-tool-for-javascript\" class=\"tumblr_blog\">thechangelog</a>:</p>\n\n<blockquote><p>Grunt is a project that allows you to use JavaScript to configure and run command line tasks. It is installed as an npm module, and very simple to get started with. If you have <a href=\"http://nodejs.org/\">Node.js</a> and <a href=\"http://npmjs.org/\">npm</a> installed, simply run:</p>\n\n<pre><code>npm install -g grunt\n</code></pre>\n\n<p>Some of the common tasks include: <a href=\"https://github.com/cowboy/grunt/blob/master/docs/task_lint.md\">JavaScript Lint</a>, <a href=\"https://github.com/cowboy/grunt/blob/master/docs/task_qunit.md\">QUnit</a>,\n<a href=\"https://github.com/cowboy/grunt/blob/master/docs/task_min.md\">minify</a>, <a href=\"https://github.com/jshint/jshint\">JSHint</a> and <a href=\"https://github.com/cowboy/grunt/blob/master/docs/task_concat.md\">file concatenation.</a></p>\n\n<p>Any project that has grunt.js in it’s root (or subdirectories) can use grunt tasks. An example configuration to use <code>grunt lint</code>:</p>\n\n<pre><code>module.exports = function(grunt){\n grunt.initConfig({\n lint: {\n all: ['grunt.js', 'lib/**/*.js''test/**/*.js']\n }\n });\n};\n</code></pre>\n\n<p>Whenever you run <code>grunt lint</code> in this project, the array of files (grunt.js, every JavaScript file in lib/ and every JavaScript file in test/) will be run through JavaScript Lint.</p>\n\n<p>For some extra grunts and giggles, you can checkout grunt’s own <a href=\"https://github.com/cowboy/grunt/blob/master/grunt.js\">gruntfile</a>. They showcase some common uses and are very self explanatory.</p>\n\n<p>As a disclaimer, grunt is currently in beta, and could possibly (<em>will probably</em>) change before 1.0. The good news is the changes will be based on <strong>your</strong> feedback. Head on over to GitHub to <a href=\"https://github.com/cowboy/grunt\">browse the source code</a> and help get this project to it’s final release!</p></blockquote>"
143
+ },
144
+ {
145
+ "blog_name": "andrewpthorp",
146
+ "id": 25027684879,
147
+ "post_url": "http://andrewpthorp.tumblr.com/post/25027684879/chosen-jquery-plugin-for-user-friendly-select-boxes",
148
+ "slug": "chosen-jquery-plugin-for-user-friendly-select-boxes",
149
+ "type": "link",
150
+ "date": "2012-06-13 16:34:04 GMT",
151
+ "timestamp": 1339605244,
152
+ "format": "markdown",
153
+ "reblog_key": "LtSL04Nk",
154
+ "tags": [
155
+
156
+ ],
157
+ "highlighted": [
158
+
159
+ ],
160
+ "note_count": 20,
161
+ "title": "Chosen - jQuery plugin for user friendly select boxes",
162
+ "url": "https://github.com/harvesthq/chosen",
163
+ "description": "<p><a href=\"http://thechangelog.com/post/24536956760/chosen-jquery-plugin-for-user-friendly-select-boxes\" class=\"tumblr_blog\">thechangelog</a>:</p>\n\n<blockquote><p>Harvest, the team behind one of the earliest <a href=\"http://getharvest.com\">rails applications</a> designed for business (rails 0.14.1), has a neat little project out there that helps “make unwieldy select boxes more friendly.” They call it Chosen, and it stays true to the motto “do one thing and do it well.”</p>\n\n<p>After including jQuery (or Prototype), the Chosen stylesheet, and the appropriate plugin:</p>\n\n<pre><code>$(\".some-select\").chosen();\n</code></pre>\n\n<p>That’s it! You can now turn your boring old select boxes into:</p>\n\n<p><img src=\"http://f.cl.ly/items/1j1A3g2L2C2x0D0P2k0y/Screen%20Shot%202012-06-05%20at%201.00.47%20AM.png\" alt=\"After\"/></p>\n\n<p><a href=\"http://harvesthq.github.com/chosen/\">Checkout the examples</a> to see what else Chosen is capable of doing (and how good it looks doing it). You can also <a href=\"https://github.com/harvesthq/chosen/\">browse the source</a> at GitHub.</p></blockquote>"
164
+ },
165
+ {
166
+ "blog_name": "andrewpthorp",
167
+ "id": 25027675097,
168
+ "post_url": "http://andrewpthorp.tumblr.com/post/25027675097/gmaps-js-the-easiest-way-to-use-google-maps",
169
+ "slug": "gmaps-js-the-easiest-way-to-use-google-maps",
170
+ "type": "link",
171
+ "date": "2012-06-13 16:33:53 GMT",
172
+ "timestamp": 1339605233,
173
+ "format": "markdown",
174
+ "reblog_key": "9IKNaXeq",
175
+ "tags": [
176
+
177
+ ],
178
+ "highlighted": [
179
+
180
+ ],
181
+ "note_count": 45,
182
+ "title": "GMaps.js - the easiest way to use Google Maps",
183
+ "url": "https://github.com/hpneo/gmaps",
184
+ "description": "<p><a href=\"http://thechangelog.com/post/24404498965/gmaps-js-the-easiest-way-to-use-google-maps\" class=\"tumblr_blog\">thechangelog</a>:</p>\n\n<blockquote><p>Google Maps is extremely powerful, but using the JavaScript API can be a bit complex at times. That is exactly the problem that <a href=\"http://www.twitter.com/hpneo\">@HPNeo</a> is trying to solve with <a href=\"https://github.com/hpneo/gmaps\">GMaps.</a></p>\n\n<p>There are a few requirements: jQuery and the Google Maps API. Just make sure you add all three JavaScript libraries to your page and you will be good to go:</p>\n\n<pre><code>&lt;script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js\"&gt;&lt;/script&gt;\n&lt;script type=\"text/javascript\" src=\"http://maps.google.com/maps/api/js?sensor=true\"&gt;&lt;/script&gt;\n&lt;script type=\"text/javascript\" src=\"https://raw.github.com/HPNeo/gmaps/master/gmaps.js\"&gt;&lt;/script&gt;\n</code></pre>\n\n<p>Adding a basic map is very easy:</p>\n\n<pre><code>new GMap({\n div: \"#map\",\n lat: 39.905588,\n lng: -75.16644,\n zoom: 20 // (Optional: defaults to 15)\n});\n</code></pre>\n\n<p>They also have support for <a href=\"http://hpneo.github.com/gmaps/examples/markers.html\">markers</a>, <a href=\"http://hpneo.github.com/gmaps/examples/geolocation.html\">geolocation</a>, <a href=\"http://hpneo.github.com/gmaps/examples/geocoding.html\">geocoding</a>, and <a href=\"http://hpneo.github.com/gmaps/examples.html\">more</a>.</p>\n\n<p>The project could use some documentation help, so I would encourage you to fork the repository and get involved!</p>\n\n<p><a href=\"http://hpneo.github.com/gmaps/examples.html\">Checkout the examples</a> or <a href=\"https://github.com/HPNeo/gmaps\">browse the source at GitHub</a></p></blockquote>"
185
+ },
186
+ {
187
+ "blog_name": "andrewpthorp",
188
+ "id": 25027665834,
189
+ "post_url": "http://andrewpthorp.tumblr.com/post/25027665834/tweetstream-easily-access-the-twitter-streaming-api",
190
+ "slug": "tweetstream-easily-access-the-twitter-streaming-api",
191
+ "type": "link",
192
+ "date": "2012-06-13 16:33:42 GMT",
193
+ "timestamp": 1339605222,
194
+ "format": "markdown",
195
+ "reblog_key": "3o7UILy7",
196
+ "tags": [
197
+
198
+ ],
199
+ "highlighted": [
200
+
201
+ ],
202
+ "note_count": 17,
203
+ "title": "TweetStream - Easily access the Twitter Streaming API",
204
+ "url": "https://github.com/intridea/tweetstream",
205
+ "description": "<p><a href=\"http://thechangelog.com/post/24246381907/tweetstream-easily-access-the-twitter-streaming-api\" class=\"tumblr_blog\">thechangelog</a>:</p>\n\n<blockquote><p><a href=\"http://twitter.com/anno\">Steve Agalloco</a>, <a href=\"http://twitter.com/sferik\">Erik Michaels-Ober</a>, and <a href=\"http://twitter.com/jhaile\">Jeremy Haile</a> have delivered a major update to <a href=\"http://www.intridea.com/\">Intridea</a>’s TweetStream (2.0.0) gem, which gives you access to the Twitter Streaming API.</p>\n\n<p>One of the biggest updates in this version is the switch to OAuth as the default authentication method. This was necessary because Userstreams and Site Streams exclusively work on OAuth. You can still use basic authentication, but both Twitter and TweetStream strongly encourage you to switch, so you can enjoy the new features. Don’t worry, it’s <a href=\"https://dev.twitter.com/docs/auth/oauth/faq\">simple</a>.</p>\n\n<p>The gem itself is built on top of <a href=\"https://github.com/spagalloco/em-twitter\">em-twitter</a>, which is an <a href=\"https://github.com/eventmachine/eventmachine\">EventMachine</a> client for the Twitter Streaming API.</p>\n\n<p>Getting up and running couldn’t be easier:</p>\n\n<pre><code>require 'tweetstream'\n\nTweetStream.configure do |config|\n config.consumer_key = \"123456789\"\n config.consumer_secret = \"abcdefghijklmnopqrstuvwxyz\"\n config.oauth_token = \"123456789\"\n config.oauth_token_secret = \"abcdefghijklmnopqrstuvwxyz\"\n config.auth_method = :oauth\nend\n\nTweetStream::Client.new.userstream do |status|\n puts \"#{status.user.screen_name}: #{status.text}\"\nend\n</code></pre>\n\n<p>t, a command line interface for twitter (covered in a <a href=\"http://thechangelog.com/post/22147765842/t-powerful-command-line-interface-for-twitter\">previous article</a>), is also built on top of the TweetStream gem.</p>\n\n<p><a href=\"https://github.com/intridea/tweetstream\">Head on over to GitHub</a> to view the source code and browse the documentation.</p></blockquote>"
206
+ },
207
+ {
208
+ "blog_name": "andrewpthorp",
209
+ "id": 25027627344,
210
+ "post_url": "http://andrewpthorp.tumblr.com/post/25027627344/hammer-js-easily-add-multi-touch-to-your-websites",
211
+ "slug": "hammer-js-easily-add-multi-touch-to-your-websites",
212
+ "type": "link",
213
+ "date": "2012-06-13 16:32:58 GMT",
214
+ "timestamp": 1339605178,
215
+ "format": "markdown",
216
+ "reblog_key": "VZPLjYT7",
217
+ "tags": [
218
+
219
+ ],
220
+ "highlighted": [
221
+
222
+ ],
223
+ "note_count": 27,
224
+ "title": "Hammer.js - Easily add multi-touch to your websites",
225
+ "url": "https://github.com/eightmedia/hammer.js",
226
+ "description": "<p><a href=\"http://thechangelog.com/post/24108414798/hammer-js-easily-add-multi-touch-to-your-websites\" class=\"tumblr_blog\">thechangelog</a>:</p>\n\n<blockquote><p>With the continued growth of mobile devices, handling touch (and multi-touch) events is no longer optional. Hammer.js is a small - dependency free - library that makes handling touch events dead simple.</p>\n\n<p>You can easily add tap (touch/click), double tap, hold, drag (touchmove/mousemove), swipe, and transform (pinch) events to your website with very little code. </p>\n\n<pre><code>var hammer = new Hammer(document.getElementById(\"hammertime\"));\nhammer.ondoubletap = function(e){\n console.log(\"CAN touch this!\");\n};\n</code></pre>\n\n<p>Oh, and if jQuery is your thing, they have a simple plugin that you can download as well.</p>\n\n<p><a href=\"http://eightmedia.github.com/hammer.js/\">View the demo</a> or <a href=\"https://github.com/eightmedia/hammer.js\" title=\"Browse the Source\">browse the source on GitHub</a>.</p></blockquote>"
227
+ },
228
+ {
229
+ "blog_name": "andrewpthorp",
230
+ "id": 24853977980,
231
+ "post_url": "http://andrewpthorp.tumblr.com/post/24853977980/mia-wants-ezras-yoshi",
232
+ "slug": "mia-wants-ezras-yoshi",
233
+ "type": "photo",
234
+ "date": "2012-06-11 01:20:06 GMT",
235
+ "timestamp": 1339377606,
236
+ "format": "markdown",
237
+ "reblog_key": "FvkXXEeN",
238
+ "tags": [
239
+
240
+ ],
241
+ "highlighted": [
242
+
243
+ ],
244
+ "note_count": 0,
245
+ "caption": "<p>Mia wants Ezra&#8217;s Yoshi.</p>",
246
+ "photos": [
247
+ {
248
+ "caption": "",
249
+ "alt_sizes": [
250
+ {
251
+ "width": 768,
252
+ "height": 1024,
253
+ "url": "http://25.media.tumblr.com/tumblr_m5fidi31QB1qi8wr6o1_1280.png"
254
+ },
255
+ {
256
+ "width": 500,
257
+ "height": 667,
258
+ "url": "http://25.media.tumblr.com/tumblr_m5fidi31QB1qi8wr6o1_500.png"
259
+ },
260
+ {
261
+ "width": 400,
262
+ "height": 533,
263
+ "url": "http://25.media.tumblr.com/tumblr_m5fidi31QB1qi8wr6o1_400.png"
264
+ },
265
+ {
266
+ "width": 250,
267
+ "height": 333,
268
+ "url": "http://25.media.tumblr.com/tumblr_m5fidi31QB1qi8wr6o1_250.png"
269
+ },
270
+ {
271
+ "width": 100,
272
+ "height": 133,
273
+ "url": "http://25.media.tumblr.com/tumblr_m5fidi31QB1qi8wr6o1_100.png"
274
+ },
275
+ {
276
+ "width": 75,
277
+ "height": 75,
278
+ "url": "http://24.media.tumblr.com/tumblr_m5fidi31QB1qi8wr6o1_75sq.png"
279
+ }
280
+ ],
281
+ "original_size": {
282
+ "width": 768,
283
+ "height": 1024,
284
+ "url": "http://25.media.tumblr.com/tumblr_m5fidi31QB1qi8wr6o1_1280.png"
285
+ }
286
+ }
287
+ ]
288
+ },
289
+ {
290
+ "blog_name": "andrewpthorp",
291
+ "id": 24383271337,
292
+ "post_url": "http://andrewpthorp.tumblr.com/post/24383271337/best-desktop-partner-ever-john-s-lens-kodot",
293
+ "slug": "best-desktop-partner-ever-john-s-lens-kodot",
294
+ "type": "photo",
295
+ "date": "2012-06-04 03:53:59 GMT",
296
+ "timestamp": 1338782039,
297
+ "format": "html",
298
+ "reblog_key": "dJgewhBJ",
299
+ "tags": [
300
+ "Hipstamatic",
301
+ "John S Lens",
302
+ "Kodot XGrizzled Film",
303
+ "No Flash"
304
+ ],
305
+ "highlighted": [
306
+
307
+ ],
308
+ "note_count": 0,
309
+ "caption": "<p><h2 style=\"margin: 0px 0px 10px 0px;\">Best desktop partner ever&#8230;</h2> John S Lens, Kodot XGrizzled Film, No Flash, Taken with <a href=\"http://hipstamaticapp.com\">Hipstamatic</a></p>",
310
+ "photos": [
311
+ {
312
+ "caption": "",
313
+ "alt_sizes": [
314
+ {
315
+ "width": 1280,
316
+ "height": 1280,
317
+ "url": "http://25.media.tumblr.com/tumblr_m52qtzKRq81qi8wr6o1_1280.jpg"
318
+ },
319
+ {
320
+ "width": 500,
321
+ "height": 500,
322
+ "url": "http://25.media.tumblr.com/tumblr_m52qtzKRq81qi8wr6o1_500.jpg"
323
+ },
324
+ {
325
+ "width": 400,
326
+ "height": 400,
327
+ "url": "http://24.media.tumblr.com/tumblr_m52qtzKRq81qi8wr6o1_400.jpg"
328
+ },
329
+ {
330
+ "width": 250,
331
+ "height": 250,
332
+ "url": "http://24.media.tumblr.com/tumblr_m52qtzKRq81qi8wr6o1_250.jpg"
333
+ },
334
+ {
335
+ "width": 100,
336
+ "height": 100,
337
+ "url": "http://25.media.tumblr.com/tumblr_m52qtzKRq81qi8wr6o1_100.jpg"
338
+ },
339
+ {
340
+ "width": 75,
341
+ "height": 75,
342
+ "url": "http://24.media.tumblr.com/tumblr_m52qtzKRq81qi8wr6o1_75sq.jpg"
343
+ }
344
+ ],
345
+ "original_size": {
346
+ "width": 1280,
347
+ "height": 1280,
348
+ "url": "http://25.media.tumblr.com/tumblr_m52qtzKRq81qi8wr6o1_1280.jpg"
349
+ }
350
+ }
351
+ ]
352
+ },
353
+ {
354
+ "blog_name": "andrewpthorp",
355
+ "id": 24298664252,
356
+ "post_url": "http://andrewpthorp.tumblr.com/post/24298664252/at-firewheel-jimmy-lens-blanko-film-no-flash",
357
+ "slug": "at-firewheel-jimmy-lens-blanko-film-no-flash",
358
+ "type": "photo",
359
+ "date": "2012-06-03 01:19:52 GMT",
360
+ "timestamp": 1338686392,
361
+ "format": "html",
362
+ "reblog_key": "jTXw3fej",
363
+ "tags": [
364
+ "Hipstamatic",
365
+ "Jimmy Lens",
366
+ "Blanko Film",
367
+ "No Flash"
368
+ ],
369
+ "highlighted": [
370
+
371
+ ],
372
+ "note_count": 0,
373
+ "caption": "<p><h2 style=\"margin: 0px 0px 10px 0px;\">At firewheel!</h2> Jimmy Lens, Blanko Film, No Flash, Taken with <a href=\"http://hipstamaticapp.com\">Hipstamatic</a></p>",
374
+ "photos": [
375
+ {
376
+ "caption": "",
377
+ "alt_sizes": [
378
+ {
379
+ "width": 1280,
380
+ "height": 1280,
381
+ "url": "http://25.media.tumblr.com/tumblr_m50p14Ir7J1qi8wr6o1_1280.jpg"
382
+ },
383
+ {
384
+ "width": 500,
385
+ "height": 500,
386
+ "url": "http://25.media.tumblr.com/tumblr_m50p14Ir7J1qi8wr6o1_500.jpg"
387
+ },
388
+ {
389
+ "width": 400,
390
+ "height": 400,
391
+ "url": "http://24.media.tumblr.com/tumblr_m50p14Ir7J1qi8wr6o1_400.jpg"
392
+ },
393
+ {
394
+ "width": 250,
395
+ "height": 250,
396
+ "url": "http://24.media.tumblr.com/tumblr_m50p14Ir7J1qi8wr6o1_250.jpg"
397
+ },
398
+ {
399
+ "width": 100,
400
+ "height": 100,
401
+ "url": "http://25.media.tumblr.com/tumblr_m50p14Ir7J1qi8wr6o1_100.jpg"
402
+ },
403
+ {
404
+ "width": 75,
405
+ "height": 75,
406
+ "url": "http://25.media.tumblr.com/tumblr_m50p14Ir7J1qi8wr6o1_75sq.jpg"
407
+ }
408
+ ],
409
+ "original_size": {
410
+ "width": 1280,
411
+ "height": 1280,
412
+ "url": "http://25.media.tumblr.com/tumblr_m50p14Ir7J1qi8wr6o1_1280.jpg"
413
+ }
414
+ }
415
+ ]
416
+ },
417
+ {
418
+ "blog_name": "andrewpthorp",
419
+ "id": 24288366308,
420
+ "post_url": "http://andrewpthorp.tumblr.com/post/24288366308/messing-with-hipstamatic-jimmy-lens-blanko-film",
421
+ "slug": "messing-with-hipstamatic-jimmy-lens-blanko-film",
422
+ "type": "photo",
423
+ "date": "2012-06-02 22:17:26 GMT",
424
+ "timestamp": 1338675446,
425
+ "format": "html",
426
+ "reblog_key": "8Cd6X4M6",
427
+ "tags": [
428
+ "Hipstamatic",
429
+ "Jimmy Lens",
430
+ "Blanko Film",
431
+ "Dreampop Flash"
432
+ ],
433
+ "highlighted": [
434
+
435
+ ],
436
+ "note_count": 0,
437
+ "caption": "<p><h2 style=\"margin: 0px 0px 10px 0px;\">Messing with Hipstamatic</h2> Jimmy Lens, Blanko Film, Dreampop Flash, Taken with <a href=\"http://hipstamaticapp.com\">Hipstamatic</a></p>",
438
+ "photos": [
439
+ {
440
+ "caption": "",
441
+ "alt_sizes": [
442
+ {
443
+ "width": 1280,
444
+ "height": 1280,
445
+ "url": "http://25.media.tumblr.com/tumblr_m50gl3ov8h1qi8wr6o1_1280.jpg"
446
+ },
447
+ {
448
+ "width": 500,
449
+ "height": 500,
450
+ "url": "http://25.media.tumblr.com/tumblr_m50gl3ov8h1qi8wr6o1_500.jpg"
451
+ },
452
+ {
453
+ "width": 400,
454
+ "height": 400,
455
+ "url": "http://24.media.tumblr.com/tumblr_m50gl3ov8h1qi8wr6o1_400.jpg"
456
+ },
457
+ {
458
+ "width": 250,
459
+ "height": 250,
460
+ "url": "http://25.media.tumblr.com/tumblr_m50gl3ov8h1qi8wr6o1_250.jpg"
461
+ },
462
+ {
463
+ "width": 100,
464
+ "height": 100,
465
+ "url": "http://25.media.tumblr.com/tumblr_m50gl3ov8h1qi8wr6o1_100.jpg"
466
+ },
467
+ {
468
+ "width": 75,
469
+ "height": 75,
470
+ "url": "http://25.media.tumblr.com/tumblr_m50gl3ov8h1qi8wr6o1_75sq.jpg"
471
+ }
472
+ ],
473
+ "original_size": {
474
+ "width": 1280,
475
+ "height": 1280,
476
+ "url": "http://25.media.tumblr.com/tumblr_m50gl3ov8h1qi8wr6o1_1280.jpg"
477
+ }
478
+ }
479
+ ]
480
+ }
481
+ ],
482
+ "total_posts": 14
483
+ }
484
+ }