megam_assembla 0.1.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.
@@ -0,0 +1,147 @@
1
+ # Copyright:: Copyright (c) 2012, 2013 Megam Systems
2
+ # License:: Apache License, Version 2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+ module Megam
17
+ class SpaceCollection
18
+ include Enumerable
19
+
20
+
21
+ attr_reader :iterator
22
+ def initialize
23
+ @spaces = Array.new
24
+ @spaces_by_name = Hash.new
25
+ @insert_after_idx = nil
26
+ end
27
+
28
+ def all_spaces
29
+ @spaces
30
+ end
31
+
32
+ def [](index)
33
+ @spaces[index]
34
+ end
35
+
36
+ def []=(index, arg)
37
+ is_megam_space(arg)
38
+ @spaces[index] = arg
39
+ @spaces_by_name[arg.wiki_name] = index
40
+ end
41
+
42
+ def <<(*args)
43
+ args.flatten.each do |a|
44
+ is_megam_space(a)
45
+ @spaces << a
46
+ @spaces_by_name[a.wiki_name] = @spaces.length - 1
47
+ end
48
+ self
49
+ end
50
+
51
+ # 'push' is an alias method to <<
52
+ alias_method :push, :<<
53
+
54
+ def insert(space)
55
+ is_megam_space(space)
56
+ if @insert_after_idx
57
+ # in the middle of executing a run, so any spaces inserted now should
58
+ # be placed after the most recent addition done by the currently executing
59
+ # space
60
+ @spaces.insert(@insert_after_idx + 1, space)
61
+ # update name -> location mappings and register new space
62
+ @spaces_by_name.each_key do |key|
63
+ @spaces_by_name[key] += 1 if @spaces_by_name[key] > @insert_after_idx
64
+ end
65
+ @spaces_by_name[space.wiki_name] = @insert_after_idx + 1
66
+ @insert_after_idx += 1
67
+ else
68
+ @spaces << space
69
+ @spaces_by_name[space.wiki_name] = @spaces.length - 1
70
+ end
71
+ end
72
+
73
+ def each
74
+ @spaces.each do |space|
75
+ yield space
76
+ end
77
+ end
78
+
79
+ def each_index
80
+ @spaces.each_index do |i|
81
+ yield i
82
+ end
83
+ end
84
+
85
+ def empty?
86
+ @spaces.empty?
87
+ end
88
+
89
+ def lookup(space)
90
+ lookup_by = nil
91
+ if space.kind_of?(Megam::Space)
92
+ lookup_by = space.wiki_name
93
+ elsif space.kind_of?(String)
94
+ lookup_by = space
95
+ else
96
+ raise ArgumentError, "Must pass a Megam::Space or String to lookup"
97
+ end
98
+ res = @spaces_by_name[lookup_by]
99
+ unless res
100
+ raise ArgumentError, "Cannot find a space matching #{lookup_by} (did you define it first?)"
101
+ end
102
+ @spaces[res]
103
+ end
104
+
105
+ # Transform the ruby obj -> to a Hash
106
+ def to_hash
107
+ index_hash = Hash.new
108
+ self.each do |space|
109
+ index_hash[space.wiki_name] = space.to_s
110
+ end
111
+ index_hash
112
+ end
113
+
114
+ # Serialize this object as a hash: called from JsonCompat.
115
+ # Verify if this called from JsonCompat during testing.
116
+ def to_json(*a)
117
+ for_json.to_json(*a)
118
+ end
119
+
120
+ def self.json_create(o)
121
+ collection = self.new()
122
+ o["results"].each do |spaces_list|
123
+ spaces_array = spaces_list.kind_of?(Array) ? spaces_list : [ spaces_list ]
124
+ spaces_array.each do |space|
125
+ collection.insert(space)
126
+ end
127
+ end
128
+ collection
129
+ end
130
+
131
+ private
132
+
133
+
134
+
135
+ def is_megam_space(arg)
136
+ unless arg.kind_of?(Megam::Space)
137
+ raise ArgumentError, "Members must be Megam::Space's"
138
+ end
139
+ true
140
+ end
141
+
142
+ def to_s
143
+ Megam::Stuff.styled_hash(to_hash)
144
+ end
145
+
146
+ end
147
+ end
@@ -0,0 +1 @@
1
+ require(File.join(File.dirname(__FILE__), "megam", "assembla"))
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "megam/assembla/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "megam_assembla"
7
+ s.version = Megam::Assembla::VERSION
8
+ s.authors = ["Kishorekumar Neelamegam, Thomas Alrin, Rajthilak"]
9
+ s.email = ["nkishore@megam.co.in","alrin@megam.co.in", "rajthilak@megam.co.in"]
10
+ s.homepage = "http://github.com/megamsys/megam_assembla.rb.git"
11
+ s.license = "Apache V2"
12
+ sextra_rdoc_files = ["README.md", "LICENSE" ]
13
+ s.summary = %q{Ruby Client for the Assembla}
14
+ s.description = %q{Ruby Client for the Assembla. Performs REST based HTTP calls to api.assembla.com using OAuth2}
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ s.require_paths = ["lib"]
19
+ s.add_runtime_dependency 'excon', '~> 0.31'
20
+ s.add_runtime_dependency 'yajl-ruby', '~> 1.2'
21
+ s.add_development_dependency 'minitest', '~> 5.2'
22
+ s.add_development_dependency 'rake', '~> 10.1'
23
+ s.add_runtime_dependency 'megam_api'
24
+ end
@@ -0,0 +1,56 @@
1
+ require File.expand_path("#{File.dirname(__FILE__)}/../lib/megam/assembla")
2
+
3
+ require 'rubygems'
4
+ gem 'minitest' # ensure we are using the gem version
5
+ require 'minitest/autorun'
6
+ require 'time'
7
+
8
+ SANDBOX_HOST_OPTIONS = {
9
+ :scheme => 'https',
10
+ :host => 'api.assembla.com',
11
+ :nonblock => false
12
+
13
+ }
14
+
15
+
16
+ def megam(options)
17
+ options = SANDBOX_HOST_OPTIONS.merge(options)
18
+ mg=Megam::Assembla.new(options)
19
+ end
20
+
21
+ def megams_new(options={})
22
+ mg=Megam::Assembla.new(options)
23
+ end
24
+
25
+ def megams(options={})
26
+ mg=Megam::Assembla.new(options)
27
+ end
28
+
29
+ def random_domain
30
+ "megam.co"
31
+ end
32
+
33
+ def random_id
34
+ SecureRandom.random_number(1000)
35
+ end
36
+
37
+ def random_name
38
+ SecureRandom.hex(15)
39
+ end
40
+
41
+ def random_apikey
42
+ SecureRandom.hex(10)
43
+ end
44
+
45
+ def random_email
46
+ "email@#{random_apikey}.com"
47
+ end
48
+
49
+
50
+ def sandbox_apikey
51
+ "IamAtlas{74}NobodyCanSeeME#07"
52
+ end
53
+
54
+ def sandbox_email
55
+ "sandy@megamsandbox.com"
56
+ end
@@ -0,0 +1,13 @@
1
+ require File.expand_path("#{File.dirname(__FILE__)}/test_helper")
2
+
3
+ class TestSpaces < MiniTest::Unit::TestCase
4
+
5
+ def test_get_spaces
6
+ #response = megams.get_spaces("2176139b9d881aff4c6d451136886913")
7
+ response = Megam::Space.list("87ad7110a5de06838b7ebfc334659f68")
8
+ assert_equal(200, response.status)
9
+ end
10
+
11
+
12
+
13
+ end
metadata ADDED
@@ -0,0 +1,133 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: megam_assembla
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Kishorekumar Neelamegam, Thomas Alrin, Rajthilak
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-03-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: excon
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.31'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.31'
27
+ - !ruby/object:Gem::Dependency
28
+ name: yajl-ruby
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.2'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: megam_api
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Ruby Client for the Assembla. Performs REST based HTTP calls to api.assembla.com
84
+ using OAuth2
85
+ email:
86
+ - nkishore@megam.co.in
87
+ - alrin@megam.co.in
88
+ - rajthilak@megam.co.in
89
+ executables: []
90
+ extensions: []
91
+ extra_rdoc_files: []
92
+ files:
93
+ - ".gitignore"
94
+ - ".project"
95
+ - ".travis.yml"
96
+ - Gemfile
97
+ - LICENSE
98
+ - README.md
99
+ - Rakefile
100
+ - lib/megam/assembla.rb
101
+ - lib/megam/assembla/spaces.rb
102
+ - lib/megam/assembla/version.rb
103
+ - lib/megam/core/space.rb
104
+ - lib/megam/core/space_collection.rb
105
+ - lib/megam_assembla.rb
106
+ - megam_assembla.gemspec
107
+ - test/test_helper.rb
108
+ - test/test_spaces.rb
109
+ homepage: http://github.com/megamsys/megam_assembla.rb.git
110
+ licenses:
111
+ - Apache V2
112
+ metadata: {}
113
+ post_install_message:
114
+ rdoc_options: []
115
+ require_paths:
116
+ - lib
117
+ required_ruby_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ requirements: []
128
+ rubyforge_project:
129
+ rubygems_version: 2.1.11
130
+ signing_key:
131
+ specification_version: 4
132
+ summary: Ruby Client for the Assembla
133
+ test_files: []