launchrock 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 36947ec879ac80e9f4a1ed4fadba46527cd5d9b4
4
+ data.tar.gz: d4152077e8a0fc0d911815950c2875dc23a98d92
5
+ SHA512:
6
+ metadata.gz: 93d65deca3825605cf00cd22491cb89136df8bec8e8f7612aeaef531a76863d74c570a570ca2acbd05e9cd2be56731b79fe38334f0940d3ef4ee142e826a263b
7
+ data.tar.gz: fd0695227e598e6904a65c8ebd065232c84bae85753a411c1e964fd44afdc523701f6d55ab1dd017896d68f6793755884ea3b1e2d6e5a123f74452f4676a982d
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ gem 'activesupport', ">= 3.2.10"
2
+ gem 'httparty'
3
+
4
+ group :development, :test do
5
+ gem 'minitest'
6
+ gem 'rake'
7
+ gem 'mocha'
8
+ gem 'fakeweb'
9
+ end
data/README.md ADDED
@@ -0,0 +1,17 @@
1
+ Launchrock - Ruby Gem
2
+ ------------
3
+
4
+ This gem integrates with the launchrock API's documented [here](http://developers.launchrock.com/documentation/welcome). The API isn't well documented, and this also includes integration with undocumented API's. This means parts of this gem could break with no notice whatsoever. Use at your own risk.
5
+
6
+ Usage
7
+ -----
8
+
9
+ ```
10
+ # First authenticate and fetch the user session
11
+
12
+ client = Launchrock::Client.find_by_email_and_password('testman@yoloswag.com', 'testpassword-oooo')
13
+ site = client.site_named(args[:site_name])
14
+ raise "No site info found" unless site
15
+
16
+ puts site.users.map(&:to_hash).inspect
17
+ ```
data/Rakefile ADDED
@@ -0,0 +1,20 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+
4
+ begin
5
+ Bundler.setup(:default, :development)
6
+ rescue Bundler::BundlerError => e
7
+ $stderr.puts e.message
8
+ $stderr.puts "Run `bundle install` to install missing gems"
9
+ exit e.status_code
10
+ end
11
+ require 'rake'
12
+
13
+ require 'rake/testtask'
14
+ Rake::TestTask.new(:test) do |test|
15
+ test.test_files = FileList['test/**/*_test.rb']
16
+ test.libs = ['lib', 'test']
17
+ end
18
+
19
+ task :default => :test
20
+
data/lib/launchrock.rb ADDED
@@ -0,0 +1,13 @@
1
+ $:.unshift File.dirname(__FILE__)
2
+
3
+ require 'rubygems'
4
+ require 'active_support/all'
5
+ require 'httparty'
6
+ require 'csv'
7
+
8
+ Dir[File.dirname(__FILE__) + '/launchrock/*.rb'].each {|m| require m}
9
+ Dir[File.dirname(__FILE__) + '/launchrock/models/*.rb'].each {|m| require m}
10
+
11
+ CSV::HeaderConverters[:launchrock] = lambda do |s|
12
+ s.to_s.gsub("lr_", '').to_sym
13
+ end
@@ -0,0 +1,18 @@
1
+ module Launchrock
2
+ class Connection
3
+ include HTTParty
4
+ base_uri "http://platform.launchrock.com"
5
+
6
+ def self.perform_post(uri, body)
7
+ resp = HTTParty.post("#{base_uri}#{uri}", { :body => body }).first['response']
8
+
9
+ unless resp['status'] == 'OK'
10
+ raise ApiError, "API Call Failed"
11
+ end
12
+ resp
13
+ end
14
+
15
+ class ApiError < StandardError
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,29 @@
1
+ module Launchrock
2
+ class Client < Launchrock::Connection
3
+ attr_accessor :client_id, :session_id
4
+
5
+ def initialize(client_id, session_id)
6
+ self.client_id, self.session_id = client_id, session_id
7
+ end
8
+
9
+ def self.find_by_email_and_password(email, password)
10
+ begin
11
+ attributes = perform_post('/v1/platformUserLogin', { :email => email, :password => password })['platform_user'].to_hash.symbolize_keys.slice(:session_id, :UID)
12
+ rescue
13
+ return nil
14
+ end
15
+
16
+ Client.new(attributes[:UID], attributes[:session_id])
17
+ end
18
+
19
+ # WARNING: undocumented API
20
+ def sites
21
+ Launchrock::Site.all(self)
22
+ end
23
+
24
+ # WARNING: undocumented API
25
+ def site_named(name)
26
+ Launchrock::Site.by_name(self, name)
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,53 @@
1
+ module Launchrock
2
+ class Site < Launchrock::Connection
3
+ attr_accessor :id, :name, :client, :access_token
4
+
5
+ def initialize(client, id, name)
6
+ self.client, self.id, self.name = client, id, name
7
+ end
8
+
9
+ # WARNING: undocumented API
10
+ def self.all(client)
11
+ attributes = perform_post("/v1/getPlatformUserSites", {:user_id => client.client_id })['platform_user_sites']
12
+
13
+ attributes.map(&:symbolize_keys).map do |attrs|
14
+ Site.new(client, attrs[:SID], attrs[:siteName])
15
+ end
16
+ end
17
+
18
+ # WARNING: undocumented API
19
+ def self.by_name(client, name)
20
+ all(client).find do |site|
21
+ site.name == name
22
+ end
23
+ end
24
+
25
+ def access_token
26
+ @access_token ||= self.class.perform_post('/v1/getSiteApiToken',{
27
+ :user_id => self.client.client_id,
28
+ :session_id => self.client.session_id,
29
+ :site_id => self.id
30
+ })['api_info']['access_token']
31
+ end
32
+
33
+ # WARNING: undocumented API
34
+ def users
35
+ resp = HTTParty.get(users_url)
36
+ raise Launchrock::Connection::ApiError, "An error occurred while fetching the list" unless resp.success?
37
+
38
+ CSV.parse(resp.body, :headers => true, :header_converters => :launchrock)
39
+ end
40
+
41
+ private
42
+
43
+ def users_url
44
+ params = {
45
+ :user_id => self.client.client_id,
46
+ :access_token => self.access_token,
47
+ :site_id => self.id
48
+ }
49
+
50
+ url = [ self.class.base_uri, "/export", "?", params.to_query].join
51
+ end
52
+ end
53
+ end
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: launchrock
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - ken mazaika
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-06-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 3.2.10
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 3.2.10
27
+ - !ruby/object:Gem::Dependency
28
+ name: httparty
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
+ description: A ruby gem to integrate with the launchrock API
42
+ email: kenmazaika@gmail.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files:
46
+ - README.md
47
+ files:
48
+ - Gemfile
49
+ - README.md
50
+ - Rakefile
51
+ - lib/launchrock.rb
52
+ - lib/launchrock/connection.rb
53
+ - lib/launchrock/models/client.rb
54
+ - lib/launchrock/models/site.rb
55
+ homepage: https://github.com/kenmazaika/launchrock
56
+ licenses:
57
+ - Yoloswag
58
+ metadata: {}
59
+ post_install_message:
60
+ rdoc_options: []
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ requirements: []
74
+ rubyforge_project:
75
+ rubygems_version: 2.0.0
76
+ signing_key:
77
+ specification_version: 4
78
+ summary: A ruby gem to integrate with the launchrock API, with support for undocumented
79
+ APIs
80
+ test_files: []