Skip to content

Commit 64bea02

Browse files
committed
Load user agent metadata from projects
1 parent eacbfde commit 64bea02

File tree

5 files changed

+21
-0
lines changed

5 files changed

+21
-0
lines changed

src/internal/iprojectreader.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class IProjectReader
3535
virtual const std::vector<std::shared_ptr<Broadcast>> &broadcasts() = 0;
3636
virtual const std::vector<std::shared_ptr<Monitor>> &monitors() = 0;
3737
virtual const std::vector<std::string> &extensions() = 0;
38+
virtual const std::string &userAgent() const = 0;
3839

3940
protected:
4041
virtual void printErr(const std::string &errStr) final { std::cerr << "Failed to read project: " << errStr << std::endl; }

src/internal/scratch3reader.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,13 @@ bool Scratch3Reader::load()
453453
auto extensions = project["extensions"];
454454
for (auto extension : extensions)
455455
m_extensions.push_back(extension);
456+
457+
// meta
458+
READER_STEP(step, "meta");
459+
auto meta = project["meta"];
460+
READER_STEP(step, "meta -> agent");
461+
m_userAgent = meta["agent"];
462+
456463
} catch (std::exception &e) {
457464
if (strcmp(step, "") == 0)
458465
printErr("could not parse project JSON file", e.what());
@@ -522,6 +529,11 @@ const std::vector<std::string> &Scratch3Reader::extensions()
522529
return m_extensions;
523530
}
524531

532+
const std::string &Scratch3Reader::userAgent() const
533+
{
534+
return m_userAgent;
535+
}
536+
525537
void Scratch3Reader::read()
526538
{
527539
if (fileName().empty())

src/internal/scratch3reader.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class Scratch3Reader : public IProjectReader
2121
const std::vector<std::shared_ptr<Broadcast>> &broadcasts() override;
2222
const std::vector<std::shared_ptr<Monitor>> &monitors() override;
2323
const std::vector<std::string> &extensions() override;
24+
const std::string &userAgent() const override;
2425

2526
private:
2627
void read();
@@ -30,6 +31,7 @@ class Scratch3Reader : public IProjectReader
3031
std::vector<std::shared_ptr<Broadcast>> m_broadcasts;
3132
std::vector<std::shared_ptr<Monitor>> m_monitors;
3233
std::vector<std::string> m_extensions;
34+
std::string m_userAgent;
3335
};
3436

3537
} // namespace libscratchcpp

src/project_p.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ bool ProjectPrivate::load()
129129
engine->setBroadcasts(reader->broadcasts());
130130
engine->setMonitors(reader->monitors());
131131
engine->setExtensions(reader->extensions());
132+
engine->setUserAgent(reader->userAgent());
132133
engine->compile();
133134
return true;
134135
}

test/load_project/load_project_test.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ TEST(LoadProjectTest, EmptyProject)
7272
backdrop->dataSize()),
7373
0);
7474

75+
ASSERT_EQ(engine->userAgent(), "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Scratux/1.4.1 Chrome/76.0.3809.146 Electron/6.1.7 Safari/537.36");
76+
7577
i++;
7678
}
7779
}
@@ -632,6 +634,9 @@ TEST(LoadProjectTest, LoadTestProject)
632634
ASSERT_EQ(monitor->y(), 280);
633635
ASSERT_TRUE(monitor->visible());
634636

637+
// User agent
638+
ASSERT_TRUE(engine->userAgent().empty());
639+
635640
i++;
636641
}
637642
}

0 commit comments

Comments
 (0)