vworkapp_ruby 0.1.0 → 0.7.0

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.
Files changed (37) hide show
  1. data/Gemfile.lock +1 -1
  2. data/README.md +79 -12
  3. data/examples/example_1.rb +32 -0
  4. data/examples/example_2.rb +23 -0
  5. data/examples/example_3/Gemfile +5 -0
  6. data/examples/example_3/Gemfile.lock +35 -0
  7. data/examples/example_3/README.md +26 -0
  8. data/examples/example_3/public/style.css +25 -0
  9. data/examples/example_3/public/truck.png +0 -0
  10. data/examples/example_3/server.rb +41 -0
  11. data/examples/example_3/views/index.haml +47 -0
  12. data/lib/vworkapp_ruby.rb +13 -3
  13. data/lib/vworkapp_ruby/base/base.rb +173 -0
  14. data/lib/vworkapp_ruby/{httparty_monkey_patch.rb → base/httparty_monkey_patch.rb} +2 -4
  15. data/lib/vworkapp_ruby/base/resource.rb +105 -0
  16. data/lib/vworkapp_ruby/base/response_error.rb +26 -0
  17. data/lib/vworkapp_ruby/contact.rb +11 -0
  18. data/lib/vworkapp_ruby/custom_field.rb +11 -0
  19. data/lib/vworkapp_ruby/customer.rb +9 -97
  20. data/lib/vworkapp_ruby/job.rb +29 -146
  21. data/lib/vworkapp_ruby/location.rb +6 -23
  22. data/lib/vworkapp_ruby/step.rb +11 -0
  23. data/lib/vworkapp_ruby/telemetry.rb +6 -0
  24. data/lib/vworkapp_ruby/worker.rb +4 -81
  25. data/spec/base_spec.rb +174 -0
  26. data/spec/customer_spec.rb +30 -46
  27. data/spec/job_spec.rb +189 -143
  28. data/spec/resource_spec.rb +37 -0
  29. data/spec/support/active_model_lint.rb +19 -0
  30. data/spec/worker_spec.rb +6 -25
  31. data/vworkapp_ruby-0.1.0.gem +0 -0
  32. data/vworkapp_ruby.gemspec +5 -4
  33. metadata +46 -16
  34. data/examples/create_job.rb +0 -34
  35. data/examples/print_jobs.rb +0 -31
  36. data/lib/vworkapp_ruby/base.rb +0 -72
  37. data/lib/vworkapp_ruby/response_error.rb +0 -35
Binary file
@@ -1,15 +1,16 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "vworkapp_ruby"
3
- s.version = "0.1.0"
3
+ s.version = "0.7.0"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.authors = ["vWorkApp Inc.", "Aish Fenton"]
6
6
  s.email = ["info@vworkapp.com"]
7
- s.homepage = "http://api.vworkapp.com/api/"
8
- s.summary = %q{Simple interface to vWorkApp's api}
9
- s.description = %q{Simple interface to vWorkApp's api}
7
+ s.homepage = "http://developer.vworkapp.com"
8
+ s.summary = %q{A ruby wrapper for vWorkApp's API}
9
+ s.description = %q{A ruby wrapper for vWorkApp's API}
10
10
 
11
11
  s.required_rubygems_version = ">= 1.3.6"
12
12
 
13
+ s.add_dependency "active_model"
13
14
  s.add_dependency "httparty"
14
15
  s.add_dependency "gcoder"
15
16
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vworkapp_ruby
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 3
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
8
+ - 7
9
9
  - 0
10
- version: 0.1.0
10
+ version: 0.7.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - vWorkApp Inc.
@@ -16,10 +16,10 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2012-01-20 00:00:00 Z
19
+ date: 2012-02-02 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: httparty
22
+ name: active_model
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
25
  none: false
@@ -33,7 +33,7 @@ dependencies:
33
33
  type: :runtime
34
34
  version_requirements: *id001
35
35
  - !ruby/object:Gem::Dependency
36
- name: gcoder
36
+ name: httparty
37
37
  prerelease: false
38
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
39
  none: false
@@ -47,7 +47,7 @@ dependencies:
47
47
  type: :runtime
48
48
  version_requirements: *id002
49
49
  - !ruby/object:Gem::Dependency
50
- name: rspec
50
+ name: gcoder
51
51
  prerelease: false
52
52
  requirement: &id003 !ruby/object:Gem::Requirement
53
53
  none: false
@@ -58,9 +58,23 @@ dependencies:
58
58
  segments:
59
59
  - 0
60
60
  version: "0"
61
- type: :development
61
+ type: :runtime
62
62
  version_requirements: *id003
63
- description: Simple interface to vWorkApp's api
63
+ - !ruby/object:Gem::Dependency
64
+ name: rspec
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ hash: 3
72
+ segments:
73
+ - 0
74
+ version: "0"
75
+ type: :development
76
+ version_requirements: *id004
77
+ description: A ruby wrapper for vWorkApp's API
64
78
  email:
65
79
  - info@vworkapp.com
66
80
  executables: []
@@ -74,21 +88,37 @@ files:
74
88
  - Gemfile
75
89
  - Gemfile.lock
76
90
  - README.md
77
- - examples/create_job.rb
78
- - examples/print_jobs.rb
91
+ - examples/example_1.rb
92
+ - examples/example_2.rb
93
+ - examples/example_3/Gemfile
94
+ - examples/example_3/Gemfile.lock
95
+ - examples/example_3/README.md
96
+ - examples/example_3/public/style.css
97
+ - examples/example_3/public/truck.png
98
+ - examples/example_3/server.rb
99
+ - examples/example_3/views/index.haml
79
100
  - lib/vworkapp_ruby.rb
80
- - lib/vworkapp_ruby/base.rb
101
+ - lib/vworkapp_ruby/base/base.rb
102
+ - lib/vworkapp_ruby/base/httparty_monkey_patch.rb
103
+ - lib/vworkapp_ruby/base/resource.rb
104
+ - lib/vworkapp_ruby/base/response_error.rb
105
+ - lib/vworkapp_ruby/contact.rb
106
+ - lib/vworkapp_ruby/custom_field.rb
81
107
  - lib/vworkapp_ruby/customer.rb
82
- - lib/vworkapp_ruby/httparty_monkey_patch.rb
83
108
  - lib/vworkapp_ruby/job.rb
84
109
  - lib/vworkapp_ruby/location.rb
85
- - lib/vworkapp_ruby/response_error.rb
110
+ - lib/vworkapp_ruby/step.rb
111
+ - lib/vworkapp_ruby/telemetry.rb
86
112
  - lib/vworkapp_ruby/worker.rb
113
+ - spec/base_spec.rb
87
114
  - spec/customer_spec.rb
88
115
  - spec/job_spec.rb
116
+ - spec/resource_spec.rb
117
+ - spec/support/active_model_lint.rb
89
118
  - spec/worker_spec.rb
119
+ - vworkapp_ruby-0.1.0.gem
90
120
  - vworkapp_ruby.gemspec
91
- homepage: http://api.vworkapp.com/api/
121
+ homepage: http://developer.vworkapp.com
92
122
  licenses: []
93
123
 
94
124
  post_install_message:
@@ -122,6 +152,6 @@ rubyforge_project:
122
152
  rubygems_version: 1.8.11
123
153
  signing_key:
124
154
  specification_version: 3
125
- summary: Simple interface to vWorkApp's api
155
+ summary: A ruby wrapper for vWorkApp's API
126
156
  test_files: []
127
157
 
@@ -1,34 +0,0 @@
1
- # -------------
2
- # Example: Create job
3
- # -------------
4
- # Imports a list of jobs from Google Docs and creates them in vWorkApp
5
- #
6
-
7
- $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib') unless $LOAD_PATH.include?(File.dirname(__FILE__) + '/../lib')
8
- require "rubygems"
9
- require "vworkapp_ruby"
10
-
11
- MIN = 60
12
- HOUR = 60 * MIN
13
-
14
- VWorkApp.api_key = "AtuogECLCV2R7uT-fkPg"
15
-
16
- puts <<-EOL
17
- ----------------------------
18
- vWorkApp - Create Job
19
- ----------------------------
20
- EOL
21
-
22
- job = VWorkApp::Job.new(
23
- "ACME Inc.",
24
- "Standard Booking",
25
- 10 * HOUR,
26
- [
27
- VWorkApp::Step.new("End", VWorkApp::Location.from_address("201 1st Street, SF", :us)),
28
- VWorkApp::Step.new("Start", VWorkApp::Location.new("880 Harrison St!", 37.779536, -122.401503))
29
- ],
30
- [
31
- VWorkApp::CustomField.new("Note", "Hi There!"),
32
- ]
33
- )
34
- puts "Created Job, id is: #{job.create.id}"
@@ -1,31 +0,0 @@
1
- # -------------
2
- # Example: Print Jobs
3
- # -------------
4
- # Gets all workers, and then prints a list of each's unstarted jobs to the terminal.
5
- #
6
-
7
- $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib') unless $LOAD_PATH.include?(File.dirname(__FILE__) + '/../lib')
8
- require "rubygems"
9
- require "vworkapp_ruby"
10
-
11
- VWorkApp.api_key = "AtuogECLCV2R7uT-fkPg"
12
-
13
- # MultiXml.parser = :rexml
14
- # p MultiXml.parser
15
-
16
- puts <<-EOL
17
- ----------------------------
18
- vWorkApp - List of jobs
19
- ----------------------------
20
- EOL
21
- workers = VWorkApp::Worker.all
22
-
23
- workers.each do |worker|
24
- puts "Worker: #{worker.id}-#{worker.name}"
25
- jobs = VWorkApp::Job.find(:worker_id => worker.id, :state => "not_started")
26
- jobs.each do |job|
27
- puts "\t #{job.third_party_id || job.id}, #{job.customer_name}, #{job.template_name}"
28
- # p job
29
- end
30
- puts ""
31
- end
@@ -1,72 +0,0 @@
1
- require 'httparty'
2
- require 'active_support/core_ext/hash'
3
-
4
- module VWorkApp
5
-
6
- class << self
7
- @api_key = "YOU NEED TO SPECIFY YOUR API KEY!!"
8
-
9
- def api_key=(key)
10
- @api_key = key
11
- end
12
-
13
- def api_key
14
- @api_key
15
- end
16
-
17
- end
18
-
19
- module AttributeEquality
20
- def attributes_eql?(other, attributes)
21
- attributes.each do |attribute|
22
- return false unless self.send(attribute.to_sym) == other.send(attribute.to_sym)
23
- end
24
- true
25
- end
26
- end
27
-
28
- class Base
29
- include HTTParty
30
- include AttributeEquality
31
-
32
- base_uri 'api.vworkapp.com/api/2.0'
33
- # http_proxy 'localhost', 8888
34
-
35
- headers({
36
- "Content-Type" => "text/xml",
37
- "User-Agent" => "Ruby.vWorkApp.API"
38
- })
39
-
40
- def self.perform(action, url, query = {}, body = nil)
41
- options = {}
42
- options[:query] = { :api_key => VWorkApp.api_key }.merge(query)
43
-
44
- if body
45
- root = body.keys.first
46
- body_str = body[root].to_xml(:root => root)
47
- options[:body] = body_str
48
- end
49
-
50
- raw = self.send(action, url, options)
51
-
52
- case raw.response
53
- when Net::HTTPOK, Net::HTTPCreated
54
- yield(raw) if block_given?
55
- when Net::HTTPNotFound
56
- nil
57
- else
58
- bad_response(raw.response)
59
- end
60
- end
61
-
62
- def perform(action, url, query = {}, body = nil, &block)
63
- self.class.perform(action, url, query, body, &block)
64
- end
65
-
66
- def self.bad_response(response)
67
- raise "#{response.code} - #{response.msg}: #{response.body}"
68
- end
69
-
70
- end
71
-
72
- end
@@ -1,35 +0,0 @@
1
- module VWorkApp
2
-
3
- # Error raised on a bad response
4
- class ResponseError < StandardError
5
-
6
- attr_reader :response, :code, :errors
7
-
8
- def initialize(res)
9
- @response = res.response
10
- @code = res.code
11
- @errors = parse_errors(res.parsed_response)
12
- end
13
-
14
- def to_s
15
- p @response.body
16
- "#{code.to_s} #{response.msg}".strip
17
- end
18
-
19
- private
20
-
21
- def parse_errors(errors)
22
- return case errors
23
- when Hash
24
- errors.collect{|k,v| "#{k}: #{v}"}
25
- when String
26
- [errors]
27
- when Array
28
- errors
29
- else []
30
- end
31
- end
32
-
33
- end
34
-
35
- end