teamwork-ext 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a15928d46bb0e670bc8c82a6459714c636a476ae489e3c215941ffa57421f486
4
+ data.tar.gz: 4960e2492b153ec345d74058fe332e7cd07c90c20ce145db7fe91f56441fdd1e
5
+ SHA512:
6
+ metadata.gz: f6c8dc658e5704c1f50ae3131dfc2b269edac11ed40eff7c6252033e56b2be755916222dca6d23a2b8190946173de0849c2de9f8aacdbce2d2ec24cf827b0b15
7
+ data.tar.gz: 54e130fb0627caf56e0748ffb1ec1cecc27e130614a9900362f69e710d286de37a5f38e3bc4de0665d456844cc21f50e65d7de4adbd6891fa164c447659234f3
@@ -0,0 +1,25 @@
1
+ # -*- ruby -*-
2
+
3
+ require "autotest/restart"
4
+
5
+ # Autotest.add_hook :initialize do |at|
6
+ # at.testlib = "minitest/unit"
7
+ #
8
+ # at.extra_files << "../some/external/dependency.rb"
9
+ #
10
+ # at.libs << ":../some/external"
11
+ #
12
+ # at.add_exception "vendor"
13
+ #
14
+ # at.add_mapping(/dependency.rb/) do |f, _|
15
+ # at.files_matching(/test_.*rb$/)
16
+ # end
17
+ #
18
+ # %w(TestA TestB).each do |klass|
19
+ # at.extra_class_map[klass] = "test/test_misc.rb"
20
+ # end
21
+ # end
22
+
23
+ # Autotest.add_hook :run_command do |at|
24
+ # system "rake build"
25
+ # end
@@ -0,0 +1,11 @@
1
+ === 1.0.0 / 2013-10-04
2
+
3
+ * 1 major enhancement
4
+
5
+ * Birthday!
6
+
7
+ === 1.0.1 / 2018-12-27
8
+
9
+ * 1 major enhancement
10
+
11
+ * TeamworkExt
@@ -0,0 +1,8 @@
1
+ .autotest
2
+ History.txt
3
+ Manifest.txt
4
+ README.txt
5
+ Rakefile
6
+ bin/teamwork-ext
7
+ lib/teamwork-ext.rb
8
+ test/test_teamwork_ext.rb
@@ -0,0 +1,31 @@
1
+ = teamwork
2
+
3
+ == DESCRIPTION:
4
+
5
+ A gem wrapper for the Teamwork.com API. (Homepage: http://www.teamwork.com/ API Docs: http://developer.teamwork.com)
6
+
7
+ == REQUIREMENTS:
8
+
9
+ ruby 2.x
10
+
11
+ == INSTALL:
12
+
13
+ gem install teamwork-ext
14
+
15
+ == API EXAMPLES:
16
+
17
+ require 'teamwork-ext'
18
+
19
+ api = Teamwork::API.new project_name: 'your-site-name', api_key: 'your-api-key'
20
+
21
+ api.people pageSize: 100
22
+ api.people pageSize: 100, page: 2
23
+
24
+ == DEVELOPERS:
25
+
26
+ After checking out the source, run:
27
+
28
+ $ rake newb
29
+
30
+ This task will install any missing dependencies, run the tests/specs,
31
+ and generate the RDoc.
@@ -0,0 +1,23 @@
1
+ # -*- ruby -*-
2
+
3
+ require "rubygems"
4
+ require "hoe"
5
+
6
+ # Hoe.plugin :compiler
7
+ # Hoe.plugin :gem_prelude_sucks
8
+ # Hoe.plugin :inline
9
+ # Hoe.plugin :racc
10
+ # Hoe.plugin :rcov
11
+ # Hoe.plugin :rubyforge
12
+ Hoe.plugin :bundler
13
+
14
+ Hoe.spec "teamwork-ext" do
15
+ developer("Roman Skaskevich", "roman.skaskevich@gmail.com")
16
+ extra_deps << ['faraday']
17
+ extra_deps << ['faraday_middleware']
18
+ extra_deps << ['multi_json']
19
+ extra_deps << ['multipart-post']
20
+
21
+ license "MIT" # this should match the license in the README
22
+ end
23
+
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ abort "you need to write me"
@@ -0,0 +1,99 @@
1
+ require 'faraday'
2
+ require 'faraday_middleware'
3
+ require 'json'
4
+
5
+ module TeamworkExt
6
+
7
+ VERSION = "1.0.1"
8
+
9
+ class API
10
+
11
+ def initialize(project_name: nil, api_key: nil)
12
+ @project_name = project_name
13
+ @api_key = api_key
14
+ @api_conn = Faraday.new(url: "http://#{project_name}.teamworkpm.net/") do |c|
15
+ c.request :multipart
16
+ c.request :json
17
+ c.request :url_encoded
18
+ c.response :json, content_type: /\bjson$/
19
+ c.adapter :net_http
20
+ end
21
+
22
+ @api_conn.headers[:cache_control] = 'no-cache'
23
+ @api_conn.basic_auth(api_key, '')
24
+ end
25
+
26
+ def account(request_params)
27
+ response = @api_conn.get "account.json", request_params
28
+ response.body
29
+ end
30
+
31
+ def people(request_params)
32
+ response = @api_conn.get "people.json", request_params
33
+ response.body
34
+ end
35
+
36
+ def tasks(request_params)
37
+ response = @api_conn.get "tasks.json", request_params
38
+ response.body
39
+ end
40
+
41
+ def latestActivity(maxItems: 60, onlyStarred: false)
42
+ request_params = {
43
+ maxItems: maxItems,
44
+ onlyStarred: onlyStarred
45
+ }
46
+ response = @api_conn.get "latestActivity.json", request_params
47
+ response.body
48
+ end
49
+
50
+ def get_comment(id)
51
+ response = @api_conn.get "comments/#{id}.json"
52
+ response.body["comment"]
53
+ end
54
+
55
+ def get_company_id(name)
56
+ Hash[@api_conn.get('companies.json').body["companies"].map { |c| [c['name'], c['id']] }][name]
57
+ end
58
+
59
+ def create_company(name)
60
+ @api_conn.post 'companies.json', { company: { name: name } }
61
+ end
62
+
63
+ def get_or_create_company(name)
64
+ create_company(name) if !get_company_id(name)
65
+ get_company_id(name)
66
+ end
67
+
68
+ def create_project(name, client_name)
69
+ company_id = get_or_create_company(client_name)
70
+ @api_conn.post('projects.json', {
71
+ project: {
72
+ name: name,
73
+ companyId: company_id,
74
+ "category-id" => '0'
75
+ }
76
+ }).headers['id']
77
+ end
78
+
79
+ def update_project(id, name, client_name)
80
+ company_id = get_or_create_company(client_name)
81
+ @api_conn.put("projects/#{id}.json", {
82
+ project: {
83
+ name: name,
84
+ companyId: company_id
85
+ }
86
+ }).status
87
+ end
88
+
89
+ def delete_project(id)
90
+ @api_conn.delete "projects/#{id}.json"
91
+ end
92
+
93
+ def attach_post_to_project(title, body, project_id)
94
+ @api_conn.post "projects/#{project_id}/messsages.json", { post: { title: title, body: body } }
95
+ end
96
+ end
97
+ end
98
+
99
+
@@ -0,0 +1,8 @@
1
+ require "minitest/autorun"
2
+ require "teamwork-ext"
3
+
4
+ class TestTeamworkExt < MiniTest::Unit::TestCase
5
+ def test_sanity
6
+ flunk "write tests or I will kneecap you"
7
+ end
8
+ end
metadata ADDED
@@ -0,0 +1,149 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: teamwork-ext
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Roman Skaskevich
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-12-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday_middleware
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: multi_json
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: multipart-post
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rdoc
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '4.0'
76
+ - - "<"
77
+ - !ruby/object:Gem::Version
78
+ version: '7'
79
+ type: :development
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '4.0'
86
+ - - "<"
87
+ - !ruby/object:Gem::Version
88
+ version: '7'
89
+ - !ruby/object:Gem::Dependency
90
+ name: hoe
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '3.17'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '3.17'
103
+ description: 'A gem wrapper for the Teamwork.com API. (Homepage: http://www.teamwork.com/
104
+ API Docs: http://developer.teamwork.com)'
105
+ email:
106
+ - roman.skaskevich@gmail.com
107
+ executables:
108
+ - teamwork-ext
109
+ extensions: []
110
+ extra_rdoc_files:
111
+ - History.txt
112
+ - Manifest.txt
113
+ - README.txt
114
+ files:
115
+ - ".autotest"
116
+ - History.txt
117
+ - Manifest.txt
118
+ - README.txt
119
+ - Rakefile
120
+ - bin/teamwork-ext
121
+ - lib/teamwork-ext.rb
122
+ - test/test_teamwork_ext.rb
123
+ homepage:
124
+ licenses:
125
+ - MIT
126
+ metadata: {}
127
+ post_install_message:
128
+ rdoc_options:
129
+ - "--main"
130
+ - README.txt
131
+ require_paths:
132
+ - lib
133
+ required_ruby_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ required_rubygems_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ requirements: []
144
+ rubyforge_project:
145
+ rubygems_version: 2.7.3
146
+ signing_key:
147
+ specification_version: 4
148
+ summary: A gem wrapper for the Teamwork.com API
149
+ test_files: []