unshuffle 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/bin/unshuffle CHANGED
@@ -1,3 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'unshuffle'
4
+
5
+ Unshuffle::CLI.start
data/lib/unshuffle.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "unshuffle/version"
2
2
 
3
3
  module Unshuffle
4
- # Your code goes here...
4
+ autoload :CLI, 'unshuffle/cli'
5
+ autoload :Client, 'unshuffle/client'
5
6
  end
@@ -0,0 +1,14 @@
1
+ require 'thor'
2
+
3
+ module Unshuffle
4
+ class CLI < Thor
5
+ desc 'tasks', 'Lists all your tasks'
6
+ method_options token: :string
7
+ def tasks
8
+ client = Unshuffle::Client.new(options[:token])
9
+ puts client.tasks.map(&:title).join("\n")
10
+ end
11
+
12
+ default_task :tasks
13
+ end
14
+ end
@@ -0,0 +1,33 @@
1
+ require 'rocket_pants'
2
+
3
+ module Unshuffle
4
+ class Client < RocketPants::Client
5
+ version 1
6
+ base_uri 'http://unshuffle.me/api'
7
+
8
+ def initialize(token)
9
+ @token = token
10
+ end
11
+
12
+ class Task < APISmith::Smash
13
+ property :title
14
+ property :priority
15
+ property :state
16
+ end
17
+
18
+ def tasks
19
+ get('tasks', as: Task)
20
+ end
21
+
22
+ def base_request_options
23
+ {
24
+ headers: {
25
+ 'Authorization' => ActionController::HttpAuthentication::Token.encode_credentials(token)
26
+ }
27
+ }
28
+ end
29
+
30
+ private
31
+ attr_reader :token
32
+ end
33
+ end
@@ -1,3 +1,3 @@
1
1
  module Unshuffle
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
File without changes
@@ -0,0 +1,57 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://unshuffle.me/api/1/tasks?
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Authorization:
11
+ - Token token="faketoken"
12
+ response:
13
+ status:
14
+ code: 200
15
+ message: OK
16
+ headers:
17
+ Server:
18
+ - nginx
19
+ Date:
20
+ - Wed, 13 Mar 2013 05:14:24 GMT
21
+ Content-Type:
22
+ - application/json; charset=utf-8
23
+ Content-Length:
24
+ - '2301'
25
+ Connection:
26
+ - keep-alive
27
+ X-Ua-Compatible:
28
+ - IE=Edge,chrome=1
29
+ Etag:
30
+ - ! '"091d710cbf9c40b0155ef41236df24a4"'
31
+ Cache-Control:
32
+ - must-revalidate, private, max-age=0
33
+ X-Request-Id:
34
+ - 4e30c15f4f7aa5f0dcbbe04ff43afb02
35
+ X-Runtime:
36
+ - '0.013982'
37
+ X-Rack-Cache:
38
+ - miss
39
+ body:
40
+ encoding: US-ASCII
41
+ string: ! '{"response":[{"completed_at":null,"created_at":"2013-02-20T04:56:10Z","detail":null,"id":1460,"priority":null,"snoozed_until":null,"state":"archived","title":"Example:
42
+ This is an archived task. Archive tasks you''ve decided not to do but don''t
43
+ want to lose.","updated_at":"2013-03-13T04:56:10Z","user_id":58},{"completed_at":null,"created_at":"2013-02-27T04:56:10Z","detail":null,"id":1461,"priority":null,"snoozed_until":null,"state":"new","title":"Example:
44
+ This task has been sitting in your Inbox for a while, you should archive it
45
+ or prioritize it.","updated_at":"2013-03-13T04:56:10Z","user_id":58},{"completed_at":"2013-03-13T04:56:10Z","created_at":"2013-03-06T04:56:10Z","detail":null,"id":1467,"priority":null,"snoozed_until":null,"state":"completed","title":"Example:
46
+ This is something you''ve already done!","updated_at":"2013-03-13T04:56:10Z","user_id":58},{"completed_at":null,"created_at":"2013-03-12T18:56:10Z","detail":null,"id":1462,"priority":null,"snoozed_until":null,"state":"new","title":"Example:
47
+ This task was created a few hours ago, possibly while you were on the move
48
+ and couldn''t decide when it should be done.","updated_at":"2013-03-13T04:56:10Z","user_id":58},{"completed_at":null,"created_at":"2013-03-13T04:51:10Z","detail":null,"id":1463,"priority":null,"snoozed_until":null,"state":"new","title":"Example:
49
+ This is a task you''ve just added, don''t worry you can decide when you want
50
+ to do it later.","updated_at":"2013-03-13T04:56:10Z","user_id":58},{"completed_at":null,"created_at":"2013-02-27T04:56:10Z","detail":null,"id":1465,"priority":1,"snoozed_until":null,"state":"scheduled","title":"Example:
51
+ You''ve decided this task is the next thing you should do.","updated_at":"2013-03-13T04:56:10Z","user_id":58},{"completed_at":null,"created_at":"2013-03-12T04:56:10Z","detail":null,"id":1464,"priority":1,"snoozed_until":null,"state":"started","title":"Example:
52
+ This is a task you''ve started doing, but haven''t yet finshed.","updated_at":"2013-03-13T04:56:10Z","user_id":58},{"completed_at":null,"created_at":"2013-03-13T04:46:10Z","detail":null,"id":1466,"priority":1,"snoozed_until":null,"state":"scheduled","title":"Example:
53
+ This task also needs to get done, but only after you''ve done the ones before
54
+ it.","updated_at":"2013-03-13T04:56:10Z","user_id":58}],"count":8}'
55
+ http_version:
56
+ recorded_at: Wed, 13 Mar 2013 05:14:26 GMT
57
+ recorded_with: VCR 2.4.0
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ module Unshuffle
4
+ describe CLI, vcr: {cassette_name: 'tasks'} do
5
+ it 'prints a list of tasks' do
6
+ args = ['--token', 'faketoken']
7
+ output = capture(:stdout) { CLI.start(args) }
8
+ output.should include("Example: This task also needs to get done, but only after you've done the ones before it.")
9
+ end
10
+
11
+ def capture(stream)
12
+ begin
13
+ stream = stream.to_s
14
+ eval "$#{stream} = StringIO.new"
15
+ yield
16
+ result = eval("$#{stream}").string
17
+ ensure
18
+ eval("$#{stream} = #{stream.upcase}")
19
+ end
20
+
21
+ result
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ module Unshuffle
4
+ describe Client, vcr: { cassette_name: 'tasks'} do
5
+ subject { Client.new('faketoken') }
6
+
7
+ describe '#tasks' do
8
+ it 'lists all tasks' do
9
+ tasks = subject.tasks
10
+ tasks.should have(8).tasks
11
+ tasks.last.should eq(
12
+ "priority" => 1,
13
+ "state" => "scheduled",
14
+ "title" => "Example: This task also needs to get done, but only after you've done the ones before it."
15
+ )
16
+ end
17
+ end
18
+ end
19
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,2 +1,13 @@
1
1
  $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
2
  require 'unshuffle'
3
+ require 'vcr'
4
+
5
+ VCR.configure do |c|
6
+ c.cassette_library_dir = 'spec/cassettes'
7
+ c.hook_into :webmock
8
+ c.configure_rspec_metadata!
9
+ end
10
+
11
+ RSpec.configure do |c|
12
+ c.treat_symbols_as_metadata_keys_with_true_values = true
13
+ end
data/unshuffle.gemspec CHANGED
@@ -18,7 +18,12 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.add_dependency "thor"
22
+ spec.add_dependency "rocket_pants"
23
+
21
24
  spec.add_development_dependency "bundler", "~> 1.3"
22
25
  spec.add_development_dependency "rake"
23
26
  spec.add_development_dependency "rspec"
27
+ spec.add_development_dependency "webmock", "< 1.10"
28
+ spec.add_development_dependency "vcr"
24
29
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unshuffle
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:
@@ -11,6 +11,38 @@ bindir: bin
11
11
  cert_chain: []
12
12
  date: 2013-03-13 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: thor
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rocket_pants
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
14
46
  - !ruby/object:Gem::Dependency
15
47
  name: bundler
16
48
  requirement: !ruby/object:Gem::Requirement
@@ -59,6 +91,38 @@ dependencies:
59
91
  - - ! '>='
60
92
  - !ruby/object:Gem::Version
61
93
  version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: webmock
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - <
100
+ - !ruby/object:Gem::Version
101
+ version: '1.10'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - <
108
+ - !ruby/object:Gem::Version
109
+ version: '1.10'
110
+ - !ruby/object:Gem::Dependency
111
+ name: vcr
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
62
126
  description: The official command line interface for http://unshuffle.me/
63
127
  email:
64
128
  - abhijit@hiremaga.com
@@ -77,7 +141,13 @@ files:
77
141
  - Rakefile
78
142
  - bin/unshuffle
79
143
  - lib/unshuffle.rb
144
+ - lib/unshuffle/cli.rb
145
+ - lib/unshuffle/client.rb
80
146
  - lib/unshuffle/version.rb
147
+ - spec/bin/unshuffle_spec.rb
148
+ - spec/cassettes/tasks.yml
149
+ - spec/lib/unshuffle/cli_spec.rb
150
+ - spec/lib/unshuffle/client_spec.rb
81
151
  - spec/spec_helper.rb
82
152
  - spec/unshuffle_spec.rb
83
153
  - unshuffle.gemspec
@@ -96,7 +166,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
96
166
  version: '0'
97
167
  segments:
98
168
  - 0
99
- hash: 776400741380783120
169
+ hash: 2117695239493698247
100
170
  required_rubygems_version: !ruby/object:Gem::Requirement
101
171
  none: false
102
172
  requirements:
@@ -105,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
175
  version: '0'
106
176
  segments:
107
177
  - 0
108
- hash: 776400741380783120
178
+ hash: 2117695239493698247
109
179
  requirements: []
110
180
  rubyforge_project:
111
181
  rubygems_version: 1.8.25
@@ -113,5 +183,9 @@ signing_key:
113
183
  specification_version: 3
114
184
  summary: The official command line interface for http://unshuffle.me/
115
185
  test_files:
186
+ - spec/bin/unshuffle_spec.rb
187
+ - spec/cassettes/tasks.yml
188
+ - spec/lib/unshuffle/cli_spec.rb
189
+ - spec/lib/unshuffle/client_spec.rb
116
190
  - spec/spec_helper.rb
117
191
  - spec/unshuffle_spec.rb