ruby-redmine_client 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2012 YOURNAME
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,12 @@
1
+ = RedmineClient
2
+
3
+ == Installation:
4
+
5
+ gem install ruby-redmine_client
6
+
7
+ == Usage:
8
+
9
+ redmine --help
10
+
11
+ This project rocks and uses MIT-LICENSE.
12
+
data/Rakefile ADDED
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env rake
2
+ include Rake::DSL
3
+
4
+ require "bundler/gem_tasks"
5
+
6
+ begin
7
+ require 'bundler/setup'
8
+ rescue LoadError
9
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
10
+ end
11
+ begin
12
+ require 'rdoc/task'
13
+ rescue LoadError
14
+ require 'rdoc/rdoc'
15
+ require 'rake/rdoctask'
16
+ RDoc::Task = Rake::RDocTask
17
+ end
18
+
19
+ RDoc::Task.new(:rdoc) do |rdoc|
20
+ rdoc.rdoc_dir = 'rdoc'
21
+ rdoc.title = 'RubyRescuetime'
22
+ rdoc.options << '--line-numbers'
23
+ rdoc.rdoc_files.include('README.rdoc')
24
+ rdoc.rdoc_files.include('lib/**/*.rb')
25
+ end
26
+
27
+
28
+
29
+ Bundler::GemHelper.install_tasks
30
+
31
+ # require 'rake/testtask'
32
+
33
+ #Rake::TestTask.new(:test) do |t|
34
+ # t.libs << 'lib'
35
+ # t.libs << 'test'
36
+ # t.pattern = 'test/**/*_test.rb'
37
+ # t.verbose = true
38
+ #end
39
+
40
+
41
+ #task :default => :test
42
+
data/bin/redmine ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'redmine/commands'
4
+
@@ -0,0 +1,73 @@
1
+ require 'nokogiri'
2
+ require 'open-uri'
3
+
4
+ module Redmine
5
+ class Client
6
+ include Redmine::Debug
7
+
8
+ NAMESPACE = { "atom" => "http://www.w3.org/2005/Atom" }
9
+ attr_accessor :key, :domain, :protocol
10
+
11
+ def initialize(options = {})
12
+ options = {
13
+ :key => nil,
14
+ :domain => nil,
15
+ :protocol => "http",
16
+ :debug => true
17
+ }.merge(options)
18
+
19
+ @debug = options[:debug]
20
+ @key = options[:key]
21
+ @domain = options[:domain]
22
+ @protocol = options[:protocol]
23
+
24
+ debug "[CLIENT]" do
25
+ puts options
26
+ end
27
+ end
28
+
29
+ def my_issues(limit = nil)
30
+ projects = {}
31
+
32
+ doc.xpath('//atom:entry', NAMESPACE ).each do |e|
33
+ id = e.xpath('.//atom:id', NAMESPACE).first.content.split("/").last
34
+ raw_title = e.xpath('.//atom:title', NAMESPACE).first.content
35
+ regex = /([^-]*) - (.*)/
36
+ match = raw_title.match(regex)
37
+ project = match[1]
38
+ title = match[2]
39
+
40
+
41
+ projects[project] ||= []
42
+ projects[project] << {
43
+ :id => id,
44
+ :title => title
45
+ }
46
+ end
47
+
48
+ debug "[URL]" do
49
+ puts issues_url
50
+ end
51
+
52
+ return projects
53
+ end
54
+
55
+ def doc
56
+ @doc ||= Nokogiri::XML(open(issues_url))
57
+ end
58
+
59
+ def reset
60
+ @doc = nil
61
+ end
62
+
63
+ private
64
+ def base_url
65
+ "#{protocol}://#{domain}/"
66
+ end
67
+
68
+ def issues_url
69
+ "#{base_url}issues.atom?assigned_to_id=me&key=#{key}&set_filter=1&sort=priority%3Adesc%2Cupdated_on%3Adesc"
70
+ end
71
+ end
72
+ end
73
+
@@ -0,0 +1,65 @@
1
+ require 'redmine'
2
+ require 'optparse'
3
+
4
+ # This hash will hold all of the options
5
+ # parsed from the command-line by OptionParser.
6
+ options = {}
7
+
8
+ optparse = OptionParser.new do|opts|
9
+ # Set a banner, displayed at the top of the help screen.
10
+ opts.banner = "Usage: redmine [options]"
11
+
12
+ # Define the options, and what they do
13
+ opts.on( '-d', '--debug', 'View debug messages' ) do
14
+ options[:debug] = true
15
+ end
16
+
17
+ opts.on( '-k', '--key KEY', 'Your key used.' ) do |key|
18
+ options[:key] = key
19
+ end
20
+
21
+ opts.on( '-do', '--domain domain', 'Your domain used.' ) do |domain|
22
+ options[:domain] = domain
23
+ end
24
+
25
+ opts.on( '-p', '--protocol PROTOCOL', 'Your protocol used.' ) do |protocol|
26
+ options[:protocol] = protocol
27
+ end
28
+
29
+ options[:config] = File.join(Dir.home, ".redmine", "config.yml")
30
+ opts.on( '-c', '--config FILE', 'Path to your config-file. (Default: ~/.redmine/config.yml)' ) do |config|
31
+ options[:config] = config
32
+ end
33
+
34
+ options[:path] = File.join(Dir.home, ".redmine")
35
+ opts.on('--path PATH', 'Path to your config directory. (Default: ~/.redmine/)' ) do |path|
36
+ options[:path] = path
37
+ end
38
+
39
+ # This displays the help screen, all programs are assumed to have this option.
40
+ opts.on( '-h', '--help', 'Display this screen' ) do
41
+ puts opts
42
+ exit
43
+ end
44
+ end
45
+
46
+ # Parse the command-line. Remember there are two forms
47
+ # of the parse method. The 'parse' method simply parses
48
+ # ARGV, while the 'parse!' method parses ARGV and removes
49
+ # any options found there, as well as any parameters for
50
+ # the options. What's left is the list of files to resize.
51
+ optparse.parse!
52
+
53
+ config = Redmine::Config.new(options)
54
+ client = Redmine::Client.new(config)
55
+
56
+ issues = client.my_issues
57
+
58
+ issues.each do |project, issues|
59
+ puts "\n[#{project}]"
60
+
61
+ issues.each do |i|
62
+ puts "* #{i[:title]}"
63
+ end
64
+ end
65
+
@@ -0,0 +1,98 @@
1
+ module Redmine
2
+ class Config
3
+ include Redmine::Debug
4
+ require 'fileutils'
5
+ require 'yaml'
6
+
7
+ DEFAULT_PATH = File.join(Dir.home, ".redmine")
8
+ DEFAULT_FILE = "config.yml"
9
+
10
+ DEFAULT_CONFIG = {
11
+ :key => nil
12
+ }
13
+
14
+ # Constructor
15
+ def initialize(options = {})
16
+ options = {
17
+ :debug => false,
18
+ :domain => nil,
19
+ :key => nil,
20
+ :config => File.join(DEFAULT_PATH, DEFAULT_FILE),
21
+ :path => nil,
22
+ :protocol => "http"
23
+ }.merge(options)
24
+
25
+ @debug = options[:debug]
26
+ @config_path = options[:config] ||
27
+ File.join(options[:path] || DEFAULT_PATH, DEFAULT_FILE)
28
+ config = read_config(@config_path)
29
+
30
+ @config = {
31
+ :key => options[:key] || config[:key],
32
+ :domain => options[:domain] || config[:domain],
33
+ :protocol => options[:protocol] || config[:protocol],
34
+ :path => DEFAULT_PATH || config[:path]
35
+ }
36
+ update if @config != config
37
+ end
38
+
39
+ def key
40
+ @config[:key]
41
+ end
42
+
43
+ def domain
44
+ @config[:domain]
45
+ end
46
+
47
+ def protocol
48
+ @config[:protocol]
49
+ end
50
+
51
+ # Path where to store data
52
+ def path
53
+ @config[:path]
54
+ end
55
+
56
+ def location
57
+ @config_path
58
+ end
59
+
60
+ # Write current config to disc
61
+ def update
62
+ update_config(@config, @config_path)
63
+ end
64
+
65
+ def to_hash
66
+ {
67
+ :debug => debug?,
68
+ :key => key,
69
+ :domain => domain,
70
+ :protocol => protocol
71
+ }
72
+ end
73
+
74
+
75
+
76
+ private
77
+ def read_config(path)
78
+ create_config_file(path) unless File.exist?(path)
79
+ YAML::load(File.open(path))
80
+ end
81
+
82
+ def create_config_file(path)
83
+ write_config_file(DEFAULT_CONFIG, path)
84
+ end
85
+
86
+ def update_config(config, path)
87
+ write_config_file(config, path)
88
+ end
89
+
90
+ def write_config_file(config, path)
91
+ FileUtils.mkdir_p(File.dirname(path))
92
+ File.open(path, 'w') do |f|
93
+ f.write(YAML::dump(config))
94
+ end
95
+ end
96
+ end
97
+ end
98
+
@@ -0,0 +1,18 @@
1
+ module Redmine
2
+ module Debug
3
+ # Debug-mode turned on?
4
+ def debug?
5
+ @debug == true
6
+ end
7
+
8
+ private
9
+ # Debug-Wrapper
10
+ def debug(msg = nil, &block)
11
+ return unless debug?
12
+
13
+ puts msg if msg
14
+ yield if block_given?
15
+ end
16
+ end
17
+ end
18
+
@@ -0,0 +1,4 @@
1
+ module Redmine
2
+ VERSION = "0.0.1"
3
+ end
4
+
data/lib/redmine.rb ADDED
@@ -0,0 +1,8 @@
1
+ require 'redmine/version'
2
+ require 'redmine/debug'
3
+ require 'redmine/config'
4
+ require 'redmine/client'
5
+
6
+ module Redmine
7
+ end
8
+
@@ -0,0 +1,36 @@
1
+ require 'spec_helper.rb'
2
+
3
+ describe Redmine::Client do
4
+ subject do
5
+ Redmine::Client.new({
6
+ :key => "foo",
7
+ :domain => "redmine.werbeboten.de",
8
+ :debug => true
9
+ })
10
+ end
11
+
12
+ its(:protocol){ should == "http" }
13
+ its(:domain){ should == "redmine.werbeboten.de" }
14
+ its(:key){ should == "foo" }
15
+
16
+ describe ".my_issues" do
17
+ before(:all) do
18
+ f = File.new("spec/stub/my_issues.atom")
19
+ subject.stub(:open => f.read)
20
+ end
21
+
22
+ it{ subject.my_issues.should be_kind_of(Hash) }
23
+
24
+ describe "result" do
25
+ let(:result) do
26
+ k = subject.my_issues.keys.first
27
+ subject.my_issues[k]
28
+ end
29
+
30
+ it{ result.should be_kind_of(Array) }
31
+ it{ result.first[:id].should be_kind_of(String) }
32
+ it{ result.first[:title].should be_kind_of(String) }
33
+ end
34
+ end
35
+ end
36
+
@@ -0,0 +1,2 @@
1
+ require 'redmine'
2
+
@@ -0,0 +1,237 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <feed xmlns="http://www.w3.org/2005/Atom">
3
+ <title>Redmine: Tickets</title>
4
+ <link rel="self" href="http://redmine.werbeboten.de/issues.atom?assigned_to_id=me&amp;amp;key=6c6429a7209135b8c5f2ce7290397f0c40c683af&amp;amp;set_filter=1&amp;amp;sort=priority%3Adesc%2Cupdated_on%3Adesc"/>
5
+ <link rel="alternate" href="http://redmine.werbeboten.de/issues?assigned_to_id=me&amp;amp;set_filter=1&amp;amp;sort=priority%3Adesc%2Cupdated_on%3Adesc"/>
6
+ <id>http://redmine.werbeboten.de/</id>
7
+ <updated>2012-03-12T10:53:08+01:00</updated>
8
+ <author>
9
+ <name>Redmine</name>
10
+ </author>
11
+ <generator uri="http://www.redmine.org/">
12
+ Redmine </generator>
13
+ <entry>
14
+ <title>1.2 Content Manager for Facebook - Fehler #338 (Neu): Es ist ein Fehler in 'parse_signed_request'...</title>
15
+ <link rel="alternate" href="http://redmine.werbeboten.de/issues/338"/>
16
+ <id>http://redmine.werbeboten.de/issues/338</id>
17
+ <updated>2012-03-12T10:53:08+01:00</updated>
18
+ <author>
19
+ <name>Patrick Helm</name>
20
+ <email>ph@werbeboten.de</email>
21
+ </author>
22
+ <content type="html">
23
+ &lt;p&gt;Tab: &lt;a class="external" href="http://www.facebook.com/pages/load/?sk=app_282527741775770&amp;#38;app_data="&gt;http://www.facebook.com/pages/load/?sk=app_282527741775770&amp;#38;app_data=&lt;/a&gt;&lt;/p&gt;
24
+
25
+
26
+ &lt;pre&gt;
27
+ --- !ruby/object:Facebook
28
+ app_id: "282527741775770"
29
+ data: {}
30
+
31
+ error: true
32
+ oauth: !ruby/object:Koala::Facebook::OAuth
33
+ app_id: "282527741775770"
34
+ app_secret:
35
+ oauth_callback_url:
36
+ signed_request: haT1aTdoBEX8b1m_1PR8trR-OPLeIneoDVbl_m1bLRQ.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImV4cGlyZXMiOjEzMzE1NDI4MDAsImlzc3VlZF9hdCI6MTMzMTUzNjg5Niwib2F1dGhfdG9rZW4iOiJBQUFFQTlSMndENW9CQUs2dEhaQm5kOG5aQ3RDUXVlZ01oZ3RtWHdaQUlDZnZsYWtCbkdWcHBOZVpDeHBCZzFEUW04WkJLV0JDWHVDYjB1TGJFOGhHRXg0UnBKZlpDTENaQWtJSVdWM1NWM0JoUVpEWkQiLCJwYWdlIjp7ImlkIjoiMTM0MjM2NzQ5OTM3OTQwIiwibGlrZWQiOnRydWUsImFkbWluIjp0cnVlfSwidXNlciI6eyJjb3VudHJ5IjoiZGUiLCJsb2NhbGUiOiJlbl9VUyIsImFnZSI6eyJtaW4iOjIxfX0sInVzZXJfaWQiOiI3MzQ3OTAyMTIifQ
37
+ visit: !ruby/ActiveRecord:Session
38
+ attributes:
39
+ id:
40
+ session_id: e73062207f4f79b493b8949fdd604b9e
41
+ data:
42
+ created_at:
43
+ updated_at:
44
+ &lt;/pre&gt; </content>
45
+ </entry>
46
+ <entry>
47
+ <title>1.2 Content Manager for Facebook - Fehler #337 (Neu): Es ist ein Fehler in 'get_connections' im '...</title>
48
+ <link rel="alternate" href="http://redmine.werbeboten.de/issues/337"/>
49
+ <id>http://redmine.werbeboten.de/issues/337</id>
50
+ <updated>2012-03-12T10:51:47+01:00</updated>
51
+ <author>
52
+ <name>Patrick Helm</name>
53
+ <email>ph@werbeboten.de</email>
54
+ </author>
55
+ <content type="html">
56
+ &lt;p&gt;Tab: &lt;a class="external" href="http://www.facebook.com/pages/load/116853554995627?sk=app_103277853096674&amp;#38;app_data="&gt;http://www.facebook.com/pages/load/116853554995627?sk=app_103277853096674&amp;#38;app_data=&lt;/a&gt;&lt;br /&gt;User: &lt;a class="external" href="http://www.facebook.com/profile.php?id=734790212"&gt;http://www.facebook.com/profile.php?id=734790212&lt;/a&gt;&lt;/p&gt;
57
+
58
+
59
+ &lt;pre&gt;
60
+ --- !ruby/object:Facebook
61
+ app_id: "103277853096674"
62
+ data:
63
+ algorithm: HMAC-SHA256
64
+ expires: 1331323200
65
+ issued_at: 1331318825
66
+ oauth_token: AAABd7jZBZCOuIBAEU8setS2mAUg784EUlBZAJWe7My9yHwfqWZCBUda0wZC7wekZBEKA7PA7xKb8ZCZBUS2paJ2bp7ZCaegTaX2VTelj5AEihCAZDZD
67
+ page:
68
+ id: "116853554995627"
69
+ liked: true
70
+ admin: true
71
+ user:
72
+ country: de
73
+ locale: en_US
74
+ age:
75
+ min: 21
76
+ user_id: "734790212"
77
+ signed_request: ErbP552f3Jk7o5G57MASp97QA6ZnOMm3hJ2dbBu4Z1w.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImV4cGlyZXMiOjEzMzEzMjMyMDAsImlzc3VlZF9hdCI6MTMzMTMxODgyNSwib2F1dGhfdG9rZW4iOiJBQUFCZDdqWkJaQ091SUJBRVU4c2V0UzJtQVVnNzg0RVVsQlpBSldlN015OXlId2ZxV1pDQlVkYTB3WkM3d2VrWkJFS0E3UEE3eEtiOFpDWkJVUzJwYUoyYnA3WkNhZWdUYVgyVlRlbGo1QUVpaENBWkRaRCIsInBhZ2UiOnsiaWQiOiIxMTY4NTM1NTQ5OTU2MjciLCJsaWtlZCI6dHJ1ZSwiYWRtaW4iOnRydWV9LCJ1c2VyIjp7ImNvdW50cnkiOiJkZSIsImxvY2FsZSI6ImVuX1VTIiwiYWdlIjp7Im1pbiI6MjF9fSwidXNlcl9pZCI6IjczNDc5MDIxMiJ9
78
+ app_data:
79
+ error: false
80
+ graph: !ruby/object:Koala::Facebook::API
81
+ access_token: AAABd7jZBZCOuIBAEU8setS2mAUg784EUlBZAJWe7My9yHwfqWZCBUda0wZC7wekZBEKA7PA7xKb8ZCZBUS2paJ2bp7ZCaegTaX2VTelj5AEihCAZDZD
82
+ incoming_data:
83
+ oauth_user: AAABd7jZBZCOuIBAEU8setS2mAUg784EUlBZAJWe7My9yHwfqWZCBUda0wZC7wekZBEKA7PA7xKb8ZCZBUS2paJ2bp7ZCaegTaX2VTelj5AEihCAZDZD
84
+ signed_request: ErbP552f3Jk7o5G57MASp97QA6ZnOMm3hJ2dbBu4Z1w.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImV4cGlyZXMiOjEzMzEzMjMyMDAsImlzc3VlZF9hdCI6MTMzMTMxODgyNSwib2F1dGhfdG9rZW4iOiJBQUFCZDdqWkJaQ091SUJBRVU4c2V0UzJtQVVnNzg0RVVsQlpBSldlN015OXlId2ZxV1pDQlVkYTB3WkM3d2VrWkJFS0E3UEE3eEtiOFpDWkJVUzJwYUoyYnA3WkNhZWdUYVgyVlRlbGo1QUVpaENBWkRaRCIsInBhZ2UiOnsiaWQiOiIxMTY4NTM1NTQ5OTU2MjciLCJsaWtlZCI6dHJ1ZSwiYWRtaW4iOnRydWV9LCJ1c2VyIjp7ImNvdW50cnkiOiJkZSIsImxvY2FsZSI6ImVuX1VTIiwiYWdlIjp7Im1pbiI6MjF9fSwidXNlcl9pZCI6IjczNDc5MDIxMiJ9
85
+ visit: !ruby/ActiveRecord:Session
86
+ attributes:
87
+ id: 6
88
+ session_id: b8cbe0ec87418a912255ee650a8fce84
89
+ data: |
90
+ ---
91
+ :app_id: "103277853096674"
92
+ :incoming_data:
93
+ :fb:
94
+ algorithm: HMAC-SHA256
95
+ expires: 1331323200
96
+ issued_at: 1331318825
97
+ oauth_token: AAABd7jZBZCOuIBAEU8setS2mAUg784EUlBZAJWe7My9yHwfqWZCBUda0wZC7wekZBEKA7PA7xKb8ZCZBUS2paJ2bp7ZCaegTaX2VTelj5AEihCAZDZD
98
+ page:
99
+ id: "116853554995627"
100
+ liked: true
101
+ admin: true
102
+ user:
103
+ country: de
104
+ locale: en_US
105
+ age:
106
+ min: 21
107
+ user_id: "734790212"
108
+ signed_request: ErbP552f3Jk7o5G57MASp97QA6ZnOMm3hJ2dbBu4Z1w.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImV4cGlyZXMiOjEzMzEzMjMyMDAsImlzc3VlZF9hdCI6MTMzMTMxODgyNSwib2F1dGhfdG9rZW4iOiJBQUFCZDdqWkJaQ091SUJBRVU4c2V0UzJtQVVnNzg0RVVsQlpBSldlN015OXlId2ZxV1pDQlVkYTB3WkM3d2VrWkJFS0E3UEE3eEtiOFpDWkJVUzJwYUoyYnA3WkNhZWdUYVgyVlRlbGo1QUVpaENBWkRaRCIsInBhZ2UiOnsiaWQiOiIxMTY4NTM1NTQ5OTU2MjciLCJsaWtlZCI6dHJ1ZSwiYWRtaW4iOnRydWV9LCJ1c2VyIjp7ImNvdW50cnkiOiJkZSIsImxvY2FsZSI6ImVuX1VTIiwiYWdlIjp7Im1pbiI6MjF9fSwidXNlcl9pZCI6IjczNDc5MDIxMiJ9
109
+ app_data:
110
+ :default_widget: 0
111
+ :locale: :en
112
+
113
+ created_at: 2012-01-26 16:10:13.404206 Z
114
+ updated_at: 2012-03-09 18:47:23.150634 Z
115
+ &lt;/pre&gt; </content>
116
+ </entry>
117
+ <entry>
118
+ <title>1.2 Content Manager for Facebook - Fehler #321 (Neu): Fix Errors in Wiki</title>
119
+ <link rel="alternate" href="http://redmine.werbeboten.de/issues/321"/>
120
+ <id>http://redmine.werbeboten.de/issues/321</id>
121
+ <updated>2012-02-27T21:24:42+01:00</updated>
122
+ <author>
123
+ <name>Patrick Helm</name>
124
+ <email>ph@werbeboten.de</email>
125
+ </author>
126
+ <content type="html">
127
+ &lt;p&gt;Aufgetretene Fehler:&lt;/p&gt;
128
+
129
+
130
+ &lt;ul&gt;
131
+ &lt;li&gt;PDF-Export von Wiki-Seiten fehlerhaft&lt;/li&gt;
132
+ &lt;li&gt;Fehlende Assets (=Dokumente)&lt;/li&gt;
133
+ &lt;/ul&gt; </content>
134
+ </entry>
135
+ <entry>
136
+ <title>1.2 Content Manager for Facebook - Entwicklung #320 (In Bearbeitung): CMF: Technische Planung</title>
137
+ <link rel="alternate" href="http://redmine.werbeboten.de/issues/320"/>
138
+ <id>http://redmine.werbeboten.de/issues/320</id>
139
+ <updated>2012-02-27T20:03:42+01:00</updated>
140
+ <author>
141
+ <name>Patrick Helm</name>
142
+ <email>ph@werbeboten.de</email>
143
+ </author>
144
+ <content type="html">
145
+ &lt;a name="TODO"&gt;&lt;/a&gt;
146
+ &lt;h2 &gt;TODO&lt;a href="#TODO" class="wiki-anchor"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
147
+
148
+
149
+ &lt;ul&gt;
150
+ &lt;li&gt;Tracker-Kategorie: Planung(?), Entwicklungs passt nicht&lt;/li&gt;
151
+ &lt;li&gt;Ticket-Content&lt;/li&gt;
152
+ &lt;/ul&gt;
153
+
154
+
155
+ &lt;a name="Ergebnisse"&gt;&lt;/a&gt;
156
+ &lt;h2 &gt;Ergebnisse&lt;a href="#Ergebnisse" class="wiki-anchor"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
157
+
158
+
159
+ &lt;ul&gt;
160
+ &lt;li&gt;&lt;a href="http://redmine.werbeboten.de/projects/contentmanagerforfacebook/wiki/Entwicklung" class="wiki-page"&gt;Wiki&lt;/a&gt;&lt;/li&gt;
161
+ &lt;/ul&gt; </content>
162
+ </entry>
163
+ <entry>
164
+ <title>CMF 1.1 - Fehler #313 (In Bearbeitung): Image vorlage asset problem. </title>
165
+ <link rel="alternate" href="http://redmine.werbeboten.de/issues/313"/>
166
+ <id>http://redmine.werbeboten.de/issues/313</id>
167
+ <updated>2012-02-08T10:38:34+01:00</updated>
168
+ <author>
169
+ <name>Johannes G&#246;tze</name>
170
+ <email>jg@werbeboten.de</email>
171
+ </author>
172
+ <content type="html">
173
+ &lt;p&gt;vorlage wurde von user &#252;berschrieben. &lt;br /&gt;danach &#228;nderung der vorlage nicht mehr m&#246;glich.&lt;/p&gt; </content>
174
+ </entry>
175
+ <entry>
176
+ <title>CMF 1.x - Fehler #290 (Neu): Inkonsistenz: Nutzungsbedingungen &lt;--&gt; Verhalten</title>
177
+ <link rel="alternate" href="http://redmine.werbeboten.de/issues/290"/>
178
+ <id>http://redmine.werbeboten.de/issues/290</id>
179
+ <updated>2012-02-03T10:35:59+01:00</updated>
180
+ <author>
181
+ <name>Patrick Helm</name>
182
+ <email>ph@werbeboten.de</email>
183
+ </author>
184
+ <content type="html">
185
+ &lt;a name="Nutzungsbedingungen"&gt;&lt;/a&gt;
186
+ &lt;h3 &gt;Nutzungsbedingungen&lt;a href="#Nutzungsbedingungen" class="wiki-anchor"&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt;
187
+
188
+
189
+ &lt;p&gt;&lt;em&gt;Der Vertrag zwischen der Anbieterin und dem Nutzer wird auf die Dauer von einem Monat bei Einzelpaketen wie "Branding Tab" und "Promotion Tab" und bei den Paketen "Branding Set" und "Promotion Set" auf eine Dauer von 12 Monaten geschlossen. Er verl&#228;ngert sich automatisch um weitere drei Monate, wenn der Nutzer nicht fristgem&#228;&#223; k&#252;ndigt.&lt;/em&gt;&lt;/p&gt;
190
+
191
+
192
+ &lt;a name="Aktuelles-Verhalten"&gt;&lt;/a&gt;
193
+ &lt;h3 &gt;Aktuelles Verhalten&lt;a href="#Aktuelles-Verhalten" class="wiki-anchor"&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt;
194
+
195
+
196
+ &lt;p&gt;Der Vertrag verl&#228;ngert sich um die im Paket definierte Mindestlaufzeit.&lt;/p&gt; </content>
197
+ </entry>
198
+ <entry>
199
+ <title>CMF 1.x - Feature #246 (Neu): Iconv deprecated</title>
200
+ <link rel="alternate" href="http://redmine.werbeboten.de/issues/246"/>
201
+ <id>http://redmine.werbeboten.de/issues/246</id>
202
+ <updated>2012-01-26T10:46:08+01:00</updated>
203
+ <author>
204
+ <name>Patrick Helm</name>
205
+ <email>ph@werbeboten.de</email>
206
+ </author>
207
+ <content type="html">
208
+ &lt;p&gt;Iconv is deprecated with ruby 1.9.3.&lt;br /&gt;Use String#encode instead.&lt;/p&gt;
209
+
210
+
211
+ &lt;p&gt;Example:&lt;br /&gt;&lt;a class="external" href="https://github.com/eagleas/maruku/commit/0dd3591f281e5b5e464fd98608c21f6737a05859"&gt;https://github.com/eagleas/maruku/commit/0dd3591f281e5b5e464fd98608c21f6737a05859&lt;/a&gt;&lt;/p&gt; </content>
212
+ </entry>
213
+ <entry>
214
+ <title>Deal App - Fehler #57 (Neu): Railtie::Engine Erweiterung nur m&#246;glich, wenn ClassCaching aktiviert</title>
215
+ <link rel="alternate" href="http://redmine.werbeboten.de/issues/57"/>
216
+ <id>http://redmine.werbeboten.de/issues/57</id>
217
+ <updated>2011-09-08T17:27:42+02:00</updated>
218
+ <author>
219
+ <name>Patrick Helm</name>
220
+ <email>ph@werbeboten.de</email>
221
+ </author>
222
+ <content type="html">
223
+ &lt;p&gt;Die Erweiterung der Engine in der Host-App, ist nur m&#246;glich, wenn ClassCaching:&lt;br /&gt;&lt;pre&gt;
224
+ config.cache_classes = true
225
+ &lt;/pre&gt;&lt;/p&gt;
226
+
227
+
228
+ &lt;p&gt;aktiviert ist.&lt;/p&gt;
229
+
230
+
231
+ &lt;p&gt;Dies ist im Production-Mode kein Problem, da es dort standardm&#228;&#223;ig aktiviert ist.&lt;br /&gt;Im Development jedoch nervig, da f&#252;r jede Code-&#196;nderung der Server neugestartet werden muss.&lt;/p&gt;
232
+
233
+
234
+ &lt;p&gt;Es sollte nach einer L&#246;sung f&#252;r das Problem gesucht werden.&lt;/p&gt; </content>
235
+ </entry>
236
+ </feed>
237
+
metadata ADDED
@@ -0,0 +1,90 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby-redmine_client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Patrick Helm
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-03-15 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nokogiri
16
+ requirement: &78951450 !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: *78951450
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &78950890 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: '2.6'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *78950890
36
+ description: Client to access Redmine information
37
+ email:
38
+ - deradon87@gmail.com
39
+ executables:
40
+ - redmine
41
+ extensions: []
42
+ extra_rdoc_files: []
43
+ files:
44
+ - bin/redmine
45
+ - lib/redmine/commands.rb
46
+ - lib/redmine/config.rb
47
+ - lib/redmine/debug.rb
48
+ - lib/redmine/client.rb
49
+ - lib/redmine/version.rb
50
+ - lib/redmine.rb
51
+ - MIT-LICENSE
52
+ - Rakefile
53
+ - README.rdoc
54
+ - spec/redmine_client_spec.rb
55
+ - spec/spec_helper.rb
56
+ - spec/stub/my_issues.atom
57
+ homepage: https://github.com/Deradon/Ruby-Redmine_client
58
+ licenses: []
59
+ post_install_message:
60
+ rdoc_options: []
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ segments:
70
+ - 0
71
+ hash: -8014691
72
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ segments:
79
+ - 0
80
+ hash: -8014691
81
+ requirements: []
82
+ rubyforge_project:
83
+ rubygems_version: 1.8.10
84
+ signing_key:
85
+ specification_version: 3
86
+ summary: Client to access Redmine information
87
+ test_files:
88
+ - spec/redmine_client_spec.rb
89
+ - spec/spec_helper.rb
90
+ - spec/stub/my_issues.atom