ecircle 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/.gitignore +3 -0
- data/.rvmrc +1 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +53 -0
- data/README.md +44 -0
- data/Rakefile +1 -0
- data/ecircle.gemspec +26 -0
- data/lib/ecircle.rb +37 -0
- data/lib/ecircle/client.rb +71 -0
- data/lib/ecircle/configuration.rb +15 -0
- data/lib/ecircle/helper.rb +9 -0
- data/lib/ecircle/job_package.rb +60 -0
- data/lib/ecircle/version.rb +3 -0
- data/spec/client_spec.rb +73 -0
- data/spec/spec_helper.rb +2 -0
- metadata +131 -0
data/.gitignore
ADDED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use --create ruby-1.9.2-p180@ecircle
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
ecircle (0.0.2)
|
5
|
+
active_support
|
6
|
+
i18n
|
7
|
+
rake
|
8
|
+
savon (>= 0.9.7)
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: http://rubygems.org/
|
12
|
+
specs:
|
13
|
+
active_support (3.0.0)
|
14
|
+
activesupport (= 3.0.0)
|
15
|
+
activesupport (3.0.0)
|
16
|
+
akami (1.0.0)
|
17
|
+
gyoku (>= 0.4.0)
|
18
|
+
builder (3.0.0)
|
19
|
+
diff-lcs (1.1.3)
|
20
|
+
gyoku (0.4.4)
|
21
|
+
builder (>= 2.1.2)
|
22
|
+
httpi (0.9.5)
|
23
|
+
rack
|
24
|
+
i18n (0.6.0)
|
25
|
+
nokogiri (1.5.0)
|
26
|
+
nori (1.0.2)
|
27
|
+
rack (1.3.4)
|
28
|
+
rake (0.9.2)
|
29
|
+
rspec (2.6.0)
|
30
|
+
rspec-core (~> 2.6.0)
|
31
|
+
rspec-expectations (~> 2.6.0)
|
32
|
+
rspec-mocks (~> 2.6.0)
|
33
|
+
rspec-core (2.6.4)
|
34
|
+
rspec-expectations (2.6.0)
|
35
|
+
diff-lcs (~> 1.1.2)
|
36
|
+
rspec-mocks (2.6.0)
|
37
|
+
savon (0.9.7)
|
38
|
+
akami (~> 1.0)
|
39
|
+
builder (>= 2.1.2)
|
40
|
+
gyoku (>= 0.4.0)
|
41
|
+
httpi (~> 0.9)
|
42
|
+
nokogiri (>= 1.4.0)
|
43
|
+
nori (~> 1.0)
|
44
|
+
wasabi (~> 2.0)
|
45
|
+
wasabi (2.0.0)
|
46
|
+
nokogiri (>= 1.4.0)
|
47
|
+
|
48
|
+
PLATFORMS
|
49
|
+
ruby
|
50
|
+
|
51
|
+
DEPENDENCIES
|
52
|
+
ecircle!
|
53
|
+
rspec (= 2.6.0)
|
data/README.md
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
This gem aims to be a full-fledged solution for the ecircle API, the [synchronous one](http://webservices.ecircle-ag.com/soap/javadoc/com/ecircleag/webservices/EcMApi.html) and the [asynchronous one](http://developer.ecircle-ag.com/apiwiki/wiki/AsynchronousAPI).
|
4
|
+
|
5
|
+
This is WIP and far from complete.
|
6
|
+
|
7
|
+
Features
|
8
|
+
-------------
|
9
|
+
|
10
|
+
So far just a couple of methods:
|
11
|
+
|
12
|
+
* create_member
|
13
|
+
* create_or_update_user_by_email
|
14
|
+
* delete_member
|
15
|
+
* logon
|
16
|
+
* send_parametrized_single_message_to_user
|
17
|
+
|
18
|
+
To do
|
19
|
+
-------------
|
20
|
+
|
21
|
+
* Rethink current structure e.g.
|
22
|
+
* doing an explicit logon in every method is ugly at best
|
23
|
+
* inefficient handling of session token (we could and should reuse it instead of requesting a new one every time)
|
24
|
+
* Implement missing API methods
|
25
|
+
* Specs
|
26
|
+
* RDoc
|
27
|
+
|
28
|
+
Configuration
|
29
|
+
-------------
|
30
|
+
|
31
|
+
```Ruby
|
32
|
+
Ecircle.configure do |config|
|
33
|
+
config.user = 'your@user.com'
|
34
|
+
config.realm = 'http://your.realm.com'
|
35
|
+
config.password = 'your_password'
|
36
|
+
end
|
37
|
+
```
|
38
|
+
|
39
|
+
Usage
|
40
|
+
-------------
|
41
|
+
|
42
|
+
```Ruby
|
43
|
+
Ecircle.create_or_update_user_by_email 'user@email.com'
|
44
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/ecircle.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "ecircle/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "ecircle"
|
7
|
+
s.version = Ecircle::VERSION
|
8
|
+
s.authors = ["Timo Rößner"]
|
9
|
+
s.email = ["timo.roessner@googlemail.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{Ecircle gem}
|
12
|
+
s.description = %q{The ecircle gem aims to be a full-fledged client for all ecircle services.}
|
13
|
+
|
14
|
+
s.rubyforge_project = "ecircle"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_dependency 'active_support'
|
22
|
+
s.add_dependency 'i18n'
|
23
|
+
s.add_dependency 'rake'
|
24
|
+
s.add_dependency 'savon', '>=0.9.7'
|
25
|
+
s.add_development_dependency 'rspec', '2.6.0'
|
26
|
+
end
|
data/lib/ecircle.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
require 'active_support/all'
|
3
|
+
require 'savon'
|
4
|
+
|
5
|
+
# TODO Improve requiring of gems.
|
6
|
+
# `Bundler.require :default` works for an irb session with `require lib/ecircle` (e.g. Savon exists)
|
7
|
+
# but this won't work from within the rails project since `Bundler.require :default` uses the current rails
|
8
|
+
# projects Gemfile, not ecircle's one. Not sure if there is a solution for this problem, but I'd
|
9
|
+
# rather do requires via bundler instead of explicit requires.
|
10
|
+
|
11
|
+
dir = File.dirname(__FILE__)
|
12
|
+
|
13
|
+
%w!version configuration client helper job_package!.each do |file|
|
14
|
+
require File.join(dir, 'ecircle', file)
|
15
|
+
end
|
16
|
+
|
17
|
+
module Ecircle
|
18
|
+
class << self
|
19
|
+
def configuration
|
20
|
+
@configuration ||= Configuration.new
|
21
|
+
end
|
22
|
+
|
23
|
+
def client
|
24
|
+
@client ||= Client.new
|
25
|
+
end
|
26
|
+
|
27
|
+
def configure &block
|
28
|
+
block.call configuration
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
(Ecircle::Client.instance_methods(false) - [:client]).each do |meth|
|
33
|
+
define_singleton_method meth do |*args|
|
34
|
+
client.send meth, *args
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module Ecircle
|
2
|
+
class Client
|
3
|
+
def client
|
4
|
+
@client ||= Savon::Client.new do
|
5
|
+
wsdl.document = Ecircle.configuration.wsdl
|
6
|
+
wsdl.endpoint = Ecircle.configuration.endpoint
|
7
|
+
wsdl.namespace = Ecircle.configuration.namespace
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def create_member user_id, group_id, invite = false, sendMessage = false
|
12
|
+
session_id = logon
|
13
|
+
@response = client.request :createMember do
|
14
|
+
soap.body = {
|
15
|
+
:session => session_id,
|
16
|
+
:userId => user_id,
|
17
|
+
:groupId => group_id,
|
18
|
+
:invite => 0,
|
19
|
+
:sendMessage => 0
|
20
|
+
}
|
21
|
+
end
|
22
|
+
@response.body[:create_member_response][:create_member_return].to_s
|
23
|
+
end
|
24
|
+
|
25
|
+
def create_or_update_user_by_email email
|
26
|
+
session_id = logon
|
27
|
+
@response = client.request :createOrUpdateUserByEmail do
|
28
|
+
soap.body = {
|
29
|
+
:session => session_id,
|
30
|
+
:userXml => "<user><email>#{email}</email></user>",
|
31
|
+
:sendMessage => 0
|
32
|
+
}
|
33
|
+
end
|
34
|
+
@response.body[:create_or_update_user_by_email_response][:create_or_update_user_by_email_return].to_s
|
35
|
+
end
|
36
|
+
|
37
|
+
def delete_member member_id
|
38
|
+
session_id = logon
|
39
|
+
@response = client.request :deleteMember do
|
40
|
+
soap.body = {
|
41
|
+
:session => session_id,
|
42
|
+
:memberId => member_id
|
43
|
+
}
|
44
|
+
end
|
45
|
+
@response.body[:delete_member_response][:delete_member_return].to_s
|
46
|
+
end
|
47
|
+
|
48
|
+
def logon
|
49
|
+
@response = client.request :logon do
|
50
|
+
soap.body = {
|
51
|
+
:user => Ecircle.configuration.user,
|
52
|
+
:realm => Ecircle.configuration.realm,
|
53
|
+
:passwd => Ecircle.configuration.password
|
54
|
+
}
|
55
|
+
end
|
56
|
+
@response.body[:logon_response][:logon_return].to_s
|
57
|
+
end
|
58
|
+
|
59
|
+
def send_parametrized_single_message_to_user user_id, message_id, names = [], values = []
|
60
|
+
@response = client.request :sendParametrizedSingleMessageToUser do
|
61
|
+
soap.body = {
|
62
|
+
:session => logon,
|
63
|
+
:singleMessageId => message_id,
|
64
|
+
:userId => user_id,
|
65
|
+
:names => names,
|
66
|
+
:values => values
|
67
|
+
}
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Ecircle
|
2
|
+
class Configuration
|
3
|
+
WSDL = 'http://webservices.ecircle-ag.com/soap/ecm.wsdl'
|
4
|
+
ENDPOINT = 'http://webservices.ecircle-ag.com/rpc'
|
5
|
+
NAMESPACE = "http://webservices.ecircleag.com/rpcns"
|
6
|
+
|
7
|
+
attr_accessor :user, :password, :realm, :wsdl, :endpoint, :namespace
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@wsdl = WSDL
|
11
|
+
@endpoint = ENDPOINT
|
12
|
+
@namespace = NAMESPACE
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module Ecircle
|
2
|
+
module JobPackage
|
3
|
+
TARGET_CONTENT_ENCODING = 'ISO-8859-1'
|
4
|
+
|
5
|
+
def self.send_asynch_message_to_group(options)
|
6
|
+
xml = xml_for_asynch_calls(options)
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.xml_for_asynch_calls(options)
|
10
|
+
xml = Builder::XmlMarkup.new(:indent => 2)
|
11
|
+
xml.instruct!
|
12
|
+
xml.control :xmlns => 'http://webservices.ecircle-ag.com/ecm', 'request-id' => options[:request_id], 'group-id' => options[:group_id] do
|
13
|
+
xml.message 'message-id' => 'new', 'delete' => 'false' do
|
14
|
+
xml.tag! 'sendout-preferences' do
|
15
|
+
xml.tag! 'object-handling', 'html-images' => 'untouched'
|
16
|
+
xml.tag! 'email-channel', 'preferred-format' => 'email-html-multipart'
|
17
|
+
end
|
18
|
+
xml.tag! 'send-date' do
|
19
|
+
xml.date Helper.date_format(options[:send_out_date])
|
20
|
+
end
|
21
|
+
xml.tag! 'send-report-address' do
|
22
|
+
xml.tag! 'email-address' do
|
23
|
+
xml.email options[:report_email]
|
24
|
+
xml.name "Send report for newsletter for location #{options[:location_name]} sent out on #{options[:send_out_date]}"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
xml.tag! 'status-report', 'report-id' => 'new', 'delete' => 'false', 'user-tracking-details' => 'false', 'link-tracking-details' => 'false', 'bouncing-details' => 'false' do
|
28
|
+
xml.tag! 'report-address' do
|
29
|
+
xml.tag! 'email-address' do
|
30
|
+
xml.email options[:report_email]
|
31
|
+
xml.name "Status report for newsletter for location #{options[:location_name]} sent out on #{options[:send_out_date]}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
xml.tag! 'send-date' do
|
35
|
+
xml.date Helper.date_format(options[:send_date_for_report])
|
36
|
+
end
|
37
|
+
end
|
38
|
+
xml.content 'target-content-encoding' => TARGET_CONTENT_ENCODING do
|
39
|
+
xml.subject options[:subject], 'target-encoding' => TARGET_CONTENT_ENCODING
|
40
|
+
xml.text options[:text], 'target-content-encoding' => TARGET_CONTENT_ENCODING
|
41
|
+
xml.html options[:html], 'target-content-encoding' => TARGET_CONTENT_ENCODING
|
42
|
+
end
|
43
|
+
end
|
44
|
+
xml.tag! 'success-report-address' do
|
45
|
+
xml.tag! 'email-address' do
|
46
|
+
xml.email options[:report_email]
|
47
|
+
xml.name "Success report for newsletter for location #{options[:location_name]} sent out on #{options[:send_out_date]}"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
xml.tag! 'failure-report-address' do
|
51
|
+
xml.tag! 'email-address' do
|
52
|
+
xml.email options[:report_email]
|
53
|
+
xml.name "Failure report for newsletter for location #{options[:location_name]} sent out on #{options[:send_out_date]}"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
xml.target!
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/spec/client_spec.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Ecircle::JobPackage do
|
4
|
+
before :all do
|
5
|
+
date = 1.hour.from_now
|
6
|
+
@options = {
|
7
|
+
:request_id => '1234',
|
8
|
+
:group_id => '5678',
|
9
|
+
:send_out_date => date,
|
10
|
+
:send_date_for_report => date,
|
11
|
+
:report_email => 'report@dealvertise.de',
|
12
|
+
:location_name => 'Berlin',
|
13
|
+
:subject => 'Berlin newsletter',
|
14
|
+
:text => 'Newsletter text content',
|
15
|
+
:html => 'Newsletter html content'
|
16
|
+
}
|
17
|
+
|
18
|
+
@doc = <<xml
|
19
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
20
|
+
<control xmlns="http://webservices.ecircle-ag.com/ecm" request-id="#{@options[:request_id]}" group-id="#{@options[:group_id]}">
|
21
|
+
<message message-id="new" delete="false">
|
22
|
+
<sendout-preferences>
|
23
|
+
<object-handling html-images="untouched"/>
|
24
|
+
<email-channel preferred-format="email-html-multipart"/>
|
25
|
+
</sendout-preferences>
|
26
|
+
<send-date>
|
27
|
+
<date>#{Ecircle::Helper.date_format(@options[:send_out_date])}</date>
|
28
|
+
</send-date>
|
29
|
+
<send-report-address>
|
30
|
+
<email-address>
|
31
|
+
<email>#{@options[:report_email]}</email>
|
32
|
+
<name>Send report for newsletter for location #{@options[:location_name]} sent out on #{@options[:send_out_date]}</name>
|
33
|
+
</email-address>
|
34
|
+
</send-report-address>
|
35
|
+
<status-report report-id="new" delete="false" user-tracking-details="false" link-tracking-details="false" bouncing-details="false">
|
36
|
+
<report-address>
|
37
|
+
<email-address>
|
38
|
+
<email>#{@options[:report_email]}</email>
|
39
|
+
<name>Status report for newsletter for location #{@options[:location_name]} sent out on #{@options[:send_out_date]}</name>
|
40
|
+
</email-address>
|
41
|
+
</report-address>
|
42
|
+
<send-date>
|
43
|
+
<date>#{Ecircle::Helper.date_format(@options[:send_date_for_report])}</date>
|
44
|
+
</send-date>
|
45
|
+
</status-report>
|
46
|
+
<content target-content-encoding="ISO-8859-1">
|
47
|
+
<subject target-encoding="ISO-8859-1">#{@options[:subject]}</subject>
|
48
|
+
<text target-content-encoding="ISO-8859-1">#{@options[:text]}</text>
|
49
|
+
<html target-content-encoding="ISO-8859-1">#{@options[:html]}</html>
|
50
|
+
</content>
|
51
|
+
</message>
|
52
|
+
<success-report-address>
|
53
|
+
<email-address>
|
54
|
+
<email>#{@options[:report_email]}</email>
|
55
|
+
<name>Success report for newsletter for location #{@options[:location_name]} sent out on #{@options[:send_out_date]}</name>
|
56
|
+
</email-address>
|
57
|
+
</success-report-address>
|
58
|
+
<failure-report-address>
|
59
|
+
<email-address>
|
60
|
+
<email>#{@options[:report_email]}</email>
|
61
|
+
<name>Failure report for newsletter for location #{@options[:location_name]} sent out on #{@options[:send_out_date]}</name>
|
62
|
+
</email-address>
|
63
|
+
</failure-report-address>
|
64
|
+
</control>
|
65
|
+
xml
|
66
|
+
end
|
67
|
+
|
68
|
+
describe 'xml_for_asynch_calls' do
|
69
|
+
it 'should generate valid xml' do
|
70
|
+
Ecircle::JobPackage.xml_for_asynch_calls(@options).should == @doc
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ecircle
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.2
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- "Timo R\xC3\xB6\xC3\x9Fner"
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2011-10-23 00:00:00 +02:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: active_support
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
19
|
+
none: false
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
type: :runtime
|
25
|
+
prerelease: false
|
26
|
+
version_requirements: *id001
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: i18n
|
29
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
|
+
none: false
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: "0"
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: *id002
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: rake
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: "0"
|
46
|
+
type: :runtime
|
47
|
+
prerelease: false
|
48
|
+
version_requirements: *id003
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: savon
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 0.9.7
|
57
|
+
type: :runtime
|
58
|
+
prerelease: false
|
59
|
+
version_requirements: *id004
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: rspec
|
62
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - "="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 2.6.0
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: *id005
|
71
|
+
description: The ecircle gem aims to be a full-fledged client for all ecircle services.
|
72
|
+
email:
|
73
|
+
- timo.roessner@googlemail.com
|
74
|
+
executables: []
|
75
|
+
|
76
|
+
extensions: []
|
77
|
+
|
78
|
+
extra_rdoc_files: []
|
79
|
+
|
80
|
+
files:
|
81
|
+
- .gitignore
|
82
|
+
- .rvmrc
|
83
|
+
- Gemfile
|
84
|
+
- Gemfile.lock
|
85
|
+
- README.md
|
86
|
+
- Rakefile
|
87
|
+
- ecircle.gemspec
|
88
|
+
- lib/ecircle.rb
|
89
|
+
- lib/ecircle/client.rb
|
90
|
+
- lib/ecircle/configuration.rb
|
91
|
+
- lib/ecircle/helper.rb
|
92
|
+
- lib/ecircle/job_package.rb
|
93
|
+
- lib/ecircle/version.rb
|
94
|
+
- spec/client_spec.rb
|
95
|
+
- spec/spec_helper.rb
|
96
|
+
has_rdoc: true
|
97
|
+
homepage: ""
|
98
|
+
licenses: []
|
99
|
+
|
100
|
+
post_install_message:
|
101
|
+
rdoc_options: []
|
102
|
+
|
103
|
+
require_paths:
|
104
|
+
- lib
|
105
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
hash: -289051661
|
111
|
+
segments:
|
112
|
+
- 0
|
113
|
+
version: "0"
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
+
none: false
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
hash: -289051661
|
120
|
+
segments:
|
121
|
+
- 0
|
122
|
+
version: "0"
|
123
|
+
requirements: []
|
124
|
+
|
125
|
+
rubyforge_project: ecircle
|
126
|
+
rubygems_version: 1.6.2
|
127
|
+
signing_key:
|
128
|
+
specification_version: 3
|
129
|
+
summary: Ecircle gem
|
130
|
+
test_files: []
|
131
|
+
|