Skip to content
Projects
Groups
Snippets
Help
Sign in / Register
Toggle navigation
Minds Backend - Engine
Project overview
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Locked Files
Issues
285
Merge Requests
39
CI / CD
Security & Compliance
Packages
Wiki
Snippets
Members
Collapse sidebar
Close sidebar
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Minds
Minds Backend - Engine
Commits
377724af
Commit
377724af
authored
38 minutes ago
by
Guy Thouret
Browse files
Options
Download
Boost Campaigns API Endpoint -
#1201
parent
c6e8329e
epic/boost-campaign
1 merge request
!417
WIP: Boost Campaigns
Pipeline
#102434744
passed with stages
in 6 minutes and 58 seconds
Changes
4
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
71 additions
and
7 deletions
+71
-7
Api/AbstractApi.php
View file @
377724af
...
...
@@ -139,9 +139,9 @@ abstract class AbstractApi implements Interfaces\Api
$this
->
sendError
(
500
);
}
protected
function
sendBadRequest
()
:
void
protected
function
sendBadRequest
(
string
$message
=
null
)
:
void
{
$this
->
sendError
(
400
);
$this
->
sendError
(
400
,
$message
);
}
protected
function
sendNotImplemented
()
:
void
...
...
@@ -154,9 +154,9 @@ abstract class AbstractApi implements Interfaces\Api
$this
->
sendError
(
304
);
}
protected
function
sendNotAcceptable
()
:
void
protected
function
sendNotAcceptable
(
string
$message
=
null
)
:
void
{
$this
->
sendError
(
406
);
$this
->
sendError
(
406
,
$message
);
}
protected
function
sendUnauthorised
()
:
void
...
...
This diff is collapsed.
Core/Boost/Network/ElasticRepository.php
View file @
377724af
...
...
@@ -199,6 +199,9 @@ class ElasticRepository
->
setImpressionsMet
(
$doc
[
'_source'
][
'impressions_met'
])
->
setBid
(
$doc
[
'_source'
][
'bid'
])
->
setBidType
(
$doc
[
'_source'
][
'bid_type'
]);
if
(
isset
(
$doc
[
'_source'
][
'boost_type'
]))
{
$boost
->
setBoostType
(
$doc
[
'_source'
][
'boost_type'
]);
}
$offset
=
$boost
->
getCreatedTimestamp
();
$response
[]
=
$boost
;
}
...
...
@@ -236,7 +239,7 @@ class ElasticRepository
'owner_guid'
=>
$boost
->
getOwnerGuid
(),
'rating'
=>
$boost
->
getRating
(),
'type'
=>
$boost
->
getType
(),
'
priority'
=>
(
bool
)
$boost
->
isPriority
(),
'
boost_type'
=>
$boost
->
getBoostType
(),
],
'doc_as_upsert'
=>
true
,
];
...
...
This diff is collapsed.
Core/Boost/Network/Manager.php
View file @
377724af
...
...
@@ -3,11 +3,14 @@
namespace
Minds\Core\Boost\Network
;
use
Minds\Common\Repository\Response
;
use
Minds\Core\Boost\Checksum
;
use
Minds\Core\Boost\Delegates\ValidateCampaignDatesDelegate
;
use
Minds\Core\Di\Di
;
use
Minds\Core\EntitiesBuilder
;
use
Minds\Core\GuidBuilder
;
use
Minds\Core\Events\Dispatcher
;
use
Minds\Entities\Entity
;
use
Minds\Entities\User
;
class
Manager
{
...
...
@@ -265,4 +268,63 @@ class Manager
return
$offchainBoosts
;
}
public
function
getCampaigns
(
array
$opts
)
{
$opts
=
array_merge
(
$opts
,
[
'owner_guid'
=>
$this
->
actor
->
getGUID
(),
'boost_type'
=>
Boost
::
BOOST_TYPE_CAMPAIGN
]);
return
$this
->
elasticRepository
->
getList
(
$opts
);
}
public
function
setActor
(
User
$user
)
:
self
{
$this
->
actor
=
$user
;
return
$this
;
}
public
function
createCampaign
(
Campaign
$campaign
)
:
Campaign
{
$campaign
=
$this
->
campaignUrnDelegate
->
onCreate
(
$campaign
);
$campaign
->
setOwner
(
$this
->
actor
);
if
(
!
$campaign
->
getOwnerGuid
())
{
throw
new
CampaignException
(
'Campaign should have an owner'
);
}
if
(
!
$campaign
->
getName
())
{
throw
new
CampaignException
(
'Campaign should have a name'
);
}
$validTypes
=
[
'newsfeed'
,
'content'
,
'banner'
,
'video'
];
if
(
!
in_array
(
$campaign
->
getType
(),
$validTypes
,
true
))
{
throw
new
CampaignException
(
'Invalid campaign type'
);
}
/** TODO: Checksum Verification */
$checksum
=
(
new
Checksum
())
->
setGuid
(
$campaign
->
getGuid
())
->
setEntity
(
$campaign
->
getEntityGuid
())
->
generate
();
if
(
!
$campaign
->
getChecksum
()
||
(
$campaign
->
getChecksum
()
!==
$checksum
))
{
throw
new
CampaignException
(
'Invalid checksum value'
);
}
$campaign
=
(
new
ValidateCampaignDatesDelegate
())
->
onCreate
(
$campaign
);
$this
->
sync
(
$campaign
);
return
$campaign
;
}
public
function
updateCampaign
(
Campaign
$campaign
)
:
Campaign
{
// TODO: Implement this...
return
$campaign
;
}
public
function
cancelCampaign
(
Campaign
$campaign
)
:
Campaign
{
// TODO: Implement this...
return
$campaign
;
}
}
This diff is collapsed.
Spec/Core/Boost/Network/ElasticRepositorySpec.php
View file @
377724af
...
...
@@ -56,8 +56,7 @@ class ElasticRepositorySpec extends ObjectBehavior
&&
$body
[
'doc'
][
'impressions'
]
===
10000
&&
$body
[
'doc'
][
'impressions_met'
]
===
10
&&
$body
[
'doc'
][
'owner_guid'
]
===
456
&&
$body
[
'doc'
][
'type'
]
===
'newsfeed'
&&
$body
[
'doc'
][
'priority'
]
===
false
;
&&
$body
[
'doc'
][
'type'
]
===
'newsfeed'
;
}))
->
shouldBeCalled
()
->
willReturn
(
true
);
...
...
This diff is collapsed.
Please
register
or
sign in
to comment