freelancer4r 1.0.0 → 1.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/CHANGELOG CHANGED
@@ -1,3 +1,10 @@
1
+ == Freelancer4r 1.0.1 (2010.07.21)
2
+ * Widget API completed
3
+ * RDoc correction
4
+ * Github project url added to gemspec
5
+ * Rdoc target added to Rakefile
6
+ * Removed mechanize from dependency
7
+
1
8
  == Freelancer4r 1.0.1 (2010.07.15)
2
9
  * Added widget api for call http://www.freelancer.com/affiliate-api.html API
3
10
  * First public release
data/README.rdoc CHANGED
@@ -1,22 +1,44 @@
1
1
  == Introduction
2
2
  Freelancer API for ruby
3
3
 
4
- This api allow to call freelancer api from ruby code.
5
-
6
- It's can login to freelancer with "mechanize", using oauth library
4
+ This api allow to call freelancer api from ruby code.
5
+ It's can login to freelancer with "mechanize", using oauth library
7
6
 
8
7
  == Installation
9
8
 
10
- gem install freelancer4r
9
+ gem install freelancer4r
11
10
 
11
+ == Detailed information
12
+
13
+ Freelancer api implements two different api for different approach.
14
+ * Full Freelancer.com API - with this you can do anything with freelancer, required oauth authentication
15
+ * Freelancer.com Widget API - with this you can do minimal but not required oauth authentication
16
+
17
+ Full freelancer API modules:
18
+ * Freelancer::Common
19
+ * Freelancer::Employer
20
+ * Freelancer::FreelancersCall
21
+ * Freelancer::Job
22
+ * Freelancer::Message
23
+ * Freelancer::Notification
24
+ * Freelancer::Payment
25
+ * Freelancer::Profile
26
+ * Freelancer::Project
27
+ * Freelancer::User
28
+
29
+ Widget API modules:
30
+ * Freelancer::Widget
31
+
32
+ See modules documentation
33
+
12
34
  == Usage
13
35
 
14
- * Shortest way, to login
36
+ * Shortest way, to login (require mechanize gem)
15
37
 
16
38
  freelancer=Freelancer.new false,"application_token","application_secret","username","password"
17
39
  projects=freelancer.searchProjects
18
40
 
19
- * Custom one step login
41
+ * Custom one step login (require mechanize gem)
20
42
 
21
43
  freelancer=Freelancer.new false
22
44
  freelancer.application_token=token
@@ -27,8 +49,7 @@ gem install freelancer4r
27
49
  freelancer.login
28
50
  freelancer.searchprojects
29
51
 
30
- * Hand staged login
31
- (no username and password)
52
+ * Hand staged login (no username and password)
32
53
 
33
54
  freelancer=Freelancer.new false,"application_token","application_secret"
34
55
  freelancer.login_stage1
@@ -37,8 +58,7 @@ gem install freelancer4r
37
58
  freelancer.login_stage3
38
59
  freelancer.searchProjects
39
60
 
40
- * Usage for webpages with callback
41
- (no username and password)
61
+ * Usage for web pages with callback (no username and password)
42
62
 
43
63
  freelancer=Freelancer.new false,"application_token","application_secret"
44
64
  freelancer.callback="http://example.com/callbackurl"
@@ -48,3 +68,9 @@ gem install freelancer4r
48
68
  #... user come back to callback page ...
49
69
  freelancer.login_stage3
50
70
  freelancer.serchProjects
71
+
72
+ * Using widget api (very basic api with limitations, but not required authentication)
73
+
74
+ widget=Freelancer.new_widget true
75
+ widget.search :keyword=>"Ruby"
76
+
data/Rakefile.rb CHANGED
@@ -27,9 +27,22 @@ spec=Gem::Specification.new do |s|
27
27
 
28
28
  s.add_dependency(%q<json>, [">= 1.4.0"])
29
29
  s.add_dependency(%q<oauth>, [">= 0.4.1"])
30
- s.add_dependency(%q<mechanize>, [">= 1.0.0"])
31
30
  end
32
31
 
32
+ Rake::RDocTask.new do |rd|
33
+ rd.rdoc_dir = 'doc/rdoc'
34
+ rd.title = "Freelancer.com API for ruby documentation"
35
+ rd.main = 'README.txt'
36
+ rd.rdoc_files.include 'README.rdoc', 'CHANGELOG', "lib/freelancer.rb", "lib/freelancer/**/*\.rb"
37
+
38
+ rd.options << '--inline-source'
39
+ rd.options << '--line-numbers'
40
+ rd.options << '--all'
41
+ # rd.options << '--fileboxes'
42
+ # rd.options << '--diagram'
43
+ end
44
+
45
+
33
46
  Rake::GemPackageTask.new(spec) do |pkg|
34
47
  pkg.need_tar = true
35
48
  end
data/lib/freelancer.rb CHANGED
@@ -20,7 +20,7 @@ require 'net/http'
20
20
  #
21
21
  #Load all Freelancer modules
22
22
  module Freelancer
23
- VERSION = "1.0.0"
23
+ VERSION = "1.0.2"
24
24
  #Initialize the Freelancer Wrapper Class
25
25
  #
26
26
  #Parameters
@@ -44,8 +44,11 @@ module Freelancer
44
44
  login_stage1
45
45
  end
46
46
  if @username != nil && @password != nil && @callback == OAuth::OUT_OF_BAND
47
- try_to_authorize
48
- login_stage3
47
+ if try_to_authorize
48
+ login_stage3
49
+ else
50
+ @request_token.authorize_url
51
+ end
49
52
  else
50
53
  @request_token.authorize_url
51
54
  end
@@ -68,7 +71,7 @@ module Freelancer
68
71
  def login
69
72
  login_stage1 #login stage 1, request unauthorized token
70
73
  login_stage2 #login stage 2, try to log in ang get the verifier
71
- if @authorized
74
+ if @authorized
72
75
  login_stage3 #if we have verifier, we get the access token key
73
76
  else #if we not have verifier, authentication or not oob callback selected, request manual login, return the url
74
77
  return @request_token.authorize_url
@@ -79,26 +82,31 @@ module Freelancer
79
82
 
80
83
  #Try to emulate user authorization
81
84
  def try_to_authorize
82
- require 'mechanize'
83
- @agent ||= Mechanize.new
84
- @agent.user_agent_alias='Mac Safari'
85
+ begin
86
+ require 'mechanize'
85
87
 
86
- @agent.set_proxy(proxy.host, proxy.port, proxy.user,proxy.password) if proxy != nil
87
- page = @agent.get(web_url)
88
- login_form=page.form_with(:name=>'login_form')
89
- if login_form != nil
90
- login_form.field_with(:name=>'username').value=@username
91
- login_form.field_with(:name=>'passwd').value=@password
92
- @agent.submit(login_form)
93
- end
94
- initial_page=@agent.get(@request_token.authorize_url)
95
- initial_page.forms.each do |form|
96
- if form.has_field? 'oauth_token'
97
- result=form.submit
98
- return
88
+ @agent ||= Mechanize.new
89
+ @agent.user_agent_alias='Mac Safari'
90
+
91
+ @agent.set_proxy(proxy.host, proxy.port, proxy.user,proxy.password) if proxy != nil
92
+ page = @agent.get(web_url)
93
+ login_form=page.form_with(:name=>'login_form')
94
+ if login_form != nil
95
+ login_form.field_with(:name=>'username').value=@username
96
+ login_form.field_with(:name=>'passwd').value=@password
97
+ @agent.submit(login_form)
98
+ end
99
+ initial_page=@agent.get(@request_token.authorize_url)
100
+ initial_page.forms.each do |form|
101
+ if form.has_field? 'oauth_token'
102
+ result=form.submit
103
+ return true
104
+ end
99
105
  end
106
+ rescue LoadError
107
+ false
100
108
  end
101
- nil
109
+ false
102
110
  end
103
111
  end
104
112
  end
@@ -5,9 +5,9 @@ module Freelancer
5
5
  #http://developer.freelancer.com/RequestCancelProject
6
6
  #
7
7
  #<b>Required:</b>
8
- #:projectid
9
- #:commenttext
10
- #:reasoncancellation
8
+ # :projectid
9
+ # :commenttext
10
+ # :reasoncancellation
11
11
  # 1 - Mutual – Default
12
12
  # 2 - Service Done,Not Paid
13
13
  # 3 - Service Not Done.
@@ -16,7 +16,7 @@ module Freelancer
16
16
  # 6 - Other
17
17
  #
18
18
  #<b>Optional:</b>
19
- #:followedguidelinesstatus
19
+ # :followedguidelinesstatus
20
20
  # 1 - I followed
21
21
  # 0 - I didn't follow
22
22
  # (This is option is not needed unless felt necessary)
@@ -39,11 +39,11 @@ module Freelancer
39
39
  #http://developer.freelancer.com/PostFeedback
40
40
  #
41
41
  #<b>Required:</b>
42
- #:rating => 1 to 10
43
- #:feedbacktext => Text of feedback
44
- #:userid => UserId or username the feedback posted to
45
- #:username => UserId or username the feedback posted to
46
- #:projectid => Project Id associated with the feedback
42
+ # :rating => 1 to 10
43
+ # :feedbacktext => Text of feedback
44
+ # :userid => UserId or username the feedback posted to
45
+ # :username => UserId or username the feedback posted to
46
+ # :projectid => Project Id associated with the feedback
47
47
  def postFeedback *args
48
48
  options=fill_args [
49
49
  :rating,:feedbacktext,:userid,:username,:projectid
@@ -65,10 +65,10 @@ module Freelancer
65
65
  #http://developer.freelancer.com/PostReplyForFeedback
66
66
  #
67
67
  #<b>Required:</b>
68
- #:feedbacktext => Text of the feedback
69
- #:userid => UserId or username the reply posted to
70
- #:username => UserId or username the reply posted to
71
- #:projectid => Project Id associated with the feedback
68
+ # :feedbacktext => Text of the feedback
69
+ # :userid => UserId or username the reply posted to
70
+ # :username => UserId or username the reply posted to
71
+ # :projectid => Project Id associated with the feedback
72
72
  def postReplyForFeedback *args
73
73
  options=fill_args [
74
74
  :feedbacktext,:userid,:username,:projectid
@@ -89,9 +89,9 @@ module Freelancer
89
89
  #http://developer.freelancer.com/RequestWithdrawFeedback
90
90
  #
91
91
  #<b>Required:</b>
92
- #:userid => UserId or username the reply posted to
93
- #:username => UserId or username the reply posted to
94
- #:projectid => Project Id associated with the feedback
92
+ # :userid => UserId or username the reply posted to
93
+ # :username => UserId or username the reply posted to
94
+ # :projectid => Project Id associated with the feedback
95
95
  def requestWithdrawFeedback *args
96
96
  options=fill_args [:userid,:username,:projectid],[:projectid],*args
97
97
  if options[:username]==nil && options[:userid]==nil
@@ -108,7 +108,7 @@ module Freelancer
108
108
  #http://developer.freelancer.com/GetPendingFeedback
109
109
  #
110
110
  #<b>Optional:</b>
111
- #:type
111
+ # :type
112
112
  # P - Provider
113
113
  # B - Buyer,Default
114
114
  def getPendingFeedback *args
@@ -5,17 +5,17 @@ module Freelancer
5
5
  #http://developer.freelancer.com/PostNewProject
6
6
  #
7
7
  #<b>Required:</b>
8
- #:projectType => The type of tye project (:normal,:trial,:draft)
9
- #:projectname => Project name to post
10
- #:projectdesc => Project description
11
- #:jobtypecsv => Job category associated with project
12
- #:budget => Budget of the project
13
- #:duration => Period of the project
8
+ # :projectType => The type of tye project (:normal,:trial,:draft)
9
+ # :projectname => Project name to post
10
+ # :projectdesc => Project description
11
+ # :jobtypecsv => Job category associated with project
12
+ # :budget => Budget of the project
13
+ # :duration => Period of the project
14
14
  #
15
15
  #<b>Optional:</b> (available on :normal and :draft)
16
- #:isfeatured => Set to 1 if post as a featured project.(Default: 0)
17
- #:isnonpublic => Set to 1 if post as a nonpublic project.(Default: 0)
18
- #:isbidhidden => Set to 1 if post as a sealbids project.(Default: 0)
16
+ # :isfeatured => Set to 1 if post as a featured project.(Default: 0)
17
+ # :isnonpublic => Set to 1 if post as a nonpublic project.(Default: 0)
18
+ # :isbidhidden => Set to 1 if post as a sealbids project.(Default: 0)
19
19
  def postNewProject *args
20
20
  options=fill_args [
21
21
  :projectType,
@@ -54,8 +54,8 @@ module Freelancer
54
54
  #http://developer.freelancer.com/ChooseWinnerForProject
55
55
  #
56
56
  #<b>Required:</b>
57
- #:projectid => Project identifier
58
- #:useridcsv => Allows multiple winner for ALL except full-time jobs. At-least one ID mandatory
57
+ # :projectid => Project identifier
58
+ # :useridcsv => Allows multiple winner for ALL except full-time jobs. At-least one ID mandatory
59
59
  def chooseWinnerForProject *args
60
60
  options=fill_args [:projectid,:useridcsv],[:projectid,:useridcsv],*args
61
61
  request "/Employer/chooseWinnerForProject.json", options
@@ -66,7 +66,7 @@ module Freelancer
66
66
  #http://developer.freelancer.com/GetPostedProjectList
67
67
  #
68
68
  #<b>Required:</b>
69
- #:status
69
+ # :status
70
70
  # 1 - All
71
71
  # 2 - Open And Frozen – Default
72
72
  # 3 - Frozen Awaiting your action
@@ -76,10 +76,10 @@ module Freelancer
76
76
  # 7 - Closed Canceled
77
77
  #
78
78
  #<b>Optional:</b>
79
- #:userid => UserID of the Poster
80
- #:projectid => Project ID filter
81
- #:count => (Default: 50)
82
- #:page => (Default: 0)
79
+ # :userid => UserID of the Poster
80
+ # :projectid => Project ID filter
81
+ # :count => (Default: 50)
82
+ # :page => (Default: 0)
83
83
  def getPostedProjectList *args
84
84
  options=fill_args [:status,:userid,:projectid,:count,:page],[:status],*args
85
85
  request "/Employer/getPostedProjectList.json", options
@@ -90,9 +90,9 @@ module Freelancer
90
90
  #http://developer.freelancer.com/InviteUserForProject
91
91
  #
92
92
  #<b>Required:</b>
93
- #:useridcsv => :useridcsv <b>OR</b> :usernamecsv
94
- #:usernamecsv => Can be CSV also to allow multiple user invite
95
- #:projectid => Project identifier
93
+ # :useridcsv => :useridcsv <b>OR</b> :usernamecsv
94
+ # :usernamecsv => Can be CSV also to allow multiple user invite
95
+ # :projectid => Project identifier
96
96
  def inviteUserForProject *args
97
97
  options=fill_args [:useridcsv,:usernamecsv,:projectid],[:projectid],*args
98
98
  if options[:useridcsv]==nil && options[:usernamecsv]==nil
@@ -110,11 +110,11 @@ module Freelancer
110
110
  #http://developer.freelancer.com/UpdateProjectDetails
111
111
  #
112
112
  #<b>Required:</b>
113
- #:projectid
113
+ # :projectid
114
114
  #
115
115
  #<b>Optional:</b>
116
- #:projectdesc
117
- #:jobtypecsv
116
+ # :projectdesc
117
+ # :jobtypecsv
118
118
  def updateProjectDetails *args
119
119
  options=fill_args [:projectid,:projectdesc,:jobtypecsv],[:projectid],*args
120
120
  request "/Employer/updateProjectDetails.json", options
@@ -5,7 +5,7 @@ module Freelancer
5
5
  #http://developer.freelancer.com/GetProjectListForPlacedBids
6
6
  #
7
7
  #<b>Required:</b>
8
- #:status
8
+ # :status
9
9
  # 1 - All
10
10
  # 2 - Open And Frozen – Default
11
11
  # 3 - Frozen Awaiting your action
@@ -15,10 +15,10 @@ module Freelancer
15
15
  # 7 - Closed Canceled
16
16
  #
17
17
  #<b>Optional:</b>
18
- #:userid => UserID of the Poster
19
- #:projectid => Project ID filter
20
- #:count => (Default: 50)
21
- #:page => (Default: 0)
18
+ # :userid => UserID of the Poster
19
+ # :projectid => Project ID filter
20
+ # :count => (Default: 50)
21
+ # :page => (Default: 0)
22
22
  def getProjectListForPlacedBids
23
23
  options=fill_args [:status,:userid,:projectid,:count,:page],[:status],*args
24
24
  request "/Freelancer/getProjectListForPlacedBids.json", options
@@ -29,15 +29,15 @@ module Freelancer
29
29
  #http://developer.freelancer.com/PlaceBidOnProject
30
30
  #
31
31
  #<b>Required:</b>
32
- #:amount => amount
33
- #:days => days
34
- #:description => description
35
- #:projectid => project identifier
32
+ # :amount => amount
33
+ # :days => days
34
+ # :description => description
35
+ # :projectid => project identifier
36
36
  #
37
37
  #<b>Optional:</b>
38
- #:notificationStatus => Notification on anyone else bid on this project at a lower price. 0 - no notification, 1 - notification (Default: 0)
39
- #:highlighted => Highlight bids. 0 - not highlighted, 1 - highlighted. (Default: 0)
40
- #:milestone => The initial milestone percentage declares the terms of your bid. This tells the employer that you require the specified percentage as a milestone payment before you start work.
38
+ # :notificationStatus => Notification on anyone else bid on this project at a lower price. 0 - no notification, 1 - notification (Default: 0)
39
+ # :highlighted => Highlight bids. 0 - not highlighted, 1 - highlighted. (Default: 0)
40
+ # :milestone => The initial milestone percentage declares the terms of your bid. This tells the employer that you require the specified percentage as a milestone payment before you start work.
41
41
  def placeBidOnProject *args
42
42
  options=fill_args [
43
43
  :amount,
@@ -61,7 +61,7 @@ module Freelancer
61
61
  #http://developer.freelancer.com/RetractBidFromProject
62
62
  #
63
63
  #<b>Required:</b>
64
- #:projectid => project identifier
64
+ # :projectid => project identifier
65
65
  def retractBidFromProject *args
66
66
  options=fill_args [:projectid],[:projectid],*args
67
67
  request "/Freelancer/retractBidFromProject.json", options
@@ -72,8 +72,8 @@ module Freelancer
72
72
  #http://developer.freelancer.com/AcceptBidWon
73
73
  #
74
74
  #<b>Required:</b>
75
- #:projectid => project identifier
76
- #:state => 0 - decline , 1 - Accept (default)
75
+ # :projectid => project identifier
76
+ # :state => 0 - decline , 1 - Accept (default)
77
77
  def acceptBidWon *args
78
78
  options=fill_args [:projectid,:state],[:projectid],*args
79
79
  request "/Freelancer/acceptBidWon.json", options
@@ -5,9 +5,9 @@ module Freelancer
5
5
  #http://developer.freelancer.com/GetInboxMessages
6
6
  #
7
7
  #<b>Optional:</b>
8
- #:projectid => Get the private messages for the specific project
9
- #:count
10
- #:page
8
+ # :projectid => Get the private messages for the specific project
9
+ # :count
10
+ # :page
11
11
  def getInboxMessages *args
12
12
  options=fill_args [:projectid,:count,:page],[],*args
13
13
  request "/Message/getInboxMessages.json", options
@@ -18,8 +18,8 @@ module Freelancer
18
18
  #http://developer.freelancer.com/GetSentMessages
19
19
  #
20
20
  #<b>Optional:</b>
21
- #:count
22
- #:page
21
+ # :count
22
+ # :page
23
23
  def getSentMessages *args
24
24
  options=fill_args [:count,:page],[],*args
25
25
  request "/Message/getSentMessages.json", options
@@ -37,10 +37,10 @@ module Freelancer
37
37
  #http://developer.freelancer.com/SendMessage
38
38
  #
39
39
  #<b>Required:</b>
40
- #:projectid => Project Id to identify the message send with
41
- #:messagetext => Message text to send
42
- #:userid => Receiver userid or username
43
- #:username => Receiver userid or username
40
+ # :projectid => Project Id to identify the message send with
41
+ # :messagetext => Message text to send
42
+ # :userid => Receiver userid or username
43
+ # :username => Receiver userid or username
44
44
  def sendMessage *args
45
45
  options=fill_args [
46
46
  :projectid,:messagetext,:userid,:username
@@ -61,7 +61,7 @@ module Freelancer
61
61
  #http://developer.freelancer.com/MarkMessageAsRead
62
62
  #
63
63
  #<b>Required:</b>
64
- #:id => Message Id to be marked as read
64
+ # :id => Message Id to be marked as read
65
65
  def markMessageAsRead *args
66
66
  options=fill_args [:id],[:id],*args
67
67
  request "/Message/markMessageAsRead.json", options
@@ -12,10 +12,10 @@ module Freelancer
12
12
  #http://developer.freelancer.com/GetAccountTransactionList
13
13
  #
14
14
  #<b>Optional:</b>
15
- #:count => (Default: 50)
16
- #:page => (Default: 0)
17
- #:datefrom => Get transactions from the date
18
- #:dateto => Get transactions up to the date
15
+ # :count => (Default: 50)
16
+ # :page => (Default: 0)
17
+ # :datefrom => Get transactions from the date
18
+ # :dateto => Get transactions up to the date
19
19
  def getAccountTransactionList *args
20
20
  options=fill_args [
21
21
  :count,:page,:datefrom,:dateto
@@ -28,13 +28,13 @@ module Freelancer
28
28
  #http://developer.freelancer.com/RequestWithdrawal
29
29
  #
30
30
  #<b>Required:</b>
31
- #:amount => Withdraw amount
32
- #:method => :paypal | :moneybooker | :wire | :paynoneer (default)
33
- #:additionaltext => Required for wire withdraw
34
- #:paypalemail => Required for paypal withdraw
35
- #:mb_account => Required for moneybooker withdraw
36
- #:description => Required for wire withedraw
37
- #:country_code => Required for wire withdraw
31
+ # :amount => Withdraw amount
32
+ # :method => :paypal | :moneybooker | :wire | :paynoneer (default)
33
+ # :additionaltext => Required for wire withdraw
34
+ # :paypalemail => Required for paypal withdraw
35
+ # :mb_account => Required for moneybooker withdraw
36
+ # :description => Required for wire withedraw
37
+ # :country_code => Required for wire withdraw
38
38
  def requestWithdrawal *args
39
39
  options=fill_args [
40
40
  :amount,
@@ -61,12 +61,12 @@ module Freelancer
61
61
  #http://developer.freelancer.com/CreateMilestonePayment
62
62
  #
63
63
  #<b>Required:</b>
64
- #:projectid => Mandatory if Partial or Full payment for a project.
65
- #:amount => Milestone amount
66
- #:touserid => Userid or username create milestone payment to
67
- #:tousername => Userid or username create milestone payment to
68
- #:reasontext => Text attached to transfer
69
- #:reasontype => partial|full|other
64
+ # :projectid => Mandatory if Partial or Full payment for a project.
65
+ # :amount => Milestone amount
66
+ # :touserid => Userid or username create milestone payment to
67
+ # :tousername => Userid or username create milestone payment to
68
+ # :reasontext => Text attached to transfer
69
+ # :reasontype => partial|full|other
70
70
  def createMilestonePayment *args
71
71
  options=fill_args [
72
72
  :projectid,
@@ -95,7 +95,7 @@ module Freelancer
95
95
  #http://developer.freelancer.com/CancelMilestone
96
96
  #
97
97
  #<b>Required:</b>
98
- #:transactionid => Transaction Id
98
+ # :transactionid => Transaction Id
99
99
  def cancelMilestone *args
100
100
  options=fill_args [:transactionid],[:transactionid],*args
101
101
  request "/Payment/cancelMilestone.json", options
@@ -106,9 +106,9 @@ module Freelancer
106
106
  #http://developer.freelancer.com/GetAccountMilestoneList
107
107
  #
108
108
  #<b>Optional:</b>
109
- #:type => Incoming(default) or Outgoing
110
- #:count => (Default: 50)
111
- #:page => (Default: 0)
109
+ # :type => Incoming(default) or Outgoing
110
+ # :count => (Default: 50)
111
+ # :page => (Default: 0)
112
112
  def getAccountMilestoneList *args
113
113
  options=fill_args [:type,:count,:page],[],*args
114
114
  request "/Payment/getAccountMilestoneList.json", options
@@ -119,9 +119,9 @@ module Freelancer
119
119
  #http://developer.freelancer.com/GetAccountWithdrawalList
120
120
  #
121
121
  #<b>Optional:</b>
122
- #:type => Incoming(default) or Outgoing
123
- #:count => (Default: 50)
124
- #:page => (Default: 0)
122
+ # :type => Incoming(default) or Outgoing
123
+ # :count => (Default: 50)
124
+ # :page => (Default: 0)
125
125
  def getAccountWithdrawalList *args
126
126
  options=fill_args [:type,:count,:page],[],*args
127
127
  request "/Payment/getAccountMilestoneList.json", options
@@ -132,7 +132,7 @@ module Freelancer
132
132
  #http://developer.freelancer.com/RequestReleaseMilestone
133
133
  #
134
134
  #<b>Required:</b>
135
- #:transactionid => Transaction Id
135
+ # :transactionid => Transaction Id
136
136
  def requestReleaseMilestone *args
137
137
  options=fill_args [:transactionid],[:transactionid],*args
138
138
  request "/Payment/requestReleaseMilestone.json", options
@@ -143,8 +143,8 @@ module Freelancer
143
143
  #http://developer.freelancer.com/ReleaseMilestone
144
144
  #
145
145
  #<b>Required:</b>
146
- #:transactionid => Transaction Id
147
- #:fullname => Fullname of the payer
146
+ # :transactionid => Transaction Id
147
+ # :fullname => Fullname of the payer
148
148
  def releaseMilestone *args
149
149
  options=fill_args [:transactionid,:fullname],[:transactionid,:fullname],*args
150
150
  request "/Payment/releaseMilestone.json", options
@@ -12,7 +12,7 @@ module Freelancer
12
12
  #http://developer.freelancer.com/GetProfileInfo
13
13
  #
14
14
  #<b>Required:</b>
15
- #:userid => Retrieve the profile information of this user Id.
15
+ # :userid => Retrieve the profile information of this user Id.
16
16
  def getProfileInfo *args
17
17
  options=fill_args [:userid],[:userid],*args
18
18
  request "/Profile/getProfileInfo.json",options
@@ -23,30 +23,30 @@ module Freelancer
23
23
  #http://developer.freelancer.com/SetProfileInfo
24
24
  #
25
25
  #<b>Optional:</b> (minimum one required)
26
- #:fullname
27
- #:company_name
28
- #:type_of_work
29
- #:multipartpic
30
- #:addressline1
31
- #:addressline2
32
- #:city
33
- #:state
34
- #:country
35
- #:postalcode
36
- #:phone
37
- #:fax
38
- #:notificationformat
39
- #:emailnotificationstatus
40
- #:receivenewsstatus
41
- #:bidwonnotificationstatus
42
- #:bidplacednotificationstatus
43
- #:newprivatemessagestatus
44
- #:qualificationcsv
45
- #:profiletext
46
- #:vision
47
- #:keywords
48
- #:hourlyrate
49
- #:skills
26
+ # :fullname
27
+ # :company_name
28
+ # :type_of_work
29
+ # :multipartpic
30
+ # :addressline1
31
+ # :addressline2
32
+ # :city
33
+ # :state
34
+ # :country
35
+ # :postalcode
36
+ # :phone
37
+ # :fax
38
+ # :notificationformat
39
+ # :emailnotificationstatus
40
+ # :receivenewsstatus
41
+ # :bidwonnotificationstatus
42
+ # :bidplacednotificationstatus
43
+ # :newprivatemessagestatus
44
+ # :qualificationcsv
45
+ # :profiletext
46
+ # :vision
47
+ # :keywords
48
+ # :hourlyrate
49
+ # :skills
50
50
  def setProfileInfo *args
51
51
  options=fill_args [
52
52
  :fullname,
@@ -5,21 +5,21 @@ module Freelancer
5
5
  #http://developer.freelancer.com/SearchProjects
6
6
  #
7
7
  #<b>Optional:</b>
8
- #:isfeatured => boolean
9
- #:isnonpublic => boolean
10
- #:searchkeyword => string
11
- #:searchjobtypecsv => coma separated job types [ PHP, .NET ]
12
- #:status => string [ Open | Frozen | Closed| ClosedAwarded| ClosedCanceled ]
13
- #:budgetmin => integer or String [ 250 | 750 |1500 |3000 | Any ]
14
- #:budgetmax => integer
15
- #:isfulltime => boolean
16
- #:istrial => boolean
17
- #:isgoldmembersonly => boolean
18
- #:bidendsduration => string [ submitdate (default) | bid_enddate | id | state ]
19
- #:count => number
20
- #:page => number
21
- #:tags => string
22
- #:sort => string
8
+ # :isfeatured => boolean
9
+ # :isnonpublic => boolean
10
+ # :searchkeyword => string
11
+ # :searchjobtypecsv => coma separated job types [ PHP, .NET ]
12
+ # :status => string [ Open | Frozen | Closed| ClosedAwarded| ClosedCanceled ]
13
+ # :budgetmin => integer or String [ 250 | 750 |1500 |3000 | Any ]
14
+ # :budgetmax => integer
15
+ # :isfulltime => boolean
16
+ # :istrial => boolean
17
+ # :isgoldmembersonly => boolean
18
+ # :bidendsduration => string [ submitdate (default) | bid_enddate | id | state ]
19
+ # :count => number
20
+ # :page => number
21
+ # :tags => string
22
+ # :sort => string
23
23
  def searchProjects *args
24
24
  options=fill_args [
25
25
  :isfeatured,
@@ -54,7 +54,7 @@ module Freelancer
54
54
  #http://developer.freelancer.com/GetProjectDetails
55
55
  #
56
56
  #<b>Required:</b>
57
- #:projectid => project id
57
+ # :projectid => project id
58
58
  def getProjectDetails *args
59
59
  options = fill_args [:projectid],[:projectid],*args
60
60
  request "/Project/getProjectDetails.json", options
@@ -65,7 +65,7 @@ module Freelancer
65
65
  #http://developer.freelancer.com/GetBidsDetails
66
66
  #
67
67
  #<b>Required:</b>
68
- #:projectid => project id
68
+ # :projectid => project id
69
69
  def getBidsDetails *args
70
70
  options = fill_args [:projectid],[:projectid],*args
71
71
  request "/Project/getBidsDetails.json",options
@@ -76,7 +76,7 @@ module Freelancer
76
76
  #http://developer.freelancer.com/GetPublicMessages
77
77
  #
78
78
  #<b>Required:</b>
79
- #:projectid => project id
79
+ # :projectid => project id
80
80
  def getPublicMessages *args
81
81
  options = fill_args [:projectid],[:projectid],*args
82
82
  request "/Project/getPublicMessages.json",options
@@ -87,8 +87,8 @@ module Freelancer
87
87
  #http://developer.freelancer.com/PostPublicMessage
88
88
  #
89
89
  #<b>Required:</b>
90
- #:projectid => Project Id associated with the message
91
- #:messagetext => message text
90
+ # :projectid => Project Id associated with the message
91
+ # :messagetext => message text
92
92
  def postPublicMessage *args
93
93
  options = fill_args [:projectid,:messagetext],[:projectid,:messagetext],*args
94
94
  request "/Project/postPublicMessage.json",options
@@ -5,12 +5,12 @@ module Freelancer
5
5
  #http://developer.freelancer.com/GetUsersBySearch
6
6
  #
7
7
  #<b>Optional:</b>
8
- #:username => Username of the person for who you are searching.
9
- #:expertise_csv => Comma separated list of job categories, refer to the main page for a list of categories.
10
- #:country_csv => Comma separated list of countries
11
- #:rating => Minimum rating for the user
12
- #:count => (default: 50)
13
- #:page => (default: 0)
8
+ # :username => Username of the person for who you are searching.
9
+ # :expertise_csv => Comma separated list of job categories, refer to the main page for a list of categories.
10
+ # :country_csv => Comma separated list of countries
11
+ # :rating => Minimum rating for the user
12
+ # :count => (default: 50)
13
+ # :page => (default: 0)
14
14
  def getUsersBySearch *args
15
15
  options=fill_args [
16
16
  :username,
@@ -28,11 +28,11 @@ module Freelancer
28
28
  #http://developer.freelancer.com/GetUserFeedback
29
29
  #
30
30
  #<b>Required:</b>
31
- #:username => Username or userid is required
32
- #:userid => Username or userid is required
31
+ # :username => Username or userid is required
32
+ # :userid => Username or userid is required
33
33
  #
34
34
  #<b>Optional:</b>
35
- #:type => [P = Provider Only, B = Buyer Only, A = Default, All]
35
+ # :type => [P = Provider Only, B = Buyer Only, A = Default, All]
36
36
  def getUsersFeedback *args
37
37
  options=fill_args [:username,:userid,:type],[],*args
38
38
  if options[:username]==nil && options[:userid]==nil
@@ -49,8 +49,8 @@ module Freelancer
49
49
  #http://developer.freelancer.com/GetUserDetails
50
50
  #
51
51
  #<b>Required:</b>
52
- #:username => Username or userid is required
53
- #:userid => Username or userid is required
52
+ # :username => Username or userid is required
53
+ # :userid => Username or userid is required
54
54
  def getUserDetails *args
55
55
  options=fill_args [:username,:userid],[],*args
56
56
  if options[:username]==nil && options[:userid]==nil
@@ -4,6 +4,7 @@ require 'cgi'
4
4
 
5
5
  module Freelancer
6
6
  module Widget
7
+ protected
7
8
  def request_widget path, parameters={}
8
9
  params=parameters.map do |k,v|
9
10
  if v.is_a?(TrueClass) || v.is_a?(FalseClass)
@@ -14,46 +15,46 @@ module Freelancer
14
15
  "#{CGI.escape(k.to_s)}[]=#{CGI.escape(item.to_s)}"
15
16
  end.join("&")
16
17
  else
17
- puts v
18
18
  "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}"
19
19
  end
20
20
  end.join("&")
21
21
  url=api_url+path
22
22
  url+="?#{params}" if params.length > 0
23
23
  uri=URI.parse(url)
24
- puts uri
25
- # response=Net::HTTP.get_response(uri)
26
- # puts response.body
24
+ result=Net::HTTP.get_response(uri)
25
+ JSON.parse(result.body)
27
26
  end
28
27
 
28
+ public
29
+
29
30
  #= Search projects
30
31
  #
31
32
  #http://www.freelancer.com/affiliate-api.html#ProjectSearch
32
33
  #
33
34
  #== Optional
34
- #:keyword
35
+ # :keyword
35
36
  # Search keyword
36
- #:owner
37
+ # :owner
37
38
  # Username of ID of project owner
38
- #:winner
39
+ # :winner
39
40
  # Username of ID of project winner
40
- #:jobs[]
41
+ # :jobs[]
41
42
  # Names of job categories from the available list on Freelancer.com (PHP, .NET, AJAX, etc.). This parameter may be repeated more than once
42
- #:featured
43
+ # :featured
43
44
  # If 1 - only featured projects, if 0 - only NON-featured projects
44
- #:trial
45
+ # :trial
45
46
  # If 1 - only trial projects, if 0 - only NON-trial projects
46
- #:for_gold_members
47
+ # :for_gold_members
47
48
  # If 1 - only "For gold members" projects, if 0 - only NON "For gold members" projects
48
- #:nonpublic
49
+ # :nonpublic
49
50
  # If 1 - only nonpublic projects, if 0 - only public projects
50
- #:min_budget
51
+ # :min_budget
51
52
  # Only projects with budget higher or equal to min_budget
52
- #:max_budget
53
+ # :max_budget
53
54
  # Only projects with budget lower or equal to max_budget
54
- #:bidding_ends
55
+ # :bidding_ends
55
56
  # Only projects ending sooner than bidding_ends days
56
- #:order
57
+ # :order
57
58
  # How to order projects in the result output. See available project order criteria.
58
59
  # types:
59
60
  # :id - order by project ID
@@ -66,13 +67,13 @@ module Freelancer
66
67
  # :budget - order by budget
67
68
  # :relevance - order by relevance of search by keyword. This criterion should be used with the parameter keyword
68
69
  # :rand - order randomly
69
- #:order_dir
70
+ # :order_dir
70
71
  # Direction of sorting. If the parameter is equal to asc, results are ordered in ascending way, otherwise - descending (desc).
71
- #:pg
72
+ # :pg
72
73
  # Page number. Starts from 0. Default page is 0
73
- #:count
74
+ # :count
74
75
  # Number of items on a page
75
- #:apikey
76
+ # :apikey
76
77
  # API key, paramater is optional.
77
78
  def search *args
78
79
  options=fill_args [
@@ -102,27 +103,27 @@ module Freelancer
102
103
  #http://www.freelancer.com/affiliate-api.html#ProjectProperties
103
104
  #
104
105
  #== Required
105
- #:id
106
+ # :id
106
107
  # the project id
107
108
  #
108
109
  #== Optional
109
- #:apikey
110
+ # :apikey
110
111
  # API key, paramater is optional.
111
112
  def projectDetails *args
112
113
  options=fill_args [:id,:apikey],[:id],*args
113
114
  request_widget("/Project/Properties.json",options)
114
115
  end
115
116
 
116
- #Get the project details
117
+ #=Get the project details
117
118
  #
118
119
  #http://www.freelancer.com/affiliate-api.html#UserProperties
119
120
  #
120
121
  #== Required
121
- #:id
122
+ # :id
122
123
  # the user id
123
124
  #
124
125
  #== Optional
125
- #:apikey
126
+ # :apikey
126
127
  # API key
127
128
  def userDetails *args
128
129
  options=fill_args [:id,:apikey],[:id],*args
@@ -134,28 +135,28 @@ module Freelancer
134
135
  #http://www.freelancer.com/affiliate-api.html#FeedbackSearch
135
136
  #
136
137
  #== Required
137
- #:user
138
+ # :user
138
139
  # ID or username of a feedback receiver
139
140
  #
140
141
  #== Optional
141
- #:project_id
142
+ # :project_id
142
143
  # ID of project for which the feedback was made
143
- #:type
144
+ # :type
144
145
  # Type of the feedback. S - service provider's (seller's) feedbacks, B - buyer's feedbacks. By default provider's feedbacks are returned
145
- #:positive
146
+ # :positive
146
147
  # if positive equals to 1, only feedbacks with rating higher than average will be returned
147
- #:order
148
+ # :order
148
149
  # How to order feedbacks in result output. Types:
149
150
  # :active_date - order by date when feedback was activated (default)
150
151
  # :rand - order randomly
151
152
  #
152
- #:order_dir
153
+ # :order_dir
153
154
  # Direction of sorting. If the parameter is equal to asc, results are ordered in ascending way, otherwise - descending ('desc').
154
- #:pg
155
+ # :pg
155
156
  # Page number. Starts from 0. Default page is 0
156
- #:count
157
+ # :count
157
158
  # Number of items on a page
158
- #:apikey
159
+ # :apikey
159
160
  # API key
160
161
  def feedbackSearch
161
162
  options=fill_args [
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: freelancer4r
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 0
10
- version: 1.0.0
9
+ - 2
10
+ version: 1.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Janos Haber
@@ -50,22 +50,6 @@ dependencies:
50
50
  version: 0.4.1
51
51
  type: :runtime
52
52
  version_requirements: *id002
53
- - !ruby/object:Gem::Dependency
54
- name: mechanize
55
- prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- hash: 23
62
- segments:
63
- - 1
64
- - 0
65
- - 0
66
- version: 1.0.0
67
- type: :runtime
68
- version_requirements: *id003
69
53
  description: Freelancer API for ruby. More informaito about freelancer api see http://developer.freelancer.com
70
54
  email: freelancer4r@googlegroups.com
71
55
  executables: []