unshuffle 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/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