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 +20 -0
- data/README.rdoc +12 -0
- data/Rakefile +42 -0
- data/bin/redmine +4 -0
- data/lib/redmine/client.rb +73 -0
- data/lib/redmine/commands.rb +65 -0
- data/lib/redmine/config.rb +98 -0
- data/lib/redmine/debug.rb +18 -0
- data/lib/redmine/version.rb +4 -0
- data/lib/redmine.rb +8 -0
- data/spec/redmine_client_spec.rb +36 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/stub/my_issues.atom +237 -0
- metadata +90 -0
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
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,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
|
+
|
data/lib/redmine.rb
ADDED
@@ -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
|
+
|
data/spec/spec_helper.rb
ADDED
@@ -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;key=6c6429a7209135b8c5f2ce7290397f0c40c683af&amp;set_filter=1&amp;sort=priority%3Adesc%2Cupdated_on%3Adesc"/>
|
5
|
+
<link rel="alternate" href="http://redmine.werbeboten.de/issues?assigned_to_id=me&amp;set_filter=1&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
|
+
<p>Tab: <a class="external" href="http://www.facebook.com/pages/load/?sk=app_282527741775770&#38;app_data=">http://www.facebook.com/pages/load/?sk=app_282527741775770&#38;app_data=</a></p>
|
24
|
+
|
25
|
+
|
26
|
+
<pre>
|
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
|
+
</pre> </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
|
+
<p>Tab: <a class="external" href="http://www.facebook.com/pages/load/116853554995627?sk=app_103277853096674&#38;app_data=">http://www.facebook.com/pages/load/116853554995627?sk=app_103277853096674&#38;app_data=</a><br />User: <a class="external" href="http://www.facebook.com/profile.php?id=734790212">http://www.facebook.com/profile.php?id=734790212</a></p>
|
57
|
+
|
58
|
+
|
59
|
+
<pre>
|
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
|
+
</pre> </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
|
+
<p>Aufgetretene Fehler:</p>
|
128
|
+
|
129
|
+
|
130
|
+
<ul>
|
131
|
+
<li>PDF-Export von Wiki-Seiten fehlerhaft</li>
|
132
|
+
<li>Fehlende Assets (=Dokumente)</li>
|
133
|
+
</ul> </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
|
+
<a name="TODO"></a>
|
146
|
+
<h2 >TODO<a href="#TODO" class="wiki-anchor">&para;</a></h2>
|
147
|
+
|
148
|
+
|
149
|
+
<ul>
|
150
|
+
<li>Tracker-Kategorie: Planung(?), Entwicklungs passt nicht</li>
|
151
|
+
<li>Ticket-Content</li>
|
152
|
+
</ul>
|
153
|
+
|
154
|
+
|
155
|
+
<a name="Ergebnisse"></a>
|
156
|
+
<h2 >Ergebnisse<a href="#Ergebnisse" class="wiki-anchor">&para;</a></h2>
|
157
|
+
|
158
|
+
|
159
|
+
<ul>
|
160
|
+
<li><a href="http://redmine.werbeboten.de/projects/contentmanagerforfacebook/wiki/Entwicklung" class="wiki-page">Wiki</a></li>
|
161
|
+
</ul> </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ötze</name>
|
170
|
+
<email>jg@werbeboten.de</email>
|
171
|
+
</author>
|
172
|
+
<content type="html">
|
173
|
+
<p>vorlage wurde von user überschrieben. <br />danach änderung der vorlage nicht mehr möglich.</p> </content>
|
174
|
+
</entry>
|
175
|
+
<entry>
|
176
|
+
<title>CMF 1.x - Fehler #290 (Neu): Inkonsistenz: Nutzungsbedingungen <--> 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
|
+
<a name="Nutzungsbedingungen"></a>
|
186
|
+
<h3 >Nutzungsbedingungen<a href="#Nutzungsbedingungen" class="wiki-anchor">&para;</a></h3>
|
187
|
+
|
188
|
+
|
189
|
+
<p><em>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ängert sich automatisch um weitere drei Monate, wenn der Nutzer nicht fristgemäß kündigt.</em></p>
|
190
|
+
|
191
|
+
|
192
|
+
<a name="Aktuelles-Verhalten"></a>
|
193
|
+
<h3 >Aktuelles Verhalten<a href="#Aktuelles-Verhalten" class="wiki-anchor">&para;</a></h3>
|
194
|
+
|
195
|
+
|
196
|
+
<p>Der Vertrag verlängert sich um die im Paket definierte Mindestlaufzeit.</p> </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
|
+
<p>Iconv is deprecated with ruby 1.9.3.<br />Use String#encode instead.</p>
|
209
|
+
|
210
|
+
|
211
|
+
<p>Example:<br /><a class="external" href="https://github.com/eagleas/maruku/commit/0dd3591f281e5b5e464fd98608c21f6737a05859">https://github.com/eagleas/maruku/commit/0dd3591f281e5b5e464fd98608c21f6737a05859</a></p> </content>
|
212
|
+
</entry>
|
213
|
+
<entry>
|
214
|
+
<title>Deal App - Fehler #57 (Neu): Railtie::Engine Erweiterung nur mö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
|
+
<p>Die Erweiterung der Engine in der Host-App, ist nur möglich, wenn ClassCaching:<br /><pre>
|
224
|
+
config.cache_classes = true
|
225
|
+
</pre></p>
|
226
|
+
|
227
|
+
|
228
|
+
<p>aktiviert ist.</p>
|
229
|
+
|
230
|
+
|
231
|
+
<p>Dies ist im Production-Mode kein Problem, da es dort standardmäßig aktiviert ist.<br />Im Development jedoch nervig, da für jede Code-Änderung der Server neugestartet werden muss.</p>
|
232
|
+
|
233
|
+
|
234
|
+
<p>Es sollte nach einer Lösung für das Problem gesucht werden.</p> </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
|