freelancer 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.
- data/.gitignore +3 -0
- data/Gemfile +14 -0
- data/LICENSE +20 -0
- data/README.rdoc +56 -0
- data/Rakefile +34 -0
- data/VERSION +1 -0
- data/freelancer.gemspec +299 -0
- data/init.rb +2 -0
- data/lib/freelancer.rb +59 -0
- data/lib/freelancer/api.rb +20 -0
- data/lib/freelancer/api/common.rb +58 -0
- data/lib/freelancer/api/employer.rb +56 -0
- data/lib/freelancer/api/freelancer.rb +36 -0
- data/lib/freelancer/api/job.rb +46 -0
- data/lib/freelancer/api/message.rb +89 -0
- data/lib/freelancer/api/notification.rb +25 -0
- data/lib/freelancer/api/payment.rb +123 -0
- data/lib/freelancer/api/profile.rb +30 -0
- data/lib/freelancer/api/project.rb +133 -0
- data/lib/freelancer/api/user.rb +86 -0
- data/lib/freelancer/client.rb +152 -0
- data/lib/freelancer/extensions/hash.rb +11 -0
- data/lib/freelancer/models/address.rb +46 -0
- data/lib/freelancer/models/balance.rb +22 -0
- data/lib/freelancer/models/bid.rb +41 -0
- data/lib/freelancer/models/config_version.rb +21 -0
- data/lib/freelancer/models/eligibility.rb +23 -0
- data/lib/freelancer/models/job.rb +33 -0
- data/lib/freelancer/models/job_category.rb +18 -0
- data/lib/freelancer/models/message.rb +32 -0
- data/lib/freelancer/models/milestone.rb +57 -0
- data/lib/freelancer/models/news.rb +15 -0
- data/lib/freelancer/models/notification.rb +15 -0
- data/lib/freelancer/models/notification_status.rb +45 -0
- data/lib/freelancer/models/project.rb +116 -0
- data/lib/freelancer/models/project_budget.rb +21 -0
- data/lib/freelancer/models/project_fee.rb +18 -0
- data/lib/freelancer/models/project_options.rb +34 -0
- data/lib/freelancer/models/rating.rb +21 -0
- data/lib/freelancer/models/review.rb +87 -0
- data/lib/freelancer/models/transaction.rb +39 -0
- data/lib/freelancer/models/user.rb +225 -0
- data/lib/freelancer/models/withdrawal.rb +51 -0
- data/lib/freelancer/models/withdrawal_fee.rb +39 -0
- data/lib/freelancer/support/json_mapper.rb +95 -0
- data/test/fixtures/common/get_config_version.json +1 -0
- data/test/fixtures/common/get_config_version.xml +5 -0
- data/test/fixtures/common/get_pending_feedback.json +1 -0
- data/test/fixtures/common/get_pending_feedback.xml +20 -0
- data/test/fixtures/common/get_terms.json +1 -0
- data/test/fixtures/common/get_terms.xml +4 -0
- data/test/fixtures/common/post_feedback.json +1 -0
- data/test/fixtures/common/post_feedback.xml +4 -0
- data/test/fixtures/common/post_reply_for_feedback.json +1 -0
- data/test/fixtures/common/post_reply_for_feedback.xml +4 -0
- data/test/fixtures/common/request_cancel_project.json +1 -0
- data/test/fixtures/common/request_cancel_project.xml +4 -0
- data/test/fixtures/common/request_withdraw_feedback.json +1 -0
- data/test/fixtures/common/request_withdraw_feedback.xml +4 -0
- data/test/fixtures/employer/choose_winner_for_project.json +1 -0
- data/test/fixtures/employer/choose_winner_for_project.xml +3 -0
- data/test/fixtures/employer/delete_draft_project.json +1 -0
- data/test/fixtures/employer/delete_draft_project.xml +4 -0
- data/test/fixtures/employer/eligible_for_trial_project.json +1 -0
- data/test/fixtures/employer/eligible_for_trial_project.xml +5 -0
- data/test/fixtures/employer/get_posted_project_list.json +1 -0
- data/test/fixtures/employer/get_posted_project_list.xml +38 -0
- data/test/fixtures/employer/invite_user_for_project.json +1 -0
- data/test/fixtures/employer/invite_user_for_project.xml +4 -0
- data/test/fixtures/employer/post_new_draft_project.json +1 -0
- data/test/fixtures/employer/post_new_draft_project.xml +5 -0
- data/test/fixtures/employer/post_new_project.json +1 -0
- data/test/fixtures/employer/post_new_project.xml +5 -0
- data/test/fixtures/employer/post_new_trial_project.json +1 -0
- data/test/fixtures/employer/post_new_trial_project.xml +5 -0
- data/test/fixtures/employer/publish_draft_project.json +1 -0
- data/test/fixtures/employer/publish_draft_project.xml +4 -0
- data/test/fixtures/employer/update_project_details.json +1 -0
- data/test/fixtures/employer/update_project_details.xml +4 -0
- data/test/fixtures/employer/upgrade_trial_project.json +1 -0
- data/test/fixtures/employer/upgrade_trial_project.xml +4 -0
- data/test/fixtures/freelancer/accept_bid_won.json +1 -0
- data/test/fixtures/freelancer/accept_bid_won.xml +4 -0
- data/test/fixtures/freelancer/get_project_list_for_placed_bids.json +1 -0
- data/test/fixtures/freelancer/get_project_list_for_placed_bids.xml +16 -0
- data/test/fixtures/freelancer/place_bid_on_project.json +1 -0
- data/test/fixtures/freelancer/place_bid_on_project.xml +4 -0
- data/test/fixtures/freelancer/retract_bid_from_project.json +1 -0
- data/test/fixtures/freelancer/retract_bid_from_project.xml +4 -0
- data/test/fixtures/job/get_category_job_list.json +1 -0
- data/test/fixtures/job/get_category_job_list.xml +34 -0
- data/test/fixtures/job/get_job_list.json +1 -0
- data/test/fixtures/job/get_job_list.xml +17 -0
- data/test/fixtures/job/get_my_job_list.json +1 -0
- data/test/fixtures/job/get_my_job_list.xml +11 -0
- data/test/fixtures/message/get_inbox_messages.json +1 -0
- data/test/fixtures/message/get_inbox_messages.xml +22 -0
- data/test/fixtures/message/get_sent_messages.json +1 -0
- data/test/fixtures/message/get_sent_messages.xml +22 -0
- data/test/fixtures/message/get_unread_count.json +1 -0
- data/test/fixtures/message/get_unread_count.xml +4 -0
- data/test/fixtures/message/load_message_thread.json +1 -0
- data/test/fixtures/message/load_message_thread.xml +54 -0
- data/test/fixtures/message/mark_message_as_read.json +1 -0
- data/test/fixtures/message/mark_message_as_read.xml +4 -0
- data/test/fixtures/message/send_message.json +1 -0
- data/test/fixtures/message/send_message.xml +4 -0
- data/test/fixtures/notification/get_news.json +1 -0
- data/test/fixtures/notification/get_news.xml +14 -0
- data/test/fixtures/notification/get_notification.json +1 -0
- data/test/fixtures/notification/get_notification.xml +10 -0
- data/test/fixtures/payment/cancel_milestone.json +1 -0
- data/test/fixtures/payment/cancel_milestone.xml +4 -0
- data/test/fixtures/payment/create_milestone_payment.json +1 -0
- data/test/fixtures/payment/create_milestone_payment.xml +4 -0
- data/test/fixtures/payment/get_account_balance_status.json +1 -0
- data/test/fixtures/payment/get_account_balance_status.xml +12 -0
- data/test/fixtures/payment/get_account_milestone_list.json +1 -0
- data/test/fixtures/payment/get_account_milestone_list.xml +30 -0
- data/test/fixtures/payment/get_account_transaction_list.json +1 -0
- data/test/fixtures/payment/get_account_transaction_list.xml +57 -0
- data/test/fixtures/payment/get_account_withdrawal_list.json +1 -0
- data/test/fixtures/payment/get_account_withdrawal_list.xml +42 -0
- data/test/fixtures/payment/get_balance.json +1 -0
- data/test/fixtures/payment/get_balance.xml +4 -0
- data/test/fixtures/payment/get_project_list_for_transfer.json +1 -0
- data/test/fixtures/payment/get_project_list_for_transfer.xml +52 -0
- data/test/fixtures/payment/get_withdrawal_fees.json +1 -0
- data/test/fixtures/payment/get_withdrawal_fees.xml +41 -0
- data/test/fixtures/payment/prepare_transfer.json +1 -0
- data/test/fixtures/payment/prepare_transfer.xml +4 -0
- data/test/fixtures/payment/release_milestone.json +1 -0
- data/test/fixtures/payment/release_milestone.xml +4 -0
- data/test/fixtures/payment/request_cancel_withdrawal.json +1 -0
- data/test/fixtures/payment/request_cancel_withdrawal.xml +4 -0
- data/test/fixtures/payment/request_release_milestone.json +1 -0
- data/test/fixtures/payment/request_release_milestone.xml +4 -0
- data/test/fixtures/payment/request_withdrawal.json +1 -0
- data/test/fixtures/payment/request_withdrawal.xml +6 -0
- data/test/fixtures/payment/transfer_money.json +1 -0
- data/test/fixtures/payment/transfer_money.xml +4 -0
- data/test/fixtures/profile/get_account_details.json +1 -0
- data/test/fixtures/profile/get_account_details.xml +71 -0
- data/test/fixtures/profile/get_profile_info.json +1 -0
- data/test/fixtures/profile/get_profile_info.xml +53 -0
- data/test/fixtures/profile/set_profile_info.json +1 -0
- data/test/fixtures/profile/set_profile_info.xml +4 -0
- data/test/fixtures/project/get_bids_details.json +1 -0
- data/test/fixtures/project/get_bids_details.xml +19 -0
- data/test/fixtures/project/get_project_budget_config.json +1 -0
- data/test/fixtures/project/get_project_budget_config.xml +42 -0
- data/test/fixtures/project/get_project_details.json +1 -0
- data/test/fixtures/project/get_project_details.xml +78 -0
- data/test/fixtures/project/get_project_fees.json +1 -0
- data/test/fixtures/project/get_project_fees.xml +31 -0
- data/test/fixtures/project/get_public_messages.json +1 -0
- data/test/fixtures/project/get_public_messages.xml +27 -0
- data/test/fixtures/project/get_sent_messages.xml +22 -0
- data/test/fixtures/project/get_unread_count.xml +4 -0
- data/test/fixtures/project/load_message_thread.xml +54 -0
- data/test/fixtures/project/mark_message_as_read.xml +4 -0
- data/test/fixtures/project/post_public_message.json +1 -0
- data/test/fixtures/project/post_public_message.xml +4 -0
- data/test/fixtures/project/search_projects.json +1 -0
- data/test/fixtures/project/search_projects.xml +37 -0
- data/test/fixtures/project/send_message.xml +4 -0
- data/test/fixtures/user/get_user_details.json +1 -0
- data/test/fixtures/user/get_user_details.xml +32 -0
- data/test/fixtures/user/get_user_feedback.json +1 -0
- data/test/fixtures/user/get_user_feedback.xml +58 -0
- data/test/fixtures/user/get_users_by_search.json +1 -0
- data/test/fixtures/user/get_users_by_search.xml +26 -0
- data/test/freelancer/api/common_api_test.rb +82 -0
- data/test/freelancer/api/employer_api_test.rb +105 -0
- data/test/freelancer/api/freelancer_api_test.rb +72 -0
- data/test/freelancer/api/job_api_test.rb +76 -0
- data/test/freelancer/api/message_api_test.rb +144 -0
- data/test/freelancer/api/notification_api_test.rb +56 -0
- data/test/freelancer/api/payment_api_test.rb +225 -0
- data/test/freelancer/api/profile_api_test.rb +54 -0
- data/test/freelancer/api/project_api_test.rb +229 -0
- data/test/freelancer/api/user_api_test.rb +153 -0
- data/test/freelancer/client_test.rb +5 -0
- data/test/freelancer/models/balance_test.rb +24 -0
- data/test/freelancer/models/bid_test.rb +25 -0
- data/test/freelancer/models/config_version.rb +14 -0
- data/test/freelancer/models/eligibility_test.rb +14 -0
- data/test/freelancer/models/job_category_test.rb +16 -0
- data/test/freelancer/models/job_test.rb +19 -0
- data/test/freelancer/models/message_test.rb +42 -0
- data/test/freelancer/models/milestone_test.rb +21 -0
- data/test/freelancer/models/news_test.rb +15 -0
- data/test/freelancer/models/notification_test.rb +15 -0
- data/test/freelancer/models/project_budget_test.rb +18 -0
- data/test/freelancer/models/project_fee_test.rb +17 -0
- data/test/freelancer/models/project_test.rb +97 -0
- data/test/freelancer/models/review_test.rb +36 -0
- data/test/freelancer/models/transaction_test.rb +29 -0
- data/test/freelancer/models/user_test.rb +94 -0
- data/test/freelancer/models/withdrawal_fee_test.rb +19 -0
- data/test/freelancer/models/withdrawal_test.rb +20 -0
- data/test/freelancer/oauth_test.rb +112 -0
- data/test/freelancer_test.rb +1 -0
- data/test/test_helper.rb +42 -0
- metadata +427 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Freelancer
|
|
2
|
+
module API
|
|
3
|
+
|
|
4
|
+
# Returns the list of registered APIs
|
|
5
|
+
def apis
|
|
6
|
+
@apis ||= []
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# Include the specified API
|
|
10
|
+
def api(api)
|
|
11
|
+
|
|
12
|
+
extend api::ClassMethods if api.const_defined?(:ClassMethods)
|
|
13
|
+
include api::InstanceMethods if api.const_defined?(:InstanceMethods)
|
|
14
|
+
|
|
15
|
+
apis << api
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
module Freelancer
|
|
2
|
+
module API
|
|
3
|
+
module Common
|
|
4
|
+
module InstanceMethods
|
|
5
|
+
|
|
6
|
+
# Get a list of projects that are pending feedback
|
|
7
|
+
#
|
|
8
|
+
# Valid parameters are:
|
|
9
|
+
# - type: the type of projects to list ("P" or "B" (default))
|
|
10
|
+
def pending_feedback(*args)
|
|
11
|
+
|
|
12
|
+
params = extract_params(args)
|
|
13
|
+
|
|
14
|
+
# Execute the service call
|
|
15
|
+
result = api_get("/Common/getPendingFeedback.json", build_api_params({
|
|
16
|
+
:type => params[:type]
|
|
17
|
+
}))
|
|
18
|
+
|
|
19
|
+
# Parse and return the response
|
|
20
|
+
::Freelancer::Models::Project.parse_collection(result, :shift => [ :"json-result", :items ])
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Get the configuration version of a specific service function
|
|
25
|
+
#
|
|
26
|
+
# Valid parameters are:
|
|
27
|
+
# - function: the function to look up config version for
|
|
28
|
+
def config_version(*args)
|
|
29
|
+
|
|
30
|
+
params = extract_params(args)
|
|
31
|
+
|
|
32
|
+
# Execute the service call
|
|
33
|
+
result = api_get("/Common/getConfigVersion.json", build_api_params({
|
|
34
|
+
:function => params[:function]
|
|
35
|
+
}))
|
|
36
|
+
|
|
37
|
+
# Parse and return the response
|
|
38
|
+
::Freelancer::Models::ConfigVersion.parse(result, :shift => :"json-result")
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Returns the current Terms and Conditions from the site
|
|
43
|
+
def terms
|
|
44
|
+
|
|
45
|
+
result = api_get("/Common/getTerms.json")
|
|
46
|
+
json = JSONMapper::Parser.parse(result)
|
|
47
|
+
|
|
48
|
+
if !json.nil? && json.key?(:"json-result")
|
|
49
|
+
return json[:"json-result"][:terms]
|
|
50
|
+
end
|
|
51
|
+
return nil
|
|
52
|
+
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
module Freelancer
|
|
2
|
+
module API
|
|
3
|
+
module Employer
|
|
4
|
+
module InstanceMethods
|
|
5
|
+
|
|
6
|
+
# Retrieve a list of projects posted by a user. By default, this
|
|
7
|
+
# retrieves the projects posted by the currently authenticated user.
|
|
8
|
+
#
|
|
9
|
+
# Valid parameters are:
|
|
10
|
+
# - status: the status value to filter projects by (defaults to 2 (open and frozen))
|
|
11
|
+
# - user_id: the id of the user to list projects for (defaults to current user)
|
|
12
|
+
# - project_id: the project id to filter projects by
|
|
13
|
+
# - type: the project type to use ('active', 'trial' and 'draft' - defaults to 'active')
|
|
14
|
+
# - count: the number of results to return (defaults to 50)
|
|
15
|
+
# - page: the page to retrieve (defaults to 0)
|
|
16
|
+
def posted_projects(*args)
|
|
17
|
+
|
|
18
|
+
params = extract_params(args)
|
|
19
|
+
|
|
20
|
+
# Use a blank type value if type is set to 'active'
|
|
21
|
+
params[:type] = nil if params[:type] == "active"
|
|
22
|
+
|
|
23
|
+
# Execute the service call
|
|
24
|
+
result = api_get("/Employer/getPostedProjectList.json", build_api_params({
|
|
25
|
+
:status => params[:status],
|
|
26
|
+
:userid => params[:user_id],
|
|
27
|
+
:projectid => params[:project_id],
|
|
28
|
+
:projectoption => params[:type],
|
|
29
|
+
:count => params[:count],
|
|
30
|
+
:page => params[:page]
|
|
31
|
+
}))
|
|
32
|
+
|
|
33
|
+
# Parse and return the response
|
|
34
|
+
::Freelancer::Models::Project.parse_collection(result, :shift => [ :"json-result", :items ])
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Check if the current user is eligible to post trial projects
|
|
39
|
+
def eligible_for_trial_project
|
|
40
|
+
|
|
41
|
+
result = api_get("/Employer/eligibleForTrialProject.json")
|
|
42
|
+
::Freelancer::Models::Eligibility.parse(result, :shift => :"json-result")
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Returns true if the current user is eligible to post trial projects,
|
|
47
|
+
# false otherwise
|
|
48
|
+
def eligible_for_trial_project?
|
|
49
|
+
eligibility = eligible_for_trial_project
|
|
50
|
+
!eligibility.nil? && eligibility.eligible?
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module Freelancer
|
|
2
|
+
module API
|
|
3
|
+
module Freelancer
|
|
4
|
+
module InstanceMethods
|
|
5
|
+
|
|
6
|
+
# Get a list of all projects where the specified user have placed a bid.
|
|
7
|
+
# If no user id is specified, the current user is used.
|
|
8
|
+
#
|
|
9
|
+
# Valid parameters are:
|
|
10
|
+
# - status: the project status to filter the results by (defaults to 2 - open and frozen)
|
|
11
|
+
# - user_id: the id of the user to retrieve projects for
|
|
12
|
+
# - project_id: the project id to filter the results by
|
|
13
|
+
# - count: the number of results to return (defaults to 50)
|
|
14
|
+
# - page: the page to retrieve (defaults to 0)
|
|
15
|
+
def bid_projects(*args)
|
|
16
|
+
|
|
17
|
+
params = extract_params(args)
|
|
18
|
+
|
|
19
|
+
# Execute the service call
|
|
20
|
+
result = api_get("/Freelancer/getProjectListForPlacedBids.json", build_api_params({
|
|
21
|
+
:status => params[:status],
|
|
22
|
+
:userid => params[:user_id],
|
|
23
|
+
:projectid => params[:project_id],
|
|
24
|
+
:count => params[:count],
|
|
25
|
+
:page => params[:page]
|
|
26
|
+
}))
|
|
27
|
+
|
|
28
|
+
# Parse and return the response
|
|
29
|
+
::Freelancer::Models::Project.parse_collection(result, :shift => [ :"json-result", :items ])
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
module Freelancer
|
|
2
|
+
module API
|
|
3
|
+
module Job
|
|
4
|
+
module InstanceMethods
|
|
5
|
+
|
|
6
|
+
# Retrieve a list of available jobs
|
|
7
|
+
def jobs
|
|
8
|
+
|
|
9
|
+
result = api_get("/Job/getJobList.json")
|
|
10
|
+
::Freelancer::Models::Job.parse_collection(result, :shift => [ :"json-result", :items ])
|
|
11
|
+
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Retrieve a list of available job categories
|
|
15
|
+
def job_categories
|
|
16
|
+
|
|
17
|
+
result = api_get("/Job/getCategoryJobList.json")
|
|
18
|
+
::Freelancer::Models::JobCategory.parse_collection(result, :shift => [ :"json-result", :items, :category ])
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Retrieve a list of the current users jobs
|
|
23
|
+
def my_jobs
|
|
24
|
+
|
|
25
|
+
result = api_get("/Job/getMyJobList.json")
|
|
26
|
+
|
|
27
|
+
# We need to hack this to make the job id a sub element of the
|
|
28
|
+
# job node to make the mapping work properly.
|
|
29
|
+
json_result = JSONMapper::Parser.parse(result)
|
|
30
|
+
jobs = []
|
|
31
|
+
unless json_result.nil?
|
|
32
|
+
|
|
33
|
+
json_result[:"json-result"][:items][:job].each do |item|
|
|
34
|
+
jobs << { :id => item }
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
::Freelancer::Models::Job.parse_json_collection(jobs)
|
|
40
|
+
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
module Freelancer
|
|
2
|
+
module API
|
|
3
|
+
module Message
|
|
4
|
+
module InstanceMethods
|
|
5
|
+
|
|
6
|
+
# Return the private messages sent to the current user
|
|
7
|
+
#
|
|
8
|
+
# Valid parameters are:
|
|
9
|
+
# - project_id: the project id to filter messages by
|
|
10
|
+
# - count: the number of results to return (defaults to 50)
|
|
11
|
+
# - page: the page to retrieve (defaults to 0)
|
|
12
|
+
def messages(*args)
|
|
13
|
+
|
|
14
|
+
params = extract_params(args)
|
|
15
|
+
|
|
16
|
+
# Execute the service call
|
|
17
|
+
result = api_get("/Message/getInboxMessages.json", build_api_params({
|
|
18
|
+
:projectid => params[:project_id],
|
|
19
|
+
:count => params[:count],
|
|
20
|
+
:page => params[:page]
|
|
21
|
+
}))
|
|
22
|
+
|
|
23
|
+
# Parse and return the response
|
|
24
|
+
::Freelancer::Models::Message.parse_collection(result, :shift => [ :"json-result", :items ])
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Retrieve the messages the current user has sent to other users
|
|
29
|
+
#
|
|
30
|
+
# Valid parameters are:
|
|
31
|
+
# - count: the number of results to return (defaults to 50)
|
|
32
|
+
# - page: the page to retrieve (defaults to 0)
|
|
33
|
+
def sent_messages(*args)
|
|
34
|
+
|
|
35
|
+
params = extract_params(args)
|
|
36
|
+
|
|
37
|
+
# Execute the service call
|
|
38
|
+
result = api_get("/Message/getSentMessages.json", build_api_params({
|
|
39
|
+
:count => params[:count],
|
|
40
|
+
:page => params[:page]
|
|
41
|
+
}))
|
|
42
|
+
|
|
43
|
+
# Parse and return the response
|
|
44
|
+
::Freelancer::Models::Message.parse_collection(result, :shift => [ :"json-result", :items ])
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Retrieve the number of unread messages the current user has available
|
|
49
|
+
def unread_message_count
|
|
50
|
+
|
|
51
|
+
result = api_get("/Message/getUnreadCount.json")
|
|
52
|
+
json = JSONMapper::Parser.parse(result)
|
|
53
|
+
|
|
54
|
+
if !json.nil? && json.key?(:"json-result")
|
|
55
|
+
return json[:"json-result"][:unreadcount].to_i
|
|
56
|
+
end
|
|
57
|
+
return nil
|
|
58
|
+
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Retrieve the full thread of private messages sent between two users
|
|
62
|
+
# within a project.
|
|
63
|
+
#
|
|
64
|
+
# Valid parameters are:
|
|
65
|
+
# - project_id: the id of the project to load messages for
|
|
66
|
+
# - between_user_id: the id of the receiving user to load the thread for
|
|
67
|
+
# - count: the number of messages to retrieve (defaults to 50)
|
|
68
|
+
# - page: the page number to retrieve (defaults to 0)
|
|
69
|
+
def message_thread(*args)
|
|
70
|
+
|
|
71
|
+
params = extract_params(args)
|
|
72
|
+
|
|
73
|
+
# Execute the service call
|
|
74
|
+
result = api_get("/Message/loadMessageThread.json", build_api_params({
|
|
75
|
+
:projectid => params[:project_id],
|
|
76
|
+
:betweenuserid => params[:between_user_id],
|
|
77
|
+
:count => params[:count],
|
|
78
|
+
:page => params[:page]
|
|
79
|
+
}))
|
|
80
|
+
|
|
81
|
+
# Parse and return the response
|
|
82
|
+
::Freelancer::Models::Message.parse_collection(result, :shift => [ :"json-result", :items, :message ])
|
|
83
|
+
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module Freelancer
|
|
2
|
+
module API
|
|
3
|
+
module Notification
|
|
4
|
+
module InstanceMethods
|
|
5
|
+
|
|
6
|
+
# Get a list of available alerts for the current user
|
|
7
|
+
def notifications
|
|
8
|
+
|
|
9
|
+
result = api_get("/Notification/getNotification.json")
|
|
10
|
+
::Freelancer::Models::Notification.parse_collection(result, :shift => [ :"json-result", :items, :notification ])
|
|
11
|
+
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Return a list of available news items
|
|
15
|
+
def news
|
|
16
|
+
|
|
17
|
+
result = api_get("/Notification/getNews.json")
|
|
18
|
+
::Freelancer::Models::News.parse_collection(result, :shift => [ :"json-result", :items ])
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
module Freelancer
|
|
2
|
+
module API
|
|
3
|
+
module Payment
|
|
4
|
+
module InstanceMethods
|
|
5
|
+
|
|
6
|
+
# Retrieve the current users balance and the details of the last
|
|
7
|
+
# transaction.
|
|
8
|
+
def account_balance
|
|
9
|
+
|
|
10
|
+
result = api_get("/Payment/getAccountBalanceStatus.json")
|
|
11
|
+
::Freelancer::Models::Balance.parse(result, :shift => :"json-result")
|
|
12
|
+
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Retrieve a list of transactions for the current user
|
|
16
|
+
#
|
|
17
|
+
# Valid parameters are:
|
|
18
|
+
# - from: the from date/time to search by
|
|
19
|
+
# - to: the to date/time to search by
|
|
20
|
+
# - count: the number of results to return (defaults to 50)
|
|
21
|
+
# - page: the page to retrieve (defaults to 0)
|
|
22
|
+
def transactions(*args)
|
|
23
|
+
|
|
24
|
+
params = extract_params(args)
|
|
25
|
+
|
|
26
|
+
# If we have a from or to date, convert it to a string
|
|
27
|
+
if params.key?(:from) && params[:from].is_a?(Date)
|
|
28
|
+
params[:from] = params[:from].strftime("%Y-%m-%d %H:%M:%S")
|
|
29
|
+
end
|
|
30
|
+
if params.key?(:to) && params[:to].is_a?(Date)
|
|
31
|
+
params[:to] = params[:to].strftime("%Y-%m-%d %H:%M:%S")
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Execute the service call
|
|
35
|
+
result = api_get("/Payment/getAccountTransactionList.json", build_api_params({
|
|
36
|
+
:datefrom => params[:from],
|
|
37
|
+
:dateto => params[:to],
|
|
38
|
+
:count => params[:count],
|
|
39
|
+
:page => params[:page]
|
|
40
|
+
}))
|
|
41
|
+
|
|
42
|
+
# Parse and return the response
|
|
43
|
+
::Freelancer::Models::Transaction.parse_collection(result, :shift => [ :"json-result", :items ])
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Retrieve a list of milestones for the current user
|
|
48
|
+
#
|
|
49
|
+
# Valid parameters are:
|
|
50
|
+
# - type: the type of milestone (Incoming (default) or Outgoing)
|
|
51
|
+
# - count: the number of results to return (defaults to 50)
|
|
52
|
+
# - page: the page to retrieve (defaults to 0)
|
|
53
|
+
def account_milestones(*args)
|
|
54
|
+
|
|
55
|
+
params = extract_params(args)
|
|
56
|
+
|
|
57
|
+
# Execute the service call
|
|
58
|
+
result = api_get("/Payment/getAccountMilestoneList.json", build_api_params({
|
|
59
|
+
:type => params[:type],
|
|
60
|
+
:count => params[:count],
|
|
61
|
+
:page => params[:page]
|
|
62
|
+
}))
|
|
63
|
+
|
|
64
|
+
# Parse and return the response
|
|
65
|
+
::Freelancer::Models::Milestone.parse_collection(result, :shift => [ :"json-result", :items ])
|
|
66
|
+
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Retrieve a list of withdrawals for the current user
|
|
70
|
+
#
|
|
71
|
+
# Valid parameters are:
|
|
72
|
+
# - type: the type of withdrawal (Incoming (default) or Outgoing)
|
|
73
|
+
# - count: the number of results to return (defaults to 50)
|
|
74
|
+
# - page: the page to retrieve (defaults to 0)
|
|
75
|
+
def account_withdrawals(*args)
|
|
76
|
+
|
|
77
|
+
params = extract_params(args)
|
|
78
|
+
|
|
79
|
+
# Execute the service call
|
|
80
|
+
result = api_get("/Payment/getAccountWithdrawalList.json", build_api_params({
|
|
81
|
+
:type => params[:type],
|
|
82
|
+
:count => params[:count],
|
|
83
|
+
:page => params[:page]
|
|
84
|
+
}))
|
|
85
|
+
|
|
86
|
+
# Parse and return the response
|
|
87
|
+
::Freelancer::Models::Withdrawal.parse_collection(result, :shift => [ :"json-result", :items ])
|
|
88
|
+
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Retrieve the balance for the current user
|
|
92
|
+
def balance
|
|
93
|
+
|
|
94
|
+
result = api_get("/Payment/getBalance.json")
|
|
95
|
+
json = JSONMapper::Parser.parse(result)
|
|
96
|
+
|
|
97
|
+
if !json.nil? && json.key?(:"json-result")
|
|
98
|
+
return json[:"json-result"][:balance].to_f
|
|
99
|
+
end
|
|
100
|
+
return nil
|
|
101
|
+
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# Retrieve a list of available withdrawal fees
|
|
105
|
+
def withdrawal_fees
|
|
106
|
+
|
|
107
|
+
result = api_get("/Payment/getWithdrawalFees.json")
|
|
108
|
+
::Freelancer::Models::WithdrawalFee.parse_collection(result, :shift => [ :"json-result", :items, :fee ])
|
|
109
|
+
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Retrieve a list of projects that's available for transfers
|
|
113
|
+
def projects_for_transfer
|
|
114
|
+
|
|
115
|
+
result = api_get("/Payment/getProjectListForTransfer.json")
|
|
116
|
+
::Freelancer::Models::Project.parse_collection(result, :shift => [ :"json-result", :items, :project ])
|
|
117
|
+
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
end
|